關(guān)于 代碼重構(gòu)和測(cè)試
當(dāng)需要為程序添加一個(gè)功能讳推,而代碼的現(xiàn)有結(jié)構(gòu)無法很方便地達(dá)到目的艾船,那就先重構(gòu)那個(gè)程序葵腹,使功能的添加比較容易進(jìn)行,然后再添加那個(gè)功能屿岂。
重構(gòu)前践宴,先檢查自己是否有一個(gè)可以依靠的測(cè)試機(jī)制。即有較完善的自測(cè)規(guī)范爷怀、測(cè)試用例和覆蓋率較高的單元測(cè)試阻肩。
重構(gòu)的每個(gè)步伐要盡量小,如果犯下錯(cuò)誤运授,容易發(fā)現(xiàn)烤惊,必要時(shí)也便于roll back代碼。
注意代碼的可讀性吁朦。
重構(gòu):對(duì)軟件內(nèi)部結(jié)構(gòu)的一種調(diào)整,目的是在不改變軟件外在表現(xiàn)的前提下柒室,提高代碼的可讀性,可理解程度逗宜,降低維護(hù)和修改成本雄右。
數(shù)不過三,三則重構(gòu)纺讲。當(dāng)項(xiàng)目中多次出現(xiàn)重復(fù)代碼時(shí)就要考慮怎么提取和重構(gòu)這些模塊了擂仍。
接口的設(shè)計(jì)要考慮清楚,要兼顧穩(wěn)定和擴(kuò)展性刻诊,不要過早發(fā)布接口防楷。謹(jǐn)慎修改代碼的各種規(guī)范,使重構(gòu)的過程更加順暢则涯,不要進(jìn)行到了一半再折回來修改以前的代碼复局。
當(dāng)需要撰寫注釋時(shí)冲簿,先嘗試重構(gòu)代碼使注釋顯得多余。
確保所有測(cè)試都完全自動(dòng)化亿昏,讓它們檢查自己的測(cè)試結(jié)果峦剔。簡而言之,即編寫盡可能完善的單元測(cè)試角钩。
一套測(cè)試就是一個(gè)強(qiáng)大的bug檢測(cè)器吝沫,能夠大大縮減查找bug所需要的時(shí)間。
頻繁地進(jìn)行測(cè)試递礼。每次測(cè)試請(qǐng)把測(cè)試也考慮進(jìn)去--每天至少執(zhí)行測(cè)試一次惨险。
每當(dāng)收到bug報(bào)告,可以考慮先寫一個(gè)單元測(cè)試來暴露這個(gè)bug脊髓。
編寫未臻完善的測(cè)試并實(shí)際運(yùn)行辫愉,好過對(duì)完美測(cè)試的無盡等待。
考慮可能出錯(cuò)的邊界條件将硝,把測(cè)試火力集中在那兒恭朗。實(shí)際編碼中,經(jīng)常有80%的代碼用于處理占所有測(cè)試用例20%的邊界條件依疼。
在可預(yù)期的可能出錯(cuò)的地方痰腮,檢查是否拋出了預(yù)期的異常。
不要因?yàn)闇y(cè)試無法捕獲所有bug不就寫測(cè)試律罢,因?yàn)闇y(cè)試的確可以捕捉到到大多數(shù)bug膀值。
關(guān)于程序員的學(xué)習(xí)技能
-
一個(gè)程序員在工作中用到的基本技術(shù):
- 單元測(cè)試
- 功能測(cè)試
- 源碼管理
- 持續(xù)集成
- MVC框架
- ...
剛開始的時(shí)候需要認(rèn)真的一點(diǎn)點(diǎn)學(xué),確實(shí)比較慢弟翘,但是學(xué)的越多虫腋,站的就越高,眼界就越寬稀余,在學(xué)習(xí)編程的道路上就像有了加速度,越跑越快
關(guān)于需求分析的步驟
1)什么人會(huì)使用這個(gè)系統(tǒng)趋翻?
2)不同的人將會(huì)使用這個(gè)系統(tǒng)的什么功能睛琳?
3)還有哪些不確定或不具體的需求點(diǎn)?
4)哪些需求對(duì)技術(shù)提出了怎樣的要求踏烙?
5)系統(tǒng)的大致架構(gòu)應(yīng)該如何考慮师骗?
具體分析詳述見 張傳波先生的博客
一個(gè)優(yōu)秀的設(shè)計(jì)應(yīng)該具備的特點(diǎn)
1)優(yōu)秀的設(shè)計(jì)都是需求驅(qū)動(dòng)
的,不熟悉需求就做出來的設(shè)計(jì)是不靠譜的.
2)優(yōu)秀的設(shè)計(jì)應(yīng)該是當(dāng)前團(tuán)隊(duì)能理解能實(shí)現(xiàn)的
讨惩,太超前的設(shè)計(jì)項(xiàng)目團(tuán)隊(duì)做不出來辟癌,這個(gè)設(shè)計(jì)只能是擺設(shè).
3)優(yōu)秀的設(shè)計(jì)應(yīng)充分考慮當(dāng)前各種限制條件
,適當(dāng)做出平衡荐捻,能保證達(dá)成項(xiàng)目的目標(biāo).
4)優(yōu)秀的設(shè)計(jì)能盡量降低項(xiàng)目的整體工作量
黍少,讓整個(gè)項(xiàng)目更加可控.
每次開需評(píng)需要捫心自問的兩個(gè)問題
1)這個(gè)項(xiàng)目的主要需求寡夹?
2)這些需求,設(shè)計(jì)上是如何考慮實(shí)現(xiàn)的厂置?