編寫高質量代碼(十二)思想為源
這一部分主要說的是程序員思想上應該具有怎樣的覺悟吧,主要有兩方面:
- 編碼的風格和習慣;
- 編碼背後的想法;
兩者其實互為表裏。
編碼的風格和習慣
這一部分主要是講下作為軟件工程師,合格的,應具有怎樣的良好習慣和風格。
合理選擇單元測試
結論:單元測試不是萬能的。
單元測試必須測試的三種場景:正常場景,邊界場景,異常場景。
但由於
- 人員假設場景進行測試;
- 代碼整合錯誤的不可避免性;
- 場景有些難以復現
等原因,單元測試不能完全覆蓋測試工作。
合理添加註釋
結論:註釋應與代碼意圖吻合且簡潔明了。
合理的註釋場景:
- 法律版權信息;
- 解釋意圖的註釋
//Attempt to prevent deadlocks - see DBCP - 272 DriverManager.getDrivers();
- 警示性註釋(參考源碼中的一些註釋)
- TODO註釋
//todo:finish this part after ...
相反的,請盡量減少不必要的註釋,或者冗余的、過時的註釋。
遵循一定的原則
請直接參考在下另一篇文章:面向對象的幾個重要原則
編碼背後的想法
其實就是一句話:看待自己的身份為工程師而不是碼農。
編寫高質量代碼(十二)思想為源
相關推薦
編寫高質量代碼(十二)思想為源
http .get 整合 html 版權 而不是 覺悟 自己 測試的 這一部分主要說的是程序員思想上應該具有怎樣的覺悟吧,主要有兩方面: 編碼的風格和習慣; 編碼背後的想法; 兩者其實互為表裏。 編碼的風格和習慣 這一部分主要是講下作為軟件工程師,合格的,應具有怎樣的良
編寫高質量代碼:改善Java的151個建議四(類、對象、方法)31-51
jvm 分配 sys fin -- pac 重構 oid 只有一個 31.接口中不要存在實現代碼 接口中不能存在實現代碼(雖然可以實現,但是如果把實現代碼寫在接口中,那麽接口就綁定了可能變化的因素,這就導致實現不在文檔和可靠,是隨時可能被拋棄,被修改,被重構的) pa
編寫高質量代碼:改善Python程序的91個建議(高清版)PDF
設計 pdf -o 內容 編寫 shadow 圖片 優化 工作 編寫高質量代碼:改善Python程序的91個建議(高清版)PDF百度網盤鏈接:https://pan.baidu.com/s/1rPdBouMjuAhOm1HZtRLrVQ 提取碼:smh0 復制這段內容後打開
轉載----編寫高質量代碼:改善Java程序的151個建議(第1章:JAVA開發中通用的方法和準則___建議1~5)
ase 重載方法 name 原理 .get tin stat eas 容易 閱讀目錄 建議1:不要在常量和變量中出現易混淆的字母 建議2:莫讓常量蛻變成變量 建議3:三元操作符的類型務必一致 建議4:避免帶有變長參數的方法重載 建議5:別讓null值和空值威
轉載---編寫高質量代碼:改善Java程序的151個建議(第2章:基本類型___建議26~30)
cli math mem 時間 三次 計算 一個 name pub 閱讀目錄 建議26:提防包裝類型的null值 建議27:謹慎包裝類型的大小比較 建議28:優先使用整型池 建議29:優先選擇基本類型 建議30:不要隨便設置隨機種子 回到頂部 建議26:提防包裝類
轉載---編寫高質量代碼:改善Java程序的151個建議(第3章:類、對象及方法___建議47~51)
閱讀 aer 集中 記事本 哈希算法 讀者 堆內存 ref 類型判斷 閱讀目錄 建議47:在equals中使用getClass進行類型判斷 建議48:覆寫equals方法必須覆寫hashCode方法 建議49:推薦覆寫toString方法 建議50:使用package
轉載---編寫高質量代碼:改善Java程序的151個建議(第3章:類、對象及方法___建議41~46)
equals 業務 父親 face 使用 訪問 his () 而是 閱讀目錄 建議41:讓多重繼承成為現實 建議42:讓工具類不可實例化 建議43:避免對象的淺拷貝 建議44:推薦使用序列化對象的拷貝 建議45:覆寫equals方法時不要識別不出自己 建議46:equ
轉載--編寫高質量代碼:改善Java程序的151個建議(第5章:數組和集合___建議65~69)
ceo next foreach遍歷 通過 當前 prev 支持 變量 信息 閱讀目錄 建議65:避開基本類型數組轉換列表陷阱 建議66:asList方法產生的List的對象不可更改 建議67:不同的列表選擇不同的遍歷算法 建議68:頻繁插入和刪除時使用LinkLis
編寫高質量代碼—javascript的分層—base層
eight page alert span -1 bsp 方法 event 透明 base層的功能是為common層和page層提供接口。封裝不同瀏覽器下javaScript的差異,提供統一的接口 1.用getNextNode 函數封裝IE和Firefox的差異:
【轉】編寫高質量代碼改善C#程序的157個建議——建議7: 將0值作為枚舉的默認值
enum 整型 沒有 spa day rda alt 編寫 它的 建議7: 將0值作為枚舉的默認值 允許使用的枚舉類型有byte、sbyte、short、ushort、int、uint、long和ulong。應該始終將0值作為枚舉類型的默認值。不過,這樣做不是因為允許使
【轉】編寫高質量代碼改善C#程序的157個建議——建議8: 避免給枚舉類型的元素提供顯式的值
bsp clas val () spa true tel str none 建議8: 避免給枚舉類型的元素提供顯式的值 一般情況下,沒有必要給枚舉類型的元素提供顯式的值。創建枚舉的理由之一,就是為了代替使用實際的數值。不正確地為枚舉類型的元素設定顯式的值,會帶來意想不到
【轉】編寫高質量代碼改善C#程序的157個建議——建議10: 創建對象時需要考慮是否實現比較器
form compareto 最簡 復雜 args 就是 改善 object base 建議10: 創建對象時需要考慮是否實現比較器 有對象的地方就會存在比較,在.NET的世界中也一樣。舉個最簡單的例子,在UI中,有一個10個人的Salary列表。根據排序的需要,列表要
【轉】編寫高質量代碼改善C#程序的157個建議——建議18:foreach不能代替for
aries 不同 針對 一次 help 停止 pre ica tof 建議18:foreach不能代替for 上一個建議中提到了foreach的兩個優點:語法更簡單,默認調用Dispose方法,所有我們強烈建議在實際的代碼編寫中更多的使用foreach。但是,該建議也有
【轉】編寫高質量代碼改善C#程序的157個建議——建議17:多數情況下使用foreach進行循環遍歷
else enume spa 開閉 next str items tro var 建議17:多數情況下使用foreach進行循環遍歷 由於本建議涉及集合的遍歷,所以在開始講解本建議之前,我們不妨來設想一下如何對結合進行遍歷。假設存在一個數組,其遍歷模式可以采用依據索引來
【轉】編寫高質量代碼改善C#程序的157個建議——建議16:元素數量可變的情況下不應使用數組
system sed 維數 優化 高質量 watch 擴展方法 calling 64 bit 建議16:元素數量可變的情況下不應使用數組 在C#中,數組一旦被創建,長度就不能改變。如果我們需要一個動態且可變長度的集合,就應該使用ArrayList或List<T&g
【轉】編寫高質量代碼改善C#程序的157個建議——建議19:使用更有效的對象和集合初始化
color 有效 void ons ron public 類型 通過 esc 建議19:使用更有效的對象和集合初始化 依賴於屬性和FCL 3.5之後的語法規則,現在我們有了更加簡潔有效的對象和集合初始化機制:對象和集合初始化設定項。 對象初始化: class
【轉】編寫高質量代碼改善C#程序的157個建議——建議28:理解延遲求值和主動求值之間的區別
ons ati rgs 理解 問題 效率 sele 而不是 reac 建議28:理解延遲求值和主動求值之間的區別 要理解延遲求值(lazy evaluation)和主動求值(eager evaluation),先看個例子: List<in
【轉】編寫高質量代碼改善C#程序的157個建議——建議30:使用LINQ取代集合中的比較器和叠代器
main tor 命名空間 span line 繼承 new each 類型 建議30:使用LINQ取代集合中的比較器和叠代器 LINQ提供了類似於SQL的語法來實現遍歷、篩選與投影集合的功能。 static void Main(string[] ar
【轉】編寫高質量代碼改善C#程序的157個建議——建議27:在查詢中使用Lambda表達式
with 代碼 esc red 工作 一行 derby 命名空間 any 建議27:在查詢中使用Lambda表達式 LINQ實際上是基於擴展方法和Lambda表達式的。任何LINQ查詢都能通過擴展方法的方式來代替。 var personWithCompanyList
【轉】編寫高質量代碼改善C#程序的157個建議——建議31:在LINQ查詢中避免不必要的叠代
public line linq查詢 接收 string 第一個元素 style 屬性 但是 建議31:在LINQ查詢中避免不必要的叠代 無論是SQL查詢還是LINQ查詢,搜索到結果立刻返回總比搜索完所有的結果再將結果返回的效率要高。 示例代碼: class