日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代码命名,代码里的命名规则:错误的和正确的对比 命名方法总结 “自我描述的源代码”用代码表达出你的思想,让其他人通过代码能明白你的意图。...

發布時間:2023/12/10 编程问答 38 豆豆

http://www.aqee.net/express-names-in-code-bad-vs-clean/

編程初學者總是把大量的時間用在學習編程語言,語法,技巧和編程工具的使用上。他們認為,如果掌握了這些技術技巧,他們就能成為不錯的程序員。然而,計算機編程的目的并不是關于精通這些技術、工具的,它是關于針對特定領域里的特定問題創造出相應的解決方案,程序員通過相互合作來實現這些。所以,很重要的一點,你需要能精確的用代碼表達出你的思想,讓其他人通過代碼能明白你的意圖。

讓我們先看看編程大師Robert C. Martin的杰作《Clean Code》里的一句話:

“注釋的目的是為了彌補代碼自身在表達上的不足?!?/p>

這句話可以簡單的理解為如果你的代碼需要注釋,最有可能是你的代碼寫的很爛。同樣,如果在沒有注釋的情況下你無法用代碼完整的表達你對一個問題或一個算法的思路,那這就是一個失敗的信號。最終,這意味著你需要用注釋來闡明一部分的思想,而這部分在代碼里是看不出來的。好的代碼能夠讓任何人在不需要任何注釋的情況下看懂。好的編碼風格能將所有有助于理解這個問題的所有信息都蘊含在代碼里。

在編程理論中,有一個概念叫做“自我描述的源代碼”。對于一段代碼,一種常見的自我描述機制是遵循某種非嚴格定義的變量、方法、對象命名規則。這樣做的主要作用就是使源代碼更易讀易懂。所以,也就更容易維護和擴展。

這篇文章里,我將舉出一些例子,說明什么是“不好的代碼”,什么是“清楚的代碼

命名要能揭示意圖

如何命名,在編程中這永遠都是個老大難問題。有些程序員喜歡簡化、縮短或加密名稱,使得只有他們自己能懂。下面讓我們看一些例子:

不好的代碼

int d; // 天數 int ds; int dsm; int faid;

“d”可以表示任何東西。作者使用注釋來表明他的意圖,卻沒有選擇用代碼來表示。而“faid”很容易導致誤解為ID。

清楚的代碼

int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays;

命名時避免含義引起誤解的信息

錯誤的信息比沒有信息更糟糕。有些程序員喜歡“隱藏”一些重要信息,有時候他們也會寫出一些讓人誤解的代碼。

不好的代碼

Customer[] customerList; Table theTable;

變量“customerList”其實不是個list。它是一個普通的array(或客戶集合)。除此之外,“theTable”是一個Table類型的對象(你可以用IDE容易的發現它的類型),“the”這個詞是個不必要的干擾。

清楚的代碼

Customer[] customers; Table customers;

命名要有合適的長度

在高級編程語言中,變量名的長度通常不太限制。變量名幾乎可以任何長度。雖然如此,這也可能使代碼變得鬧心。

不好的代碼

var theCustomersListWithAllCustomersIncludedWithoutFilter; var list;

好的名稱應該只含有必要的詞匯來表達一個概念。任何不必要的字詞都會使名稱變長、難于理解。名稱越短越好,前提是能在上下文中表達完整的意思(下訂單這個場景中,“customersInOrder” 要比 “list” 好)。

清楚的代碼

var allCustomers; var customersInOrder;

命名時編碼規范保持一致,讓規范幫助理解代碼

所有的編程技術(語言)都有自己的“風格”,叫做編碼規范。程序員應該在寫代碼時遵循這些習慣,因為其他的程序員也知道這些,并按這種風格編寫。下面我們看一個沒有明顯規范的不好的代碼例子。下面的這段代碼沒有遵循很好的已知的“編碼規范”(比如PascalCase, camelCase, Hungarian規范)。更糟糕的是,這有一個毫無意義的bool變量“change”。這是個動詞(用來描述動作),但這里的bool值是來描述一個狀態,所以,這里應該用一個形容詞更合適。

不好的代碼

const int maxcount = 1 bool change = true public interface Repository private string NAME public class personaddress void getallorders()

一段代碼,只看它的一部分,你就應該直接明白它是什么類型,只需要看它的命名方法。

例如:你看到了“_name”,你就能知道它是個私有變量。你應該在任何地方都利用這種表示方法,沒有例外情況。

清楚的代碼

const int MAXCOUNT = 1 bool isChanged = true public interface IRepository private string _name public class PersonAddress void GetAllOrders()

命名時相同的概念用相同的詞表達

定義概念很難。在軟件開發過程中,很多時間都花在分析業務場景、思考正確的定義里面所有的元素。這些概念永遠都是讓程序員頭痛的事。

不好的代碼

//1. void LoadSingleData() void FetchDataFiltered() Void GetAllData() //2. void SetDataToView(); void SetObjectValue(int value)

首先:

代碼的作者試圖表達“get the data”的概念,他使用了多個詞“load”,“fetch”,“get”。一個概念只用一個詞表達就行了(在同一個場景中)。

第二:

“set”這個詞用在了2個概念里:第一是“data loading to view”,第二個是“setting a value of object”。這是兩個不同的概念,你應該使用不同的詞。

清楚的代碼

//1. void GetSingleData() void GetDataFiltered() Void GetAllData() //2. void LoadDataToView(); void SetObjectValue(int value)

