## 數據決定程序結構
恰當的數據視圖實際上決定了程序的結構。 我們常常可以通過重新組織內部數據來使程序變得小而美。
發明家悖論:更一般性的問題也許更容易解決。(有時候吧)
程序員在節省空間方面無計可施時,將自己從代碼中解脫出來, 退回起點并集中心力研究數據,常常能有奇效。數據的表示形式是程序設計的根本。
下面是退回起點進行思考時的幾條原則:
* 使用數組重新編寫重復代碼。冗長的相似代碼常常可以使用最簡單的數據結構—— 數組來更好地表述。
* 封裝復雜結構。當需要非常復雜的數據結構時,使用抽象術語進行定義, 并將操作表示為類。
* 盡可能使用高級工具。超文本,名字-值對,電子表格,數據庫, 編程語言等都是特定問題領域中的強大的工具。
* 從數據得出程序的結構。在動手編寫代碼之前,優秀的程序員會徹底理解輸入, 輸出和中間數據結構,并圍繞這些結構創建程序。
提到的書籍:Polya的《How to Solve it》,中文書《怎樣解題》; Kernighan和Plauger的《Elements of Programming Style》;Fred Brooks的《人月神話》 Steve McConnell的《代碼大全》;《Rapid Development》; 《Software Project Survival Guide》