畢設全是編程。最開始編了一個有一千多行的Main函數(shù),處理Word文檔里的數(shù)學公式。里面還用了不少goto語句。功能雖然實現(xiàn)了,心里面感到很可恥。改用面向?qū)ο蟮慕M織結構編,劃分了一些類,每個類明顯簡潔了不少。
為了解決goto,又把遞歸玩得越來越溜了。終于2300多行的代碼變成了不到900行。
在這個過程中,越發(fā)覺得,編寫好代碼,把代碼編的像一首詩而不是一坨屎,簡直是一種享受。我修改代碼的過程中,發(fā)現(xiàn)了幾本書非常好。比如《凌波微步 開發(fā)案例集》還有我手頭的這本《代碼整潔之道》。
做個讀書筆記吧。
函數(shù)名應該傳遞信息,讀你代碼的人也是程序員,所以盡量使用可查找、CS專業(yè)的詞語,其次才是領域?qū)S忻~。不要怕長名稱。千萬不要用一些不明所以,自作聰明的函數(shù)名,變量名。
類名要是名詞,簡短為好。
函數(shù)盡量短小,多少算短小呢——20行封頂。
一個函數(shù)只做一件事情,做好這件事情。如何辨別是否函數(shù)是做了一件事情呢,看這個函數(shù)是否還能再拆出一個函數(shù)。
每個函數(shù)中的語句應該保證在同一個抽象的層級上。用“自頂向下”的模式編程。如“要想怎樣1,就要怎樣2,要想怎樣2,就要怎樣3……”
函數(shù)的參數(shù)越少越好,0參比1參好,2參勉強接受,再多就不好了。如果函數(shù)看來需要兩個、三個或三個以上的參數(shù),就說明其中一些參數(shù)應該封裝為類了
函數(shù)名與參數(shù)間最好應該形成一種良好的“動詞/名詞對應”,例如write(name).
抽離Try...Catch塊,因為錯誤處理本身就是一件事,
由于函數(shù)足夠小,故break,return,continue均可以出現(xiàn)
有一點一定要注意,沒人能做到一開始就寫出這樣的程序
永遠不要忘記,真正的目標在于講好系統(tǒng)的故事
記住,所有的注釋都是迫不得已
好的注釋有:
1.法律信息
2.提供信息的注釋
3.對意圖的解釋
4.闡釋
5.警示信息
6.ToDo注釋
壞注釋有:
1.喃喃自語
2.多余的注釋(無意義)
3.誤導性注釋
4.循規(guī)式注釋
5.日志式注釋
6.位置標記
如//Actions//////////////////////////
7.括號后的注釋
如{
}//while
8.署名
9.注釋掉的代碼
10.非本地信息
11.信息過多代碼整潔關乎溝通,而溝通是專業(yè)開發(fā)者的頭等大事
實體變量應該在類的頂部聲明
代碼在垂直位置上的區(qū)隔、靠近、引用與函數(shù)的毗鄰數(shù)據(jù)抽象
我們不愿意把暴露數(shù)據(jù)的細節(jié),更愿意以抽象的形態(tài)表述數(shù)據(jù)。這并非使用借口/賦值器就可以萬事大吉的
面向過程式代碼難以添加新的函數(shù),因為必須修改所有類德墨忒爾定律
類C的方法f只能調(diào)用以下對象的方法
C
由f創(chuàng)建的對象
作為參數(shù)傳給f的對象
由C的實體變量持有的對象
數(shù)據(jù)結構類的形式
1.數(shù)據(jù)傳遞對象
{
public a;
public b;
}
2."bean"結構
{
private a;
private b;
public class get{}
.......
}