中国a级毛片免费观看,啦啦啦资源视频在线完整免费高清,真人性囗交69视频,日本毛X片免费视频观看视频

rexian

咨詢電話:023-6276-4481

熱門文章

聯(lián)系方式

電 話:023-6276-4481

郵箱:broiling@qq.com

地址:重慶市南岸區(qū)亞太商谷6幢25-2

當(dāng)前位置:網(wǎng)站首頁 > 技術(shù)文章 > 軟件項目質(zhì)量保證:編碼規(guī)范

軟件項目質(zhì)量保證:編碼規(guī)范

編輯:Ethan 發(fā)表時間:2017-11-20 13:26:48
Ethan

作為軟件開發(fā)者,我們可以開發(fā)低等級的軟件,但不能開發(fā)低質(zhì)量的軟件。所以,如何實(shí)施質(zhì)量保證,是我們關(guān)注的主要問題之一,而編碼規(guī)范則是實(shí)施質(zhì)量保證的第一步。

編碼規(guī)范已經(jīng)成為一個老生常談的問題,幾乎每個項目,每家公司都會定義自己的編碼規(guī)范。但在真正實(shí)施時,卻在有意或無意地違背編碼規(guī)范。程序員,不喜歡改變自己的編程習(xí)慣。加之,管理者對質(zhì)量控制不足,導(dǎo)致編碼規(guī)范往往形同虛設(shè)。有些人會認(rèn)為:遵守編碼規(guī)范不能給項目帶來利益,也不能讓客戶看到我們?yōu)榇烁冻龅呐?,其完全是團(tuán)隊自發(fā)的行為,沒有必要做硬性的要求。還有些人有更好的理由:編碼規(guī)范會破壞創(chuàng)造性和程序質(zhì)量。我認(rèn)為,編碼規(guī)范,在軟件構(gòu)件以及項目管理中,甚至是個人成長方面,都發(fā)揮著重要的作用,好的編碼規(guī)范是提高我們代碼質(zhì)量的最有效的工具之一。

一、編碼規(guī)范的作用

  • 提高可讀性 “任何一個傻瓜都能寫出計算機(jī)可以理解的代碼,唯有寫出人類容易理解的代碼,才是優(yōu)先的程序員?!本幋a規(guī)范,幫助我們寫出人類容易理解的代碼,它為我們提供了最基本的模板,良好的編碼風(fēng)格,使代碼具有一定的描述性,可以通過名字來獲取一些需要IDE才能得到的提示,如可訪問性、繼承基類等。

  • 統(tǒng)一全局,促進(jìn)團(tuán)隊協(xié)作 開發(fā)軟件是一個團(tuán)隊活動,而不是個人的英雄主義。編碼規(guī)范,要求團(tuán)隊成員遵守這一統(tǒng)一的全局決策,這樣成員之間可以輕松地閱讀對方的代碼,所有成員正以一種清晰而一致的風(fēng)格進(jìn)行編碼。而且,開發(fā)人員也可以集中精力關(guān)注他們真正應(yīng)該關(guān)注的問題——自身代碼的業(yè)務(wù)邏輯,與需求的契合度等局部問題。

  • 有助于知識傳遞,加快工作交接 風(fēng)格的相似性,能讓開發(fā)人員更迅速,更容易理解一些陌生的代碼,更快速地理解別人的代碼。因?yàn)椋湍愕拇a風(fēng)格是一樣的,你沒有必要對他的一些個性化風(fēng)格進(jìn)行揣測。這樣的好處是開發(fā)人員可以很快的接手項目組其他成員的工作,快速完成工作交接。

  • 減少名字增生,降低維護(hù)成本 在沒有規(guī)范的情況下,和容易為同一類型的實(shí)例起不同的名字。對于以后維護(hù)這些代碼程序員來說會產(chǎn)生疑惑。

  • 強(qiáng)調(diào)變量之間的關(guān)系,降低缺陷引人的機(jī)會 命名可以表示一定的邏輯關(guān)系,是開發(fā)人員在使用時保持警惕,從而一定程度上減少缺陷被引人的機(jī)會。

  • 提高程序員的個人能力 不可否認(rèn),每個程序員都應(yīng)該養(yǎng)成良好的編碼習(xí)慣,而編碼規(guī)范無疑是教材之一。從一個程序員的代碼本身能看出很多東西。所以,即便是為了自身發(fā)展,作為程序員也沒有理由抵制這種規(guī)則的存在。你可能沒有認(rèn)識到,我們正默默地得益于編碼規(guī)范。

