zoukankan      html  css  js  c++  java
  • Unix编程艺术:透明性

    透明性,来点光。

    Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.

    透明性是被动品质,可显性是主动任务。
    透明性:没有阴暗的角落和隐藏的深度;能够预测到程序行为,能够看透机器干什么(整个)。
    可显性:做什么,怎么做。文档就是为了提高可显性。要必须尽力做到有帮助(具体)。

    可显性降低进入门槛;透明性则减少代码中的存在成本。


    研究实例

    audacity:UI可操作性,易操作性。

    fetchmail的-v选项:防弹程序,可显性。
    不要让调试工具仅仅成为时候追加或者用后就束之高阁的东西。他们是通往代码的窗口:不要只在墙上造出粗糙的洞,要整修这些洞并装上窗。如果打算让代码一直可被维护,就必须让光照进去。

    GCC:预处理器、解析器、代码生成器、汇编器和连接器。
    前三个阶段的可读文本流。可以监视中间步骤,有利于回归测试。

    kmail:显示过程信息。让你对状态充分了解。
    让UI沉默只做对了一半,真正聪明的是找到一个方法,可以访问具体细节,但又不让他们太显眼

    SNG:与PNG之间进行无缝、无损转换。用户可以直接编辑SNG纯文本文件,而不是PNG文件。
    sng本身程序代码不容易理解,但是通过让PNG的全部内容可显,提高了程序中较大系统的透明性。

    Terminfo:使用Unix文件系统作为数据库是一种策略,对数据库要求简单的其他应用程序可以效仿并从中受益。

    Freeciv:数据文件的聚合、存储、使用,修正。因为只读,所以不会蠕变。


    为透明性和可显性而设计

    透明性:不要在具体操作的代码上放太多的抽象层(不要过度抽象)
    不要垒高台,要用设计简单而透明的算法和数据结构紧贴基面;薄胶合层。
    最大静态深度是4层。
    不变性质有助于人们推演代码和发现有问题的情况。
    API正交、标志位要少
    强调、形象化重要数据。
    数据结构与外部实体的关系。
    容易找到代码部分。
    增加了特殊还是避免了特殊。特殊使代码更难理解。
    少用magic number(意义含糊的常量)

    提供调试和探测的开关
    二进制格式数据考虑文本化器
    透明性抵御bug


    为可维护性设计

    抛弃蹩脚代码;
    使用简单算法;
    包含开发者手册。

  • 相关阅读:
    宁泽涛世锦赛夺冠
    iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
    在xcode里面如何利用instrument
    Xcode 中搜索任何条件文本
    十大算法
    Object c中的alloc和init问题
    My97DaePicker 用js实现文本框日期相减求天数
    js 取消listbox选中的项
    C# OR/Mapping 数据处理模式学习
    ASP.NET实现列表页连接查询 拼接sql语句 绑定grivdView
  • 原文地址:https://www.cnblogs.com/feisky/p/2333067.html
Copyright © 2011-2022 走看看