你的代碼完成了嗎?(之二)——可維護性和規范性

二. 可維護性和規范性


對于代碼來說,這兩個屬性其實是緊密相連的。什么樣的代碼最好維護呢?當然是規范的代碼了。再差的規范也要比沒有規范強得多。

之前做對日項目的時候,日本人對于“規范”這個東西(他們稱之為開發規約)要求的極為嚴格。一方面會制定嚴格的規范來供大家遵守,其中不僅僅會包括對命名、代碼格式的規定,甚至還包括了每個控件之間的距離,代碼的注釋的格式,代碼中的注釋要達到什么樣的比例,每種代碼結構(循環、選擇等等)要怎么寫,什么時候應該加空行等等,一般他們的代碼規范都至少會有10頁左右的內容。另一方面,他們還制定了比較完備的流程來保證規范的執行,代碼開發完畢,首先是要進行代碼Review,然后是進行單體測試。這兩個過程并非是在某些國內項目中,就是走個過場,在對日的項目中甚至還制定了標準,每千行代碼中必須Review出多少個問題,必須要測試出多少個Bug,都是有數量限制的,如果達不到標準,除非有充分的理由,否則這個過程是無法通過的。

經過了這么多嚴格的過程之后,對日項目想要達到的目的就是“所有代碼看起來像是一個人寫的”。盡管這有些理想化,畢竟每個人處理問題的思路還是會有些不同,但僅就代碼來說,的確看起來干干凈凈,就像是同一個人編寫的一樣。自然在維護的時候,看起來至少不會有太嚴重的問題。

相反,在某些國內項目中,對于代碼規范的重視程度明顯不夠,很多代碼中連最基本的縮進和命名問題都沒有解決好,更別提每個方法的長度,類和接口的設計等問題了。有時,不得不對那樣的代碼進行修改的時候,我都會先把規范整理一遍,然后再開始修改。但是,就像破窗子理論一樣,有時心情不爽的時候,根本就不會做修改,甚至還會加入更多的不符合規范的東西。(那種情況是極少的了,哈哈。而且我不會署名啊,偷偷地閃!)

由此看來,新編寫的代碼是否遵從了代碼規范會給以后的維護和修改工作帶來很大的影響。

可維護性體現在什么地方呢?我覺得就在于對現有的程序進行修改的時候,能否快速定位到問題所在,而且在讀代碼的時候,很容易就能理解代碼所要完成的工作,那樣才能夠更快速有效地對代碼進行修改。

在此必然會涉及到注釋的問題,關于這個東西的討論已經有很多了,我的觀點是,如果能夠用較好的命名和清晰的代碼說明的問題,就可以不寫注釋了。相反,如果僅僅看代碼無法理解的東西,尤其是業務上的知識,或者是業務流程上的一些特殊的要求,就非常有必要寫上注釋,否則以后維護的人就不明白其所以然了。而對于對日項目中規定代碼中的注釋率要有多少,就有些過分了。

對于自身來說,想要編寫規范和可維護的代碼,其實也不是很難的事兒,主要在于態度。記得當初我給公司的新人培訓的時候,曾經說過:“我們應該編寫什么樣的代碼呢?我覺得有一個原則,那就是別人在以后修改、維護你寫的代碼的時候,不會一邊改,一邊罵人,他***,這是誰寫的鬼代碼,讓我有打人的沖動。”呵呵,玩笑而已,但還是能說明一些問題的吧。

?

轉載于:https://www.cnblogs.com/houbowei/archive/2010/03/24/1693939.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379306.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379306.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言feof函數_使用示例的C語言中的feof()函數

c語言feof函數C語言中的feof()函數 (feof() function in C) Prototype: 原型: int feof(FILE* filename);Parameters: 參數: FILE *filenameReturn type: int(0 or 1) 返回類型: int(0或1) Use of function: 使用功能: In C l…

5種經典排序算法,每個程序員都應該知道

我的新書《Android App開發入門與實戰》已于2020年8月由人民郵電出版社出版,歡迎購買。點擊進入詳情 有沒有想過當您應用從低到高、從高到低或按字母順序等過濾器時,亞馬遜或任何其他電子商務網站中的產品如何排序?排序算法對于此類網站起著至…

匯編語言-016(SCASB 、STOSB 、LODSD 、數組中的取值、二維數組操作、冒泡排序和二分查找、CMPSW )

1: SCASB : (字節)將AL的值與EDI尋址的一個字比較。進行在一個字符串檢索特定的字符 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data alpha BYTE "ABCDEFGH",0.code main PROCmov edi,OFFSET alpha ;EDI指向字符串mov …

編寫一個匯編語言程序,將字符串Hello World中的全部小寫字母轉換為大寫字母,并存放回原地址處。

編寫一個匯編語言程序,將字符串"Hello World"中的全部小寫字母轉換為大寫字母,并存放回原地址處。 P176 4.10 編程思路:首先DATA段中,定義string存放字符串"Hello World",LEN為字符串string長度…

在Python中使用OpenCV(CV2)對圖像進行邊緣檢測

Modules used: 使用的模塊: For this, we will use the opencv-python module which provides us various functions to work on images. 為此,我們將使用opencv-python模塊,該模塊為我們提供了處理圖像的各種功能。 Download opencv-pytho…

需保留小數點兩位,但同時不要小數點后多余0的前后臺代碼實現