二、編碼規(guī)范不是“物神”

在高質(zhì)量的軟件中,你可以看到“架構(gòu)的概念完整性”與“底層實(shí)現(xiàn)”之間的關(guān)系?!皩?shí)現(xiàn)”與“架構(gòu)”必須是清晰一致的,這種內(nèi)在的、固有的一致性,需要編碼規(guī)范來維系。如果沒有這種統(tǒng)一的約定,那么我們做出的東西可能會充斥著各種不同的風(fēng)格,顯得混亂且難以理解。團(tuán)隊成員之間可能很不理解彼此之間的想法,甚至是相互抨擊。各種編碼風(fēng)格上的差異會不斷擴(kuò)大,而代碼質(zhì)量則不斷下降。而且,團(tuán)隊成員會花費(fèi)時間在理解不同編程風(fēng)格之間的差異,而沒有專注于真正應(yīng)該解決的問題。這樣的時間消耗是難以接受的。所以,在每一個高質(zhì)量代碼的背后,一定存在著一份優(yōu)秀的編碼規(guī)范。

然而,也必須認(rèn)識到編碼規(guī)范不是“物神”。編碼規(guī)范僅僅是一個全局性質(zhì)的規(guī)范,它只不過是一種編程約定,不能解決更深層次的問題。就像一篇格式漂亮但內(nèi)容糟糕的論文不能被發(fā)表一樣,你不能僅靠一個規(guī)范來擺脫軟件作坊。而且,在編碼規(guī)范中不宜包含那些冗長的開發(fā)技巧。我認(rèn)為,對于代碼是最佳實(shí)踐應(yīng)該是代碼審查所要解決的,應(yīng)該避免將編碼規(guī)范寫成一部關(guān)于重構(gòu)的教科書。

三、編寫編碼規(guī)范的一些建議

以下是我對定義編碼規(guī)范的一些建議:

  • 求同存異 不要妄圖改變組織的編碼習(xí)慣,除非有絕對合理的理由,否則還是以民主為主,畢竟你沒有權(quán)利要求所有人都沿用你的編碼習(xí)慣。

  • 定義編碼規(guī)范越早越好 也早使用編碼規(guī)范,也早享受其帶來的好處。

  • 將規(guī)范分為強(qiáng)制部分和推薦部分 求同存異的具體實(shí)現(xiàn)。將最基本的規(guī)范列放在強(qiáng)制部分,所有成員必須遵守;將好的但不重要的習(xí)慣列在推薦部分,開發(fā)人員可以根據(jù)自己習(xí)慣選擇是否使用。

  • 編碼規(guī)范不要太長 太長的文檔沒人看,所有人都一樣,除了禮品單和工資單沒人愿意看長的東西,所以編碼規(guī)范必須精煉,最好是只有2~3頁,讓開發(fā)人員可以打印出來隨時查看。

  • 必須是約定俗成的 規(guī)范必須是行業(yè)中約定俗成的,不要有什么個性化發(fā)揮。

四、編碼規(guī)范參考

我本人不太推薦制定過細(xì)的編碼規(guī)范。制定編碼規(guī)范是為了增強(qiáng)代碼的可讀性,畢竟代碼的結(jié)構(gòu)才是主要關(guān)注問題,所以我的編碼規(guī)范還是比較簡短的。里面只是對可能會破壞編碼風(fēng)格的行為進(jìn)行約束,而沒有細(xì)化到“空行”甚至“空格”的級別。

編碼規(guī)范

一 命名空間

<公司名稱>.(<產(chǎn)品名稱>|<相關(guān)技術(shù)>)[.<用途>] [.<子命名空間>]

二 代碼風(fēng)格

  • 花括號“{}”不允許省略,即使只有一段代碼。

  • 不允許省略訪問修飾符。

  • 類型默認(rèn)是密封的。

  • 不允許公開字段。

  • 使用括號“()”來強(qiáng)調(diào)運(yùn)算符優(yōu)先級。

