Unix编程艺术:透明性
透明性,來(lái)點(diǎn)光。
Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.
透明性是被動(dòng)品質(zhì),可顯性是主動(dòng)任務(wù)。
透明性:沒(méi)有陰暗的角落和隱藏的深度;能夠預(yù)測(cè)到程序行為,能夠看透機(jī)器干什么(整個(gè))。
可顯性:做什么,怎么做。文檔就是為了提高可顯性。要必須盡力做到有幫助(具體)。
可顯性降低進(jìn)入門(mén)檻;透明性則減少代碼中的存在成本。
研究實(shí)例
audacity:UI可操作性,易操作性。
fetchmail的-v選項(xiàng):防彈程序,可顯性。
不要讓調(diào)試工具僅僅成為時(shí)候追加或者用后就束之高閣的東西。他們是通往代碼的窗口:不要只在墻上造出粗糙的洞,要整修這些洞并裝上窗。如果打算讓代碼一直可被維護(hù),就必須讓光照進(jìn)去。
GCC:預(yù)處理器、解析器、代碼生成器、匯編器和連接器。
前三個(gè)階段的可讀文本流??梢员O(jiān)視中間步驟,有利于回歸測(cè)試。
kmail:顯示過(guò)程信息。讓你對(duì)狀態(tài)充分了解。
讓UI沉默只做對(duì)了一半,真正聰明的是找到一個(gè)方法,可以訪問(wèn)具體細(xì)節(jié),但又不讓他們太顯眼
SNG:與PNG之間進(jìn)行無(wú)縫、無(wú)損轉(zhuǎn)換。用戶(hù)可以直接編輯SNG純文本文件,而不是PNG文件。
sng本身程序代碼不容易理解,但是通過(guò)讓PNG的全部?jī)?nèi)容可顯,提高了程序中較大系統(tǒng)的透明性。
Terminfo:使用Unix文件系統(tǒng)作為數(shù)據(jù)庫(kù)是一種策略,對(duì)數(shù)據(jù)庫(kù)要求簡(jiǎn)單的其他應(yīng)用程序可以效仿并從中受益。
Freeciv:數(shù)據(jù)文件的聚合、存儲(chǔ)、使用,修正。因?yàn)橹蛔x,所以不會(huì)蠕變。
為透明性和可顯性而設(shè)計(jì)
透明性:不要在具體操作的代碼上放太多的抽象層(不要過(guò)度抽象)
不要壘高臺(tái),要用設(shè)計(jì)簡(jiǎn)單而透明的算法和數(shù)據(jù)結(jié)構(gòu)緊貼基面;薄膠合層。
最大靜態(tài)深度是4層。
不變性質(zhì)有助于人們推演代碼和發(fā)現(xiàn)有問(wèn)題的情況。
API正交、標(biāo)志位要少
強(qiáng)調(diào)、形象化重要數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu)與外部實(shí)體的關(guān)系。
容易找到代碼部分。
增加了特殊還是避免了特殊。特殊使代碼更難理解。
少用magic number(意義含糊的常量)
提供調(diào)試和探測(cè)的開(kāi)關(guān)
二進(jìn)制格式數(shù)據(jù)考慮文本化器
透明性抵御bug
為可維護(hù)性設(shè)計(jì)
拋棄蹩腳代碼;
使用簡(jiǎn)單算法;
包含開(kāi)發(fā)者手冊(cè)。
總結(jié)
以上是生活随笔為你收集整理的Unix编程艺术:透明性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 江西九江特产可带
- 下一篇: 关于汪华斌的名言名句244个