今天碰到一個需求。關于小數點的處理,看起來非常簡單的事情,卻花了一定時間做了一些試驗。最后簡單總結一下,以便備忘。 需求簡化一下表達是這樣的: 有A、B兩列,A/BC。這3列在數據庫中都以decimal存放。 在應用中&…

匯編語言-017(SCASW 、STRUCT 、STRUCT_ALLPOINTS 、STRUCT_ALIGN 、SYSTEMTIME、UNION 、 STRUCTTEST )

1:SCASW : 在wordArray中掃描16位數值0100h,將匹配元素的偏移量復制到EAX .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data wordArray WORD 0500h,0400h,0300h,0200h,0100h.code main PROCmov ax,0100hmov edi,OFFSET wordArraymov …

【筆記】正則表達式[1]

元字符 符號 意思 示范 詳例 \d 任意一個數字 \d{2}-\d{8} 22-12345678 * *前的符號重復任意次數 次數可以為零 \d* 222222222222... 或 2 \s 任意的空白符 全半角空格,tab,換行符 \bhi\b\s\bLucy\b hi Lucy 和*用法相似 次數>1 \d …

編寫一個匯編語言程序,完成以下要求。從BUF單元處定義有10個帶符號字數據:-1,3,24,94,62,72,55,0,-48,99,試找出他們中的最大值和平均值,并以此分別存放至該數據區的后兩個單元

編寫一個匯編語言程序,完成以下要求。從BUF單元處定義有10個帶符號字數據:-1,3,24,94,62,72,55,0,-48,99,試找出他們中的最大值和平均值,并以此分別存放至該數據區的后兩個單元中(假設這10個數的和值不超過16位范圍) P176 4.12 編程思路&am…

prototype 的ajax

原文:http://www.prototypejs.org/learn/introduction-to-ajax]翻 譯:www.ruby-china.cn 站長]Prototype框架提供了非常容易和有意思的方法處理Ajax的調用,同時它也是瀏 覽器安全的 。除了簡單的請求外,這個模塊(指pro…

匯編語言-018(FLD 、FST、FSTP、FCHS、FABS 、浮點運算符、浮點比較 )

1:FLD : FPU(浮點處理器)的加載浮點數到堆棧指令 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data array REAL8 10 DUP(?) dblOne REAL8 234.56 dblTwo REAL8 10.1.code main PROCfld array …

mcq 隊列_MCQ | 基礎知識 免費和開源軟件| 套裝4

mcq 隊列Q1. What do you call the technique of storing encrypted user passwords in Linux? Q1。 您如何稱呼在Linux中存儲加密的用戶密碼的技術? System Password Management 系統密碼管理 Shadow Password 影子密碼 Encrypted Password 加密密碼 None of the…

將AX寄存器中的16位數據分成4組(從高到低),每組4位,然后把這4組數作為數當中的低4位分別放在AL,BL,CL,DL中。

將AX寄存器中的16位數據分成4組(從高到低),每組4位,然后把這4組數作為數當中的低4位分別放在AL,BL,CL,DL中。 P176 4.14 編程思路:首先用BX、DX存放AX,即原AX原BX原DX&…

一個很不錯的wp企業站模板

http://zjuhpp.com/chinese-localization-of-business-wordpress-theme-devster.html轉載于:https://www.cnblogs.com/i-kyle/archive/2012/09/13/2683817.html

著名的自由軟件圣戰- “KDE/QT .VS. Gnome/Gtk”

在 Unix 的圖形界面一向是以 MIT 的 X Window 系統為標準, 可是在商業應用上有兩大流派,一派是以 Sun 公司領導的 Openlook 陣營,一派是 IBM/HP 領導的OSF (Open Software Foundation) 的 Motif, 雙方經過多年競爭之后&#xff0c…

匯編語言-019(匯編程序與c\c++相互調用)

1:在C程序中使用__asm塊插入匯編代碼程序(不能用LENGTHOF與SIZEOF運算符,而是LENGTH和SIZE) struct Package {long originZip; //4long destinationzip;//4float shippingPrice; //4 };int main(int argcount,char* args[]) {c…

kotlin 判斷數字_Kotlin程序檢查數字是偶數還是奇數

kotlin 判斷數字Given a number N, we have to check whether it is EVEN or ODD. 給定數字N ,我們必須檢查它是偶數還是奇數 。 Example: 例: Input:N 13Output:"ODD"Input:N 24Output:"EVEN"程序在Kotlin檢查偶數或奇數 (Prog…

微機原理與接口技術(第2版)考點

第一章 1,微型計算機的特點: 功能強、可靠性高價格低廉系統設計靈活,適應性強體積小,重量輕,維護方便 2,微型計算機的硬件組成 微處理器內存儲器I/O接口電路I/O設備系統總線 3,微機的工作過…

搜狗面試筆試一面二面全經歷

09.25 華科西十二教,搜狗招聘筆試: C搜索引擎研發。同時有威盛、烽火兩家筆試,就沒有去。 09.26 華科校內某酒店,搜狗一面: 筆試做的不錯,客觀題錯了3.5(20個),后兩個算法…

UltraEdit語法高亮

語法加亮分支位于配置-編輯器顯示之下,允許用戶配置語法加亮選項:語法加亮可以識別預定詞語,并用不同顏色顯示它們。該功能對于程序員來說尤其有用,并且對那些想用不同顏色顯示文檔中詞語的用戶也非常有用。提供二十種…