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