现在的位置: 首页 > 综合 > 正文

软件接口的规范艺术

2013年01月31日 ⁄ 综合 ⁄ 共 999字 ⁄ 字号 评论关闭
软件接口的规范艺术
黄国强 2007-9-20


        在软件开发中,模块之间的接口定义非常重要。在这些接口中,界面这个面向用户的接口是最重要的。
每个模块的接口,往往隐含着对调用者的一些规范。我认为这些规范应遵循这样一个原则:即针对用户的规范,越简单越好,针对内部的规范,越复杂越好。
        在这里,说两个例子来分析其中内含的道理。
        以前,用过一个软件,当用户输入一条纪录后,一定要按一下输入按钮,这个纪录才能真正输入。如果是一条纪录,对任何人来说,不会是太大的问题。可是这个软 件一般的使用者往往需要录入上千条数据,这样的操作,真是要把人逼疯。我们知道,这个软件的设计者肯定是因为技术等我们难以猜测的原因设计了这样一个接 口。而这样规范用户的行为,实在是过分。所以这样的软件要能普及才是怪事。很显然,正确的做法应该取消掉这个按钮。比如,像Excel表一样,用户输入完 成后按回车就应该自动调到下一条纪录的位置上,等待用户新的输入。诸如此类糟糕软件的无理要求很多,比如,按钮必须按某个顺序点击,否则不能进行下去等 等。
        上面这个例子说的是对用户的规范,越简单越好看来不会有疑义。那么对公司内部的人为什么不能按照越简单越好这个原则行事呢?
        答案是从成本和职责两个方面考虑,我们不能按照这个原则行事。
我 们知道,一个软件对用户限制越少,往往开发难度越大。比如,字处理软件,要求用户必须要懂得一个输入法。如果我们说说话,文字就上去岂不更好,显然这个难 度很大,目前没有一个语音识别软件达到商业化的要求。在公司内部,模块往往定义了很多复杂的使用规范。这个可以降低开发难度,并节约成本。
        举例说,一个设备控制模块,他的一个使用规范是这样定义的:在调用控制命令之前,必须初始化通讯模块。有的人可能会问,难道我不能在控制软件模块加一个判 断,发现通讯模块不能工作,就自己调用一下通讯模块初始化命令的功能不行吗?我们从成本角度考虑就会发现这个建议确实不行。原因是,这个不但多写了一段代 码,而且还增加了模块之间的不必要的耦合度。况且,照这个思路其他模块也许也要加上这个通讯模块初始化命令,更是错上加错了。从职责角度考虑,我们给设备 控制模块附加上初始化通讯模块的功能,显然也是有问题的。
        现实的例子,就是公司越大,越需要详细的规范。这个和软件内部规范也是一个道理。 

抱歉!评论已关闭.