糟糕的命名:編程最難的事3

如果你不知道一件事物叫什么,

你就不知道它是什么。

如果你不知道這是什么,

你就不可能坐下來寫代碼?!?/p>


文章轉(zhuǎn)載自杰微刊,是一個(gè)全新的技術(shù)原創(chuàng)平臺(tái),盡管在這里介紹容易招來推廣之嫌,但是,文章的每一個(gè)字,都是經(jīng)過的細(xì)細(xì)雕琢,即使能引來大家的質(zhì)疑和批評(píng),也樂意聽取,不斷改進(jìn)自己。

運(yùn)用正確意味著每一個(gè)詞都要用的恰到好處。

關(guān)于命名?——菲利普·卡爾頓(Phil?Karlton)

計(jì)算機(jī)科學(xué)有兩個(gè)艱難的事:

1.緩存失效?;

2.命名。

關(guān)于不好的命名——?jiǎng)⒁姿埂た_爾(Lewis?Carroll)

當(dāng)我使用一個(gè)詞,胖墩兒說是一種輕蔑,當(dāng)然這也正是我本事的意思-不多也不少。

愛麗絲奇遇記中,透過鏡子,愛麗絲究竟發(fā)現(xiàn)了什么?(1871)

故意無意義的名稱

理論上講,foo僅僅作為一個(gè)占位符名稱(因?yàn)樗鼰o任何含義)

關(guān)于命名——薩姆·加德納(Sam Gardiner)

“如果你不知道一件事物叫什么,

你就不知道它是什么。

如果你不知道這是什么,

你就不可能坐下來寫代碼?!?

什么是最糟糕的變量名?

——data

什么是更糟糕的變量名?

data2

什么是第三糟糕的變量名?

data_2

縮寫容易引起歧義

以英文為例, char?是?character(字符)?還是?characteristic(特點(diǎn))?

mod?的意思是?modify(修改)?還是?modulo?(模)?

acc,pos或者auth呢?

另外, fab?只是一個(gè)函數(shù),?:A?B。

而不是?fabulous?(傳說)


允許一個(gè)例外:ID?作為?“identity”?(身份)


一個(gè)字母太短

局部變量:它的含義是什么?

var?a?=?42;

這一個(gè)是例外:

for??(int??i??=??1;??i??< 42; ++i)

改成?ii,jj,kk?也并不好

函數(shù)式編程:一個(gè)字母仍然太短

def modp[C](f: B1 => (B2, C), a: A1): (A2, C) = {

val (b, c) = f(get(a)) (set(a, b), c)

}

代碼出處:第70行?


可以用特定含義的詞代替更多的詞

什么是appointment_list?

A calendar?日歷?


什么是company_person?

Employee普通職員 或者是owner老板?


什么是text_correction_by_editor?

只是一個(gè)edit-編輯。


模糊語言是模糊的

艾倫·格林寫了一些模糊的詞,如:

InvoiceManager、

TaskManager

‘Manager’?非常不準(zhǔn)確,

其含義之一可能是你想要的字:

Bucket,?Supervisor,?Planner,?Builder

原文地址:點(diǎn)擊查看


代碼里的模糊用語

get在方法名的開頭只用于返回一個(gè)字段值。

如果不是這樣,或者從其他地方得到的數(shù)據(jù),?用其他的詞:

fetch,?find,?lookup,?create,?calculate,?derive,?concoct.


錯(cuò)誤的詞是錯(cuò)的,同義詞易混淆

order?≠?shipment

carrier?≠?broker

shipment?≠?transport?leg

shipment?=?consignment

carrier?=?transporter

transport?leg?=?journey


Java企業(yè)中間件示例 -

Apache?Camel

JF杰微刊出品: Apache?Camel- http://camel.apache.org


再探屬性訪問器

在許多庫中,?這些方法名稱將是不可抗拒的,但不建議使用:

getEven

getReal

getAround

getRoundTo

getRichQuick

getJoke


糟糕命名的總結(jié)


無意義:foo;

太一般:data;

太短:a;

太長(zhǎng):text_correction_by_editor;

縮寫:acc;

模糊:InvoiceManager;

錯(cuò)誤:order;

只是不好笑:startCamel


未完待續(xù)。


原文地址:JF杰微刊出品


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 《裕語言》速成開發(fā)手冊(cè)3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 28,799評(píng)論 5 20
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評(píng)論 19 139
  • TCP協(xié)議里窗口機(jī)制有2種:一種是固定的窗口大小;一種是滑動(dòng)的窗口。這個(gè)窗口大小就是我們一次傳輸幾個(gè)數(shù)據(jù)。對(duì)所有數(shù)...
    元素周期表的十七君閱讀 864評(píng)論 0 1
  • 麻木不仁 停休第八天 依稀記得接到停休的消息伊始,微笑著和其他部門的同事說著“沒關(guān)系、習(xí)慣了”等寬慰的話,內(nèi)心卻有...
    狼_左瞳_冷色調(diào)閱讀 256評(píng)論 0 2
  • 我們說好的,麥子熟了我們便去麥城。這話說了很多遍,似乎我早忘記是夢(mèng)里發(fā)生過的場(chǎng)景還是電影里的某句臺(tái)詞,但麥子熟了很...
    蔻濰稱閱讀 345評(píng)論 0 1

友情鏈接更多精彩內(nèi)容