走向设计(To Consider Design)

recently i always consider design:
1.keeping it simple,keeping it clean
2.coding for modularity
3.when working Bottom-Up,then working Top-Down.
4.abstract and high-cohesion,low-coupling
5.open one’s eyes for contract
today,when i’m reading the art of unix programming and get it:
Perfection in design is attained not when there is nothing more to add, but when there is nothing more to remove.

The followings from 《the art of unix programming 》-Modularity

There are two ways of constructing a software design. One is to make it so simple that there are obviously no deficiencies; the other is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.
1.Modularity:Keeping It Clean,Keeping It Simple.
2.Hatton himself suggests as a rule of thumb a 2x conversion between logical and physical lines, suggesting an optimal range of 400–800 physical lines.
3.Perfection in design is attained not when there is nothing more to add, but when there is nothing more to remove
4.Modularity is expressed in good code, but it primarily comes from good design.
5.A good API makes sense and is understandable without looking at the implementation behind it.The classic test is this: Try to describe it to another programmer over the phone. If you fail, it is very probably too complex, and poorly designed.
6.Coding for Modularity