如果你不知道一件事物叫什么嫉父,
你就不知道它是什么沛硅。
如果你不知道這是什么,
你就不可能坐下來寫代碼绕辖∫〖。”
文章轉(zhuǎn)載自杰微刊,是一個(gè)全新的技術(shù)原創(chuàng)平臺仪际,盡管在這里介紹容易招來推廣之嫌围小,但是,文章的每一個(gè)字弟头,都是經(jīng)過的細(xì)細(xì)雕琢吩抓,即使能引來大家的質(zhì)疑和批評涉茧,也樂意聽取赴恨,不斷改進(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)
}



可以用特定含義的詞代替更多的詞
什么是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允蜈;
太長:text_correction_by_editor;
縮寫:acc蒿柳;
模糊:InvoiceManager饶套;
錯(cuò)誤:order;
只是不好笑:startCamel
未完待續(xù)其馏。
原文地址:JF杰微刊出品