命名時使用跟業務領域相關的詞

程序員寫的所有代碼都是跟業務領域場景邏輯相連的。為了讓所有關系到這個問題的人都能更好的理解,程序中應該使用在領域環境中有意義的名稱。

不好的代碼

public class EntitiesRelation { Entity o1; Entity o2; }

當在編寫針對某個領域的代碼時,你應該始終考慮使用領域有聯系的名稱。在將來,當另外一個人(不僅是程序員,也許是測試人員)接觸你的代碼時,他能輕松的理解這個業務領域里你的代碼是什么意思(不需要業務邏輯知識)。你首先考慮的應該是業務問題,之后才是如何解決。

清楚的代碼

public class ProductWithCategory { Entity product; Entity category; }

命名時使用在特定環境里有意義的詞

代碼里名稱都有自己的上下文。上下文對于理解一個名稱非常重要,因為它能提供額外的信息。讓我們來看看一個典型的“地址”上下文:

不好的代碼

string addressCity; string addressHomeNumber; string addressPostCode;

在大多數情況中,“Post Code”通常是地址的一部分,很顯然,郵政編碼不能單獨使用(除非你是在開發一個專門處理郵編的應用)。所以,沒有必要在“PostCode”的前面加上“address”。更重要的,所以的這些信息都有一個上下文容環境,一個命名空間,一個類。

在面向對象編程中,這里應該用一個“Address”類來表達這個地址信息。

清楚的代碼

class Address { string city; string homeNumber; string postCode; }

命名方法總結

概述起來,做為一個程序員,你應該:

  • 命名是來表達概念的
  • 注意名稱長度,名稱里只該含有必要的詞語
  • 編碼規范有助于理解代碼,你應該使用它
  • 名稱不要混用
  • 名稱在業務領域里要有意義,在上下文里有意義

?

匈牙利命名法對程序員初學MFC比QT類庫更有阻礙的原因之一

轉載于:https://www.cnblogs.com/svennee/p/4759338.html

總結

以上是生活随笔為你收集整理的代码命名,代码里的命名规则:错误的和正确的对比 命名方法总结 “自我描述的源代码”用代码表达出你的思想,让其他人通过代码能明白你的意图。...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 蝌蚪网在线视频 | 国产女人在线观看 | 日日摸日日添日日碰9学生露脸 | 美女视频三区 | 黄色一级片在线免费观看 | 日韩动漫av | 涩婷婷| 国产精品久久一区二区三区动 | 免费观看nba乐趣影院 | 久久精品韩国 | 中文精品视频 | 久操久热| 亚洲国产www| 国产偷人妻精品一区 | 国产精品视频一区二区三区不卡 | 91红桃视频 | 欧美老女人视频 | 蜜桃视频在线观看一区二区 | 欧美一级片网址 | 精品在线视频播放 | 精品在线视频免费 | 爽爽影院在线免费观看 | 玖玖精品国产 | 日韩亚洲欧美一区 | 91精品国产综合久久久密臀九色 | 天天干天天拍 | 网站免费视频www | 小sao货大ji巴cao死你 | 日韩一级大片 | 亚洲永久精品一区二区 | 五月少妇| 久久久夜色精品 | 久久久线视频 10 | 日本久热 | 人妻无码一区二区三区久久 | 久久久久久久久久久久 | 成人在线免费观看网站 | 看黄免费网站 | 久操福利视频 | 免费毛片基地 | 九九精品影院 | 亚洲精品xxxxx | а√天堂www在线天堂小说 | 国产亚洲美女精品久久久2020 | 亚洲成人欧美 | 欧美你懂得 | 鸥美毛片 | 国产粉嫩呻吟一区二区三区 | 少妇视频在线观看 | 热精品| www.黄色在线观看 | 8x国产一区二区三区精品推荐 | 黄色特级一级片 | 一级a毛片 | 亚洲大片免费看 | 国产精品久久久久久久久免费相片 | 国产短视频一区 | 岛国av大片| 第一毛片 | 成人91免费视频 | 96日本xxxxxⅹxxx70 | av黄在线观看 | 国产精品成人在线观看 | 永久免费汤不热视频 | 一级黄色片在线播放 | 伊朗做爰xxxⅹ性视频 | 欧美日韩一区在线播放 | 三上悠亚一区二区在线观看 | 国产视频二 | 亚洲av无码乱码在线观看性色 | xxxx久久| 欧美日韩中文字幕一区二区三区 | 成人福利视频在线观看 | 亚洲成人一区二区在线观看 | 另类小说亚洲色图 | 国产一区二区三区免费看 | 蜜桃av噜噜一区二区三区麻豆 | 激情婷婷综合 | 国产精品无码成人片 | 久久视频一区二区三区 | 修女也疯狂3免费观看完整版 | 五月婷婷爱爱 | 高h视频在线观看 | 亚洲综合av一区二区三区 | 夜夜操狠狠操 | 欧美激情视频一区二区三区在线播放 | 黄色网址中文字幕 | 一区二区三区免费视频观看 | 无码国产色欲xxxxx视频 | 大陆女明星乱淫合集 | 啪啪网站免费观看 | 福利在线电影 | 无遮挡aaaaa大片免费看 | 高清无码视频直接看 | 德国经典free性复古xxxx | 国产又粗又猛又黄视频 | 亚洲免费一区 | 毛片链接 | 中文字幕有码视频 |