文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell学习笔记_2_软件工具的原则

shell学习笔记_2_软件工具的原则

时间:2010-08-16  来源:chenliangmoran

随着时间的流逝,人们开发出了一套设计与编写软件工具的原则。好的软件工具应该具备 下列特点:
一次做好一件事     在很多方面,这都是最重要的原则。若程序只做一件事,那么无论是设计、编写、     调试、维护,以及生成文件都会容易得多。举例来说,对于用来查找文件中是否有     符合样式的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%的工作。接下来,若有需要,你可以编写一个功能特定的小型程序来完成剩下     的工作。与每次都从头开始来解决各个问题相比,这已经让你省去许多工作了。
构建特定工具前,先想想     如前所述,若现存系统里就是没有需要的程序,可以花点时间构建满足所需的工     具。然而,动手编写一个能够解决问题的程序前,请先停下来想几分钟。你所要     做的是,是否有其他人也需要做?这个特殊的工作是否有可能是某个一般问题的     一个特例?如果是的话,请针对一般问题来编写程序。当然,这么做的时候,无     论是在程序的设计或编写上,都应该遵循前面所提到的几项原则。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载