好代码、坏代码之一
好代碼、壞代碼之一
1.命名很重要,讓代碼告訴你它自己
命名到底有多重要呢?
重要到這幾乎是很多軟件項目成功或者失敗的“罪魁禍首”,究其原因,代碼不光支撐了0和1在計算機系統中運行的業務邏輯,同時也是開發者進行交流與研究的標準語言。沒有意義或者有歧義的命名,就像兩個等待交流的人,面對了一堆火星文無從下口,讓交流變成災難,也就導致很多問題。
同時,好的命名是自說明的,讓代碼告訴開發者“我是誰,我做什么,我怎么做”。當然,除了靜態式的必要的注釋說明之外,動態式的代碼也可以包含傳遞信息的作用,讓代碼告訴你它自己,因為代碼是“活的代碼”。
例如,以某個緩存容器為例,泛型參數明確了容器的Key和Value的關系,其中的方法也基本明確了作為緩存容器所具有的方法:Add、Set、Clear、Refresh和IsExist,而TryGetValue是Try-Parse模式的應用體現。其中的變量container表示了容器載體;expiration表示了過期時間;config表示了容器的配置信息。
public?class?AtCache<TKey,?TValue>
{
????public?int?Count{ }
????public?List<TValue>?Items{ }
????public?int?Expiration?{ }
?
????public?void?Add(TKey?key,?TValue?value){ }
????public?void?Set(TKey?key,?TValue?value,?int?expiry){}
????public?bool?TryGetValue(TKey?key,?out?TValue?value){}
????public?void?Clear(){ }
????public?bool?IsExist(TKey?key){ }
????protected?void?Refresh(){ }
?
????private?ReaderWriterLockSlim?rwLocker?=?new?ReaderWriterLockSlim();
????private?Dictionary<TKey,?CacheItem<TKey,?TValue>>?container?=?new?Dictionary<TKey,?CacheItem<TKey,?TValue>>();
????private?int?expiration;
????private?DateTime?lastRefresh?=?DateTime.Now;
????private?IAtCacheConfiguration?config;
????private?List<TValue>?items;
}
總體來說,讓代碼告訴它自己,是好代碼的體現,而一堆沒有意義的代碼堆積是讓人無法接受和容忍的壞代碼。
2.遵守編碼規范
編碼規范,就是編碼最佳實踐,是前輩在編碼這件事上的積累和總結,是智慧的延續和工業的實踐。在軟件產業日益蓬勃的今天,軟件工業在于如何更有效率地進行生產這件事兒上,有了巨大的進步和積累,編碼規范正是如此。例如可以隨意列出很多的規范:
·? 命名規范。
·? 避免行數過多的方法。
·? 代碼縮進。
·? 異常規范。
·? 設計規范。
·? 注釋規范。
·? 文件的組織規范。
·? 配置規范。
·? 發布與部署規范。
·? 測試規范。
·? SQL規范。
在以上每個領域都有N條“法規”,以最佳實踐的條款被總結出來,每個條款都滲透著很多前人的智慧。同時,編碼規范的應用是有選擇和場合的,不同的軟件公司和產品,對編碼規范都有一定的理解和取舍。
但是,沒有規范的編碼,一定是有問題、潛伏著壞代碼的幽靈。
3.遵守命名規則
命名已經被反復強調了,遵守編碼規范首當其沖就是對于命名規范的遵守,對于命名規則,通常可選擇的體系主要有:
·? Pascal Casing,混合使用大小寫字母,每個單詞的首字母必須是大寫,例如FirstName。
·? Camel Casing,混合使用大小寫字母,第一個單詞的首字母是小寫,其他單詞的首字母是大寫,例如firstName。
·? 匈牙利命名法,通過屬性、類型和對象描述混合來表示,例如frmMainWindow,表示一個窗體實例的命名。
不過,對于不同的語言體系而言,一般有著不同的命名規范和體系,很多不同的語言對于命名規范的選擇也有差別。以C#語言為例,最基本的命名規則包括:
·? 以Pascal Casing風格定義命名空間、類及其成員、接口、方法、事件、枚舉等。
·? 以Camel Casing規范定義參數、私有成員。
·? 避免使用匈牙利命名法。
·? 以Attribute作為特性的后綴。
·? 以Delegate作為委托的后綴。
·? 以Exception作為異常的后綴。
當然,規范還有很多,而這種積累來自于平時對于代碼的理解和運用。
?
本文節選自《你必須知道的.NET(第2版)》一書
圖書詳細信息:http://www.cnblogs.com/broadview/archive/2011/08/09/2132689.html
?
轉載于:https://www.cnblogs.com/broadview/archive/2011/08/11/2135211.html
總結
- 上一篇: 使用ExtJs创建新的UI控件(转)
- 下一篇: Nagios 网卡流量监控