EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
透明性,来点光。 Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity. 透明性是被动品质,可显性是主动任务。 T5 x) U0 R; o7 N/ E Q _# n
透明性:没有阴暗的角落和隐藏的深度;能够预测到程序行为,能够看透机器干什么(整个)。* C: x9 l2 h! u/ \
可显性:做什么,怎么做。文档就是为了提高可显性。要必须尽力做到有帮助(具体)。 可显性降低进入门槛;透明性则减少代码中的存在成本。
+ C2 u c% j5 r8 [# l* B7 c, ]研究实例
audacity:UI可操作性,易操作性。 fetchmail的-v选项:防弹程序,可显性。
' b2 H* c% ~! R& {不要让调试工具仅仅成为时候追加或者用后就束之高阁的东西。他们是通往代码的窗口:不要只在墙上造出粗糙的洞,要整修这些洞并装上窗。如果打算让代码一直可被维护,就必须让光照进去。 GCC:预处理器、解析器、代码生成器、汇编器和连接器。0 k3 C3 K$ ?0 J. j8 R
前三个阶段的可读文本流。可以监视中间步骤,有利于回归测试。 kmail:显示过程信息。让你对状态充分了解。
8 |7 Z4 x" M& a6 L) i让UI沉默只做对了一半,真正聪明的是找到一个方法,可以访问具体细节,但又不让他们太显眼 SNG:与PNG之间进行无缝、无损转换。用户可以直接编辑SNG纯文本文件,而不是PNG文件。
* u0 }- [+ H1 @6 U& ~) P1 wsng本身程序代码不容易理解,但是通过让PNG的全部内容可显,提高了程序中较大系统的透明性。 Terminfo:使用Unix文件系统作为数据库是一种策略,对数据库要求简单的其他应用程序可以效仿并从中受益。 Freeciv:数据文件的聚合、存储、使用,修正。因为只读,所以不会蠕变。 1 d( g1 _" `* V8 |" G- {4 {* u% F
为透明性和可显性而设计 透明性:不要在具体操作的代码上放太多的抽象层(不要过度抽象)
7 Y7 A; Q* h2 e不要垒高台,要用设计简单而透明的算法和数据结构紧贴基面;薄胶合层。0 _9 Y9 k6 u7 F$ ~0 L u
最大静态深度是4层。6 n) i2 B7 K2 Y( h
不变性质有助于人们推演代码和发现有问题的情况。
. _- t% y4 r! R8 \" ~API正交、标志位要少
. a( |# K$ j' z$ Y6 y* L ]1 w强调、形象化重要数据。 h6 y5 \, q% Y( }2 o
数据结构与外部实体的关系。
: Z+ Q) u! R8 ]+ x" W& c( z容易找到代码部分。
% R0 [! q% u9 A增加了特殊还是避免了特殊。特殊使代码更难理解。+ e! |* f3 _) |' H" }6 g" o4 b6 B
少用magic number(意义含糊的常量) 提供调试和探测的开关2 c2 h! a) {. ^
二进制格式数据考虑文本化器
4 V4 l$ ~5 o; r4 s' o Q4 q透明性抵御bug
( X* q3 r1 j4 I/ `7 I5 D( G9 {为可维护性设计
抛弃蹩脚代码;
) Y: V0 q( W, @( {9 v' x, W) i' Y使用简单算法;
4 L; d; r& ?, V e包含开发者手册。
) j/ e$ Q2 g+ P$ c' _ |