zoukankan      html  css  js  c++  java
  • Unix编程艺术——接口


    最小立异原则

         如有可能,尽量允许用户将接口功能委派为熟悉的程序来完成

         不能委派时,那就效仿


    接口设计评估

         简洁:          一个事务处理需要的动作时间及复杂度需要较低的上限
         表现力:       接口可以触发相当广泛的行为
         易用:          易用性同要求用户需要记忆的东西成反比
         透明:          用户在使用接口的时候,几乎没有什么问题、数据或程序的相关状态需要记忆
         脚本化能力:很容易被其他程序调用

    CLI和可视接口之间权衡

         CLI:丰富的表现力,高度的脚本化能力,易用性低(需要费劲的记忆),透明度通常也较低

         GUI:易用,不能脚本化,处理规模大的问题需要机械性重复操作

         长远来看,为了既能服务一般用户,又能服务有经验用户,最好两种接口都提供。

    Unix接口设计模式

    1. 过滤器模式

    程序接受标准输入,转换为某种格式后,再输出到标准输出。过滤器是非交互的。

    实例:grep,tr

    原则:Postel原则,宽进严出;过滤的时候,不需要的信息也绝不丢弃;不增加无用数据。

    2. Cantrip模式

    程序没有输入,没有输出,只被调用一次,产生退出状态码。程序的行为只由启动条件来控制。

    实例:clear,touch

    3. 源模式

    程序不需要输入,输出由启动条件决定

    实例:ls,ps,who

    4. 接收器模式

    程序只接纳标准输入,而不产生标准输出。对输入的行为由启动条件决定。

    实例:lpr

    5. 编译器模式

    程序既没有标准输入,也没有标准输出,但是会将错误发到标准错误端。

    实例:gcc,gif2png,gzip

    6. ed模式

    程序具有很强的交互性。

    实例:gdb,ftp,sh

    7. Roguelike模式

    运行在控制台的全屏、可视界面风格,但使用字符阵列显示,而非图形和鼠标界面。

    实例:vim,emacs

    8. 引擎和接口分离模式

    模型、视图、控制器模式

    几个变种:配置者/执行者组合(fetchmail/fetchmailconf),假脱机/守护进程组合(at/atd, lpr/lpd),驱动/引擎组合,客户端/服务器组合

    9. CLI服务器模式

    程序以前端模式出发时,有一个简单的CLI界面读取标准输入并写标准输出;以后台方式运行时,将stdin和stdout连接到专门的TCP/IP端口。

    实例:POP, IMAP, SMTP, HTTP

    10. 基于语言的接口模式

    GUI前端同CLI微型语言后端结合,程序往往拥有一个的内嵌脚本语言。


    网页浏览器作为通用前端


    沉默是金:喋喋不休的程序往往不能跟其他程序很好的合作,用户屏幕的纵向空间是宝贵的,垃圾信息对用户带宽的无谓消耗。,

    长时间的操作要提供进度条。


  • 相关阅读:
    整数N分解,搭积木,离散数学中的母函数,ZOJ(1163)
    背包问题模板,POJ(1014)
    DP之背包问题详解及案例
    Java基础部分全套教程.
    一位资深程序员大牛给予Java初学者的学习路线建议
    给Java新手的一些建议——Java知识点归纳(Java基础部分)
    一位10年Java工作经验的架构师聊Java和工作经验
    假如时光倒流,我会这么学习Java
    一位资深程序员大牛给予Java初学者的学习路线建议
    2年Java开发工作经验面试总结
  • 原文地址:https://www.cnblogs.com/feisky/p/2347846.html
Copyright © 2011-2022 走看看