If you have to redesign after you've imiplemented that means your inital design is flawed. This has nothing to do with optimization. Optimization can only occur after the entire project is written because only at that point will you be able to determine the affects. If you attempt to optimize during coding you might very well find later that it has an adverse affect.I disagree. Why spend time implementing it one way, then spend even more time redesigning it afterwards? It's better to do it the right way from the start.