三 命名規(guī)范

(一) 類、結(jié)構(gòu)和接口的命名

  • 使用名詞或名詞短語。

  • 使用Pascal方式。

  • 在接口名稱前加上前綴“I”。

  • 考慮在派生類末尾使用基類的名字。

  • 如果該類僅僅為了實(shí)現(xiàn)某個接口,那么請保持其與接口命名的統(tǒng)一。

  • 如果從.NET 框架中存在的類型派生的類型,應(yīng)該遵循以下規(guī)范:

 基類 派生類
 System.Attribute 要給自定義的特性添加“Attribute”后綴
 System.Delegate 要給用于事件處理的委托添加“EventHandler”后綴


要給用于事件處理之外的那些委托添加“Callback”后綴

不要給委托添加“Delegate”后綴

 System.EventArgs 要添加“EventArgs”后綴
 System.Exception 要添加“Exception”后綴
 IDictionary,IDictionary<T,V> 要添加“Dictionary”后綴
 IEnumerable,ICollection,IList,


IEnumerable,ICollection,IList

 添加“Collection”后綴
 System.IO.Stream 添加“Stream”后綴
 CodeAccessPermission,IPermission 添加“Permission”后綴

(二) 成員的命名

 成員 大小寫 規(guī)范
 方法 Pascal(公開)、Camel(私有) 用動詞或動詞短語命名
 屬性 Pascal 用名詞、名詞短語或形容詞來命名


集合屬性應(yīng)該使用復(fù)數(shù)形式,而不是添加后綴

用“Is”、“Can”、“Has”等表示布爾屬性

可以用屬性的類型名來命名屬性

 事件 Pascal 使用動詞或動詞短語來命名事件


用現(xiàn)在時和過去時來區(qū)分前置和后置事件

 字段 Camel(私有) 要用名詞、名詞短語或形容詞來命名


不要加任何前綴

(三) 參數(shù)的命名

  • Camel風(fēng)格。

  • 要使用left和right來命名重載的二元操作符的參數(shù)——如果參數(shù)沒有具體的含義。

  • 要使用value來命名重載的一元操作符的參數(shù)——如果參數(shù)沒有具體的含義。

  • 不要在參數(shù)中使用數(shù)字編號。

  • 盡量使用描述性的名字命名泛型類型參數(shù),并在前面使用“T”前綴。

(四) 常量、變量的命名

  • 常量——所有單詞大寫并用“_”分隔。

  • 局部變量——Camel風(fēng)格。

(五) 枚舉的命名

  • Pascal風(fēng)格。

  • 使用名詞的復(fù)數(shù)形式來命名標(biāo)記枚舉。

  • 不要添加“Enum”或“Flag”后綴。

  • 不要給枚舉類型值的名字加前綴。

(六) 資源的命名

  • Pascal風(fēng)格。

  • 僅使用字母、數(shù)字和下劃線。

  • 在命名異常消息的資源時,資源標(biāo)識符應(yīng)該是異常類型名加上簡短的異常標(biāo)識符。

(七) 數(shù)據(jù)庫命名

  • 表——“模塊名_表名”。

  • 字段——bool類型用“Is”、“Can”、“Has”等表示;日期類型命名必須包含“Date”;時間類型必須包含“Time”。

  • 存儲過程——使用“proc_”前綴。

  • 視圖——使用“view_”前綴。

  • 觸發(fā)器——使用“trig_”前綴。

(八) XML命名

節(jié)點(diǎn)名稱使用Pascal風(fēng)格,屬性名稱使用Camel風(fēng)格。

四 注釋

  • 對接口和復(fù)雜代碼塊必須進(jìn)行注釋。

  • 修改代碼時保持注釋同步。

  • 未完成的功能使用TODO標(biāo)記。

  • 修改他人代碼時要先注釋對方代碼,并寫明修改原因,不允許隨便刪除他人代碼。

  • 發(fā)布前移除無用注釋。

五 異常處理

  • 原則上只允許顯示拋出InvalidOperationException、ArgumentException、ArgumentNullException和ArgumentOutOfRangeException四種異常類型。

  • 在自定義異常時,必須使用VS提供的代碼模板來創(chuàng)建自定義異常。