之前探討過中文命名在業務部分的優點大於算法部分. 今天又一次看到了這個以冒泡算法的例子: 劉然:批判易語言的人是否用過這門語言,批判它的緣由又是什麼?有些感觸. 先嚐試對變量命名進行改進, 來看看是否會有不一樣觀感. 注: 本文不討論輸入效率問題, 也不討論易語言python
時間太有限, 僅對帖子中的Python程序做粗淺探討. 另外一個易語言語法的例程也有不一樣方面的改進空間, 就不展開了. 有興趣/質疑的歡迎提其餘例程一同探討.算法
for i in xrange(len(a)): for j in xrange(i + 1, len(a)): if a[i] > a[j]: a[i], a[j] = a[j], a[i] 複製代碼
首先, 在嵌套循環中使用i和j的一個問題是, 二者看起來有點像. 下面的視覺區分度更大:編程
for 甲 in xrange(len(a)): for 乙 in xrange(甲 + 1, len(a)): if a[甲] > a[乙]: a[甲], a[乙] = a[乙], a[甲] 複製代碼
也能夠賦予變量名以更多語義, 來凸顯變量的某些性質, 以下. 而英文命名想要表達相似語義就要長一些了:數組
for 前 in xrange(len(a)): for 後 in xrange(前 + 1, len(a)): if a[前] > a[後]: a[前], a[後] = a[後], a[前] 複製代碼
中文命名很天然是個考驗中文修養的活. 用中文命名的代碼能夠像天書同樣"僅僅是符號", 也能夠像好文章同樣用詞考究恰如其分, 固然更多的(包括在下寫的)限於功力或者開發時間限制也許只能達到流水帳的水平.markdown
哪裏用中文最有效果(對可讀性加強最大), 哪裏是雞肋(好比上面的a, 能夠更名爲"數組", 但效果遜一些, 也許更合適放在註釋中), 也與程序的目的/設計/理解很是相關.less
相比數理能力, 更大量的編程任務更須要的是邏輯與思辨能力, 這種任務的比重只會愈來愈大. 而邏輯思辨能力是文理相通的. 與編程相配套的文檔編寫和閱讀也更偏文, 團隊建設/客戶交流之類軟實力更不用說. 相信隨着IT產業的逐漸成熟, 文科背景的開發者將會愈來愈多, 長遠看這確定是好事.ide
論文Concise and Consistent Naming: Ten Years Later提到:工具
Approximately 70% of the source code of a software system consists of identifiers. Hence, the names chosen as identifiers are of paramount importance for the readability of computer programs and therewith their comprehensibility. However, virtually every programming language allows programmers to use almost arbitrary sequences of characters as identifiers which far too often results in more or less meaningless or even misleading naming.oop
很想看全文(尤爲是那個輔助命名工具的十年實踐的總結)但下載的pdf裏只有摘要. 若是有哪位同窗有全文請分享一下, 先謝了.spa
2018-02-16