c++ 命名规则 private_【译】代码中如何写出更有意义的命名
作為一名開發人員,在編碼過程中,你總會花很多時間來思考如何正確命名。因為名稱無處不在,你需要考慮文件名、類名、方法名和變量名。
雖然我們需要花費很多時間,但是為了更好的命名還是值得的。本文我將向你介紹幾個能夠幫助你編寫優質命名的簡單規則。命名這件事本身也是一門藝術。
使用顯示意圖的名稱
名稱直接顯示意圖這件事說起來容易做起來難。你是否經常遇到一些難以判斷其用途的名稱?
一個好的經驗法則是:如果一個名稱需要注釋,那么它本身就是不能說明意圖的。
這個代碼片段就演示了一個不能顯示意圖的變量命名。
<?phpprivate $s; // Time in seconds變量$s什么也說明不了。它沒有任何時間流逝的感覺,我們最好是能選擇一個名稱指定測量內容和測量單位。下面這些變量名看起來就好很多。
<?phpprivate $days_since_creation; private $elapsed_time_in_seconds; private $seconds_since_last_modified;選擇一個可以顯示意圖的名稱能使一段代碼更容易理解,從而降低維護成本。雖然選擇的過程會花費一些時間,但這是為了節省更多的時間。我們來一起看看下面這個例子。
<?phpfunction getList() {$list1 = [];foreach ($this->the_list as $x) {if ($x % 2 != 0) {$list1[] = $x;}}return $list1; }function getOddNumbers() {$odd_numbers = [];foreach ($this->numbers as $number) {if (isOdd($number)) {$odd_numbers[] = $number;}}return $odd_numbers; }你能馬上說出 getList 函數的作用嗎?恐怕需要看完具體實現之后才能說出來吧。而這段代碼本身沒有什么復雜的邏輯,一共3個變量和不到10行的邏輯。
接下來我們再來看看 getOddNumbers 這個函數,有沒有發現,它的邏輯和 getList 其實是一樣的。并且沒有更加代碼的復雜性,變量數量相同,代碼嵌套層級也相同,唯一不同的是代碼寫的更加清晰了。但你卻可以通過函數名一眼看出這個函數的作用。
通過上面的例子我們發現,只需要在命名上做一些小小的改變,就能夠輕易的告訴別人你的代碼的作用。
避免虛假信息
你應該避免留下一些能夠掩蓋代碼真實意圖的錯誤線索。
你應該避免使用一些有歧義的單詞,例如不要把產品集合命名為 productList,除非它本身就是一個 List 類型的對象,這有可能會誤導別人,更好的名字應該是 products。
命名中千萬不要使用大寫的 o 或者小寫的 L 因為它們看起來就像0和1一樣。
對于相近的名稱也要小心使用,例如,你讓你來分辨 SomeMethodForEfficientHandlingOfFiles 和 SomeMethodForEfficientStorageOfFiles 這兩個單詞時,你需要用多長時間,我相信大多數人第一眼看上去,就認為它倆完全一樣。
做出有意義的區分
數字序列的命名不是命名的好方法,這樣的名字是沒有任何意義的,也不能夠展示出作者的意圖。
我們來看一下這個例子
<?phppublic function duplicateArray($arr1, &$arr2) {foreach ($arr1 as $key => $value) {$arr2[$key] = $value;} }這段代碼中,如果我們用 $source 和 #destination 來代替 $arr1和 $arr2 會更好。
使用你知道發音的名稱
如果你們不知道名字的發音,那么你和人交流起來就會像白癡一樣,這就很麻煩,畢竟社交是編程中比較重要的一個環節。你的命名最好是每個人都能夠通過發音就馬上就能想到的單詞。
假如我們有一個變量命名為 $xsq 并且這在公司內是一個很重要的變量,想象一下你日常和同事的對話:
"Hey, what about that variable eke ess kjew?"
"You mean the access queue?"
有些開發者會嘗試把變量湊成一個單詞的發音,而有些開發者則會選擇讀單詞的字母拼寫。
使用便于搜索的名稱
由一個字母組成的名稱的不好之處在于難以定位。數字常量也有同樣的問題,所以我們在開發過程中需要把魔數替換為常量。在代碼里搜索數字8是一件很困難的事情,但是如果你搜索常量 MAX_BLOCKS_DISPLAYED 就會簡單很多。單字母命名的唯一用例是在簡短方法中的局部變量。
成員屬性前綴
不要使用成員屬性前綴。
有些開發者習慣把淚中所有的私有變量用下劃線為前綴命名。不要這么做,你應該保證的是,你的類和方法要足夠小,以至于你不需要使用這些前綴。
或者,你可以使用IDE(或安裝插件)來根據變量的使用范圍給變量著色。
把你的代碼想象成一個露營地,讓它盡可能的保持整潔。
原文鏈接
https://medium.com/better-programming/how-to-create-meaningful-names-in-code-20d7476537d4
總結
以上,就是創建有意義命名的一些原則和方法。有任何問題歡迎給我留言,本文靈感來源于《代碼整潔之道》,推薦大家都讀一下這本書。
原文結束了,我個人還是比較認可作者的觀點的,代碼中的各種命名還是要花時間去琢磨琢磨的,這里也分享一下我在工作中通過 code review 的一些小感悟吧。在代碼中,文件名、類名、方法名,這些不要嫌長,要盡可能的達意,并且可讀。而對于一些局部變量,則可以適當放寬限制,如果太長的話會導致代碼中有很多不必要的換行,但是也最好不要出現 a1 、 a2 這樣的命名。因為這種是完全不能理解它代表什么的。
這篇文章在 medium 上收獲的 3k+ 的 claps。所以就想著翻譯過來推薦給大家,同時也推薦大家讀一讀《代碼整潔之道》。
總結
以上是生活随笔為你收集整理的c++ 命名规则 private_【译】代码中如何写出更有意义的命名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三创比赛关于软件设计的策划书_关于大学生
- 下一篇: 20个python代码_有用的20个py