原文連結:zhoupq.com
變數與函式的命名對於大多數開發人員來說,絕對可謂一個痛處。不規範的命名往往是詞不達意,經常會被攪得一頭霧水,不僅影響開發效率,還拖慢了整個專案進度。
就我接觸的老專案來說,不規範的命名比比皆是。現在出現這麼一種情況,一個事物對應多種變數名。“開始日期”就有三種表現形式——sDate、startDate、fbrqBegin,並且在同一套業務、甚至在同一個方法中混搭使用。我最後選擇了 startDate 作為新業務邏輯的變數名,startDate 也是我新增的。
// 老方法,接收引數名:fbrqBegin
function fun1(numm){
var startDate = $("input[name='sdate']").val(); // 開始日期
var endStart = $("input[name='edate']").val();
var url="${path}/web/xxx"+numm+".tag?fbrqBegin="+startDate+"&fbrqEnd="+endStart;
……
};
// 新方法,接收引數名:sdate
function fun2(numm)
{
const startDate = $("input[name='sdate']").val(); // 開始日期
const endStart = $("input[name='edate']").val();
const url="${path}/web/xxx"+numm+".tag?sdate="+startDate+"&edate="+endStart;
……
};複製程式碼
不只是 “開始日期”,還有“廠商”(csmc、vendor)、“產品”等都擁有多種變數名。
若覺得有問題,要麼重構,要麼延續。先說說重構,此處的重構更確切說應該是改善程式碼可讀性,重構是一種理想行為,因為它往往需要大量時間,改善程式碼可讀性的同時,還需要不斷地除錯,以確保不會因為重構而引起其他模組出現bug。必須提的是,重構不列入工作績效,在專案制軟體行業,不存在重構的說法,只有能不能用。所以,你需要利用業餘時間去做這些事,做得好,也許會被口頭獎勵,沒做好,出現了意外的bug,並且沒有及時修復,下個季度的績效估計就不好看了。
當然,不管最終結果如何,重構一定會提升我們的技術水平,對自己的技術發展來看,是穩賺不賠的生意。可是你有時間去重構嗎?你真的願意冒著吃力不討好,甚至降績效的風險?難道不能寫開源軟體來提升技術嗎?這是一個自己內心的博弈。我接觸了好幾個專案,越做到後期,對老程式碼的吐槽就越少,因為我越來越理解當時的開發人員遇到的尷尬境地,最後他們也許選擇了延續,或者小範圍的重構。以上只針對傳統軟體行業專案制而言。網際網路公司的產品,那就必須反覆打磨,精益求精!
最後,我也選擇了在業餘時間進行可控範圍內的重構,畢竟專案交付時間不會因為重構而延期。即使得不到物質好處,但我為了提升點技術,以及看不慣混亂的場面,當手上的程式碼存在引起bug的風險,我就要及時彌補。將新業務模組的引數統一規範化:
// 新方法,接收引數名:startDate
function fun2(numm)
{
const startDate = $("input[name='sdate']").val(); // 開始日期
const endStart = $("input[name='edate']").val();
// 將接收引數名改為:startDate
const url="${path}/web/xxx"+numm+".tag?startDate="+startDate+"&endStart="+endStart;
……
};
// fun2(numm) 對應的 servlet
String startDate = request.getParameter("startDate");複製程式碼
不能重蹈蔡桓公的覆轍:
居十日,扁鵲望桓侯而還走。桓侯故使人問之,扁鵲曰:“疾在腠理,湯熨之所及也;在肌膚,針石之所及也;在腸胃,火齊之所及也;在骨髓,司命之所屬,無奈何也。今在骨髓,臣是以無請也。”
居五日,桓侯體痛,使人索扁鵲,已逃秦矣,桓侯遂死。
——摘自《扁鵲見蔡桓公》複製程式碼
我的變數名除了專有名詞之外,不使用拼音,並且很少用不通用不常見的縮寫,基本是常見的單詞縮寫或者全拼。這裡說一個印象比較深刻的單詞——Count:
Count
-----------------------------
英文簡稱 : CT
中文全稱 : 計數
所屬分類 : 醫藥衛生複製程式碼
而 CT (海詞縮略語)也很有可能是其他單詞的縮寫:
其他解釋
CT : Central Time 中央標準時間
CT : ComuniÓn Tradicionalista ComuniÓn Tradicionalista
CT : Court v. 獻殷勤, 追求, 招致危險
CT : Carat n. 克拉, 開(以純金為24開表示金含量的單位)
CT : Counseling and Testing 諮詢和檢測
CT : Computer Technician 電腦技術員
CT : Cholera Toxin 霍亂毒素複製程式碼
CT 被排除了,它的確很少在程式中表示 Count,其他縮寫 CNT (海詞縮略語):
CNT的常用相關縮略詞條,共有 1 條。
------------------------------------------------------------------------
CNT : Count
中文全稱:記數,記數器
詞條簡介:記數,記數器
CNT的其他相關縮略詞條,共有 19 條。
------------------------------------------------------------------------
CNT:Country n. 國家
CNT:Carbon Nano Tube 碳奈米管
CNT:Celestial Navigation Trainer 天體導航訓練裝置
……複製程式碼
在百度百科中 CNT (百度百科) 解釋如下:
CNT的英文全稱是Carbon Nanotube。中文名稱是碳奈米管,與金剛石、石墨、富勒烯一樣,是碳的一種同素異形體。複製程式碼
CT、CNT 都容易造成歧義,直接用 Count。在我看過的文件中,多數大公司也推薦如此。
版權宣告:轉載請註明出處 zhoupq.com