恰當(dāng)?shù)臄?shù)據(jù)視圖實(shí)際上決定了程序的結(jié)構(gòu)。 我們常??梢酝ㄟ^重新組織內(nèi)部數(shù)據(jù)來(lái)使程序變得小而美。
發(fā)明家悖論:更一般性的問題也許更容易解決。(有時(shí)候吧)
程序員在節(jié)省空間方面無(wú)計(jì)可施時(shí),將自己從代碼中解脫出來(lái), 退回起點(diǎn)并集中心力研究數(shù)據(jù),常常能有奇效。數(shù)據(jù)的表示形式是程序設(shè)計(jì)的根本。
下面是退回起點(diǎn)進(jìn)行思考時(shí)的幾條原則:
使用數(shù)組重新編寫重復(fù)代碼。冗長(zhǎng)的相似代碼常常可以使用最簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)—— 數(shù)組來(lái)更好地表述。
封裝復(fù)雜結(jié)構(gòu)。當(dāng)需要非常復(fù)雜的數(shù)據(jù)結(jié)構(gòu)時(shí),使用抽象術(shù)語(yǔ)進(jìn)行定義, 并將操作表示為類。
盡可能使用高級(jí)工具。超文本,名字-值對(duì),電子表格,數(shù)據(jù)庫(kù), 編程語(yǔ)言等都是特定問題領(lǐng)域中的強(qiáng)大的工具。
提到的書籍:Polya的《How to Solve it》,中文書《怎樣解題》; Kernighan和Plauger的《Elements of Programming Style》;Fred Brooks的《人月神話》 Steve McConnell的《代碼大全》;《Rapid Development》; 《Software Project Survival Guide》
更多建議: