Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230822
  • 博文数量: 57
  • 博客积分: 955
  • 博客等级: 准尉
  • 技术积分: 587
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-14 13:30
文章分类

全部博文(57)

文章存档

2012年(2)

2011年(55)

分类:

2011-07-26 22:58:56

随着时间的流逝,人们开发出了一套设计与编写软件工具的原则。好的软件工具应该具备
下列特点:

一次做好一件事
    在很多方面,这都是最重要的原则。若程序只做一件事,那么无论是设计、编写、
    调试、维护,以及生成文件都会容易得多。举例来说,对于用来查找文件中是否有
    符合样式的grep程序,不应该指望用它来执行算术运算。
    
    这个原则的结果,自然就是会不断产生出更小、更专用与特定功能的程序,就像专
    业木匠的工具箱里,永远会有一堆转为特定用途所设计的工具。

处理文本行,不要处理二进制数据
    文本行是UNIX的通用格式。当你在编写自己的工具程序时便会发现,内含文本行
    数据文件很好处理,你可以用任何垂手可得的文本编辑器来编辑它,也可以让这
    些数据在网络上与各种机器架构之间传输。使用文本文件更有助于任何自定义工具与
    现存的UNIX程序之间的结合。

使用正则表达式
    正则表达式(regular expression)是很强的文本处理机制。了解它的运作模式并加
    以使用,可适度简化编写命令脚本(script)的工作。

    此外,虽然正则表达式多年来在工具与UNIX版本上不断在变化,但POSIX标准
    仅提供两种正则表达式。你可以利用标准的库程序进行模式匹配的工作。这样就可
    以编写出专用的工具程序,用于与grep一致的正则表达式(POSIX称之为基本型
    正则表达式,Basic Regular Expressions,BRE),或是用于与egrep一致的正则
    表达式(POSIX称之为扩展型正则表达式,Extended Regular Expressions,ERE)。

默认使用标准输入/输出
    在未明确指定文件名的情况下,程序默认会从它的标准输入读取数据,将数据写到
    它的标准,至于错误信息则会传递到标准错误输出。以这样的方式来编写程序,可
    以轻松的让它们成为数据过滤器(filter),例如,组成部分的规模越大,越需要
    复杂的管道(pipeline)或脚本来处理。

避免喋喋不休
    软件工具的执行过程不该像在“聊天”(chatty)。不要将“开始处理”(starting
    processing)、“即将完成”(almost done)或是“处理完成”(finished
    processing)这类信息放进程序的标准输出(至少不该是默认状态)。在工具程序
    的世界里,没有消息就是好消息。
    这个原则其实还有另外一个含义。一般来讲,UNIX工具程序一项遵循“你叫它做什么,
    你就会得到什么”的设计哲学。
    

输出格式必须与可接受的输入格式一致
    专业的工具程序认为遵循某种格式的输入数据,例如标题行之后接着数据行,或在
    行上使用某种字符分割符等,所产生的输出也应遵循与输入一致的规则。这么做的
    好处是,容易将一个程序的执行结果交给令一个程序处理。

让工具去做困难的部分
    虽然UNIX程序并非完全符合你的要求,但是现有的工具或许已经可以为你完成
    90%的工作。接下来,若有需要,你可以编写一个功能特定的小型程序来完成剩下
    的工作。与每次都从头开始来解决各个问题相比,这已经让你省去许多工作了。

构建特定工具前,先想想
    如前所述,若现存系统里就是没有需要的程序,可以花点时间构建满足所需的工
    具。然而,动手编写一个能够解决问题的程序前,请先停下来想几分钟。你所要
    做的是,是否有其他人也需要做?这个特殊的工作是否有可能是某个一般问题的
    一个特例?如果是的话,请针对一般问题来编写程序。当然,这么做的时候,无
    论是在程序的设计或编写上,都应该遵循前面所提到的几项原则。
阅读(673) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~