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微型语言后端结合,程序往往拥有一个的内嵌脚本语言。


    网页浏览器作为通用前端


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

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


  • 相关阅读:
    一个简单的反反爬~
    查缺补漏 -- python 之 and or的优先级
    从今天开始看《Redis深度历险》--HyperLogLog
    从今天开始看《Redis深度历险》--位图
    从今天开始看《Redis深度历险》--延时队列
    从今天开始看《Redis深度历险》--分布式锁
    redis之set【官方文档搬运+翻译】
    从今天开始看《Redis深度历险》--基础
    collections模块学习之namedtuple
    元组赋值谜题
  • 原文地址:https://www.cnblogs.com/feisky/p/2347846.html
Copyright © 2011-2022 走看看