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

软件的开发效率、优秀结构和运行性能的关系和取舍

2018年02月02日 ⁄ 综合 ⁄ 共 1423字 ⁄ 字号 评论关闭
 

软件设计确有好坏之分,但好坏的标准却很难制定,大多时候各人各看法,难以统一。项目经理们追求
开发效率,他们大多时候只关心什么时候能把东西做完;技术员中有很多人更关注程序结构、复用性这样的东西,希望程序结构好看,而另一些人则是程序性能的狂
热追求者,他们舍不得多花费哪怕一丁点的
CPU。提高这些指标当然都是好事,但正如俗话说的,好事难两全,很多时候这些指标会产生冲突,而软件设计师必须在冲突产生的时候选择一个能平衡这些矛盾的设计方案。

开发效率常常和优秀结构冲突。
般慢功才出细活,而赶时间做出来的东西总会有结构上的不足。这些不足只会在以后软件功能发生变化,需要扩展的时候才会显示出来。项目经理希望迅速完成这个
项目,而程序员们知道,以后这些功能会不停地改动,必须使用更易维护的设计方案。而领导的压力、市场的需求只给我们那么一点时间,怎么办?恐怕只有使用简
单的、机械的方法,靠加班加人累积劳动量来实现目标了。时间紧的时候,开发效率常是优秀结构的克星。

如果时间充足,开发人员在设计程序实现方案的时候,也会有性能和结构的争论,其实这也就是运行性能和优秀结构的矛盾。

程序的结构化常常会对性能产生消极的影响。最明显的例子就是Java。大家都知道是Java是个好东西,跨平台、面向对象,Java程序也易于复用和扩展,但就是太慢。相对于C++来说,Java在结构上的优越性并不明显,但却严重影响执行性能。很少有人用JavaWindows应用程序,至少到目前为止,C++仍是首选。在这些结构上的优越性并不明显,但却严重影响执行性能的时候,运行性能是第一选择

然而对于大多数应用来说,事实并非如此。现在CPU又多又快,也许节约那几个微秒的时间并没有实际意义,而一个灵活的、结构化的设计却可以大大节约以后维护程序的时间,并带来更强的扩展性。这时候优秀结构理应优先于运行性能

现在有很多人使用C#Windows应用。我想对于其中的很多人来说,应该是取C#快速开发的优势。这应该算是开法效率优于运行性能的例子。

三种目标间确实有着相克的关系,但如果做得好,也可以具有相生关系。

一个灵活的、可复用的程序结构带来的好处是显而易见的。比如MFC库或ATL这样的东西,虽然开发这些库耗费了很多时间,但我们用它写程序可就快多了。如果我们自己程序的复用性设计好,必然也会在以后的维护修改或其它应用的开发中节约时间,起到提高开发效率的作用。这是优秀结构提高开发效率的例子。

同样,如果你的程序有清晰的接口、高内聚低耦合的结构,那么也很容易把功能分解开来,放到不同的机器上执行,从而形成服务器集群。正所谓双拳难敌四手。多机联合计算的运行效率还是相当可观的。所以优秀结构也能对提高运行效率产生积极影响

目前看来,在开发效率、优秀结构和运行性能这三者中,开发效率和运行性能上的追求对其它两者只产生消积的影响,而对结构上的追求,则可能更好也可能更坏,前提是你有没有时间、以及你够不够聪明。有没有优秀结构的设计能力也是一个很重要的因素,搞不好就会弄巧成拙。

所以,如果时间很紧,或者觉得自己没那么聪明,那啥也别说了,使用简单的方法,
必要时加加班,领导看了还喜欢;如果时间还够,而你在程序结构上确实有更好的想法,建议你努力去实现它,以后别人加班时你就可以回家了;如果不影响程序结
构的优良性,请尽量使用能提高性能的实现方法,据说节约
CPU
的计算也能省电!如果你的程序必须实现单机高性能,那其实也没得选择了。

抱歉!评论已关闭.