編程規(guī)范的目的是讓代碼更容易閱讀,更容易維護(hù),”代碼是寫(xiě)給人看的”這個(gè)觀點(diǎn)應(yīng)該是寫(xiě)代碼的基本原則。
1、命名規(guī)則:最好變量命名長(zhǎng)度為6-15個(gè)字母之間,明確地表達(dá)出每個(gè)變量的意思,不要使用歧義單詞或者生僻單詞,方法命名遵循同樣的規(guī)則,最好用動(dòng)詞表示,譬如Set開(kāi)頭表示設(shè)置、Match表示匹配等
2、方法長(zhǎng)度:盡量使用短的方法體,一個(gè)方法體里面的代碼行最好不要超過(guò)80行,超過(guò)就應(yīng)該考慮把里面獨(dú)立的內(nèi)容提取放到另一個(gè)方法里面(也就是所謂的重構(gòu))
3、參數(shù)個(gè)數(shù):參數(shù)個(gè)數(shù)不要太多,如果超過(guò)7個(gè)參數(shù),可以考慮使用對(duì)象進(jìn)行封裝進(jìn)行傳遞
4、邏輯判斷:一個(gè)方法里面不要嵌套太多的邏輯判斷,超過(guò)三層(理論上五層)的判斷就可以考慮把其中的一部分獨(dú)立成新方法調(diào)用
5、生命周期:盡量縮短變量的存活周期,不是必須使用盡量不要使用全局變量
6、變量跨度:變量聲明定義開(kāi)始到第一次使用該變量的代碼行之間的行距盡可能短
7、字面常量:使用某類型的某個(gè)值作為參數(shù)(譬如:int status=1,string returnType=”list”等),盡量不要使用這樣的參數(shù),原因有二:字面常量不易于閱讀;字面常量不方便修改,解決方案為定義全局可用的全局常量(命名參照1)
8、字符串拼接:需要通過(guò)循環(huán)進(jìn)行字符串拼接的,盡量使用StringBuilder變量來(lái)拼接,而不是使用string的”+”進(jìn)行拼接,對(duì)于較長(zhǎng)的字符串可以使用String.Format()方法進(jìn)行拼接, string.contact()是”+”的完整寫(xiě)法
9、垃圾回收:在操作非托管對(duì)象(如流操作)的時(shí)候盡量使用using(),譬如 using (StringWriter sw = new StringWriter(sb)){},不論在過(guò)程中是否發(fā)生異常,對(duì)象sw會(huì)在改程序段的最后自動(dòng)調(diào)用sw.close()方法,這樣能防止漏寫(xiě),讓程序自動(dòng)回收處理。
10、異常處理:不要用TryCatch來(lái)保證數(shù)據(jù)的轉(zhuǎn)換是否正確(譬如把Convert.ToInt32(“aaa”)這樣的錯(cuò)誤語(yǔ)句放到 TryCatch里捕獲),因?yàn)椴东@異常是非常耗費(fèi)性能的,將會(huì)是正常程序耗時(shí)的倍數(shù)級(jí)。每個(gè)主方法都應(yīng)該用TryCatch包起來(lái),被調(diào)用的方法出現(xiàn)異常不及時(shí)處理則不要用TryCatch包起來(lái)。
11、關(guān)于注釋:注釋不是程序的必要組成部分,好的命名可以省去不必要的注釋,對(duì)于難懂的邏輯方法才有必要注釋。
12、關(guān)于裝箱:對(duì)于已知類型的轉(zhuǎn)換最好顯示轉(zhuǎn)換,否者CLR會(huì)自動(dòng)給你進(jìn)行轉(zhuǎn)換,譬如 int tempNum=5;string tempStr=”aaa”+tempNum.ToString() 要比string tempStr=”aaa”+tempNum好,在傳參過(guò)程中裝箱最為頻繁,最好的解決方法是使用泛型。
13、代碼格式:普通的縮進(jìn)可以考慮vs自帶的快捷功能,快捷操作為 Ctrl+E+D,對(duì)于一行代碼的長(zhǎng)度最好是不要超過(guò)80個(gè)英文字母(普通A4紙的寬度)
更多信息請(qǐng)查看IT技術(shù)專欄