软件开发中的瑞士军刀综合症

  首先,如果你觉得这篇文章更像是在发牢骚,我先向你表示道歉。这个瑞士军刀综合征的灵感是在我跟很多项目经理、客户,甚至其他程序员的接触中备受打击的情况下想出来的。我十分沮丧于他们的视野狭窄。我认为他们都有瑞士军刀综合征。

 瑞士军刀

  “瑞士军刀”这个词通常用来比喻一个东西有很多很丰富的用途,能够在很多场合下使用。

  虽然这种东西非常有用,但它也有一些需要你警惕的地方。一个工具如果有太多的活动部件组合而成,也许最终它什么都干不了。一个工具试图什么功能都有,也许它没有一样功能能做好。

  在我的经验中,这个道理在软件开发中同样适用。而且是经常出现类似问题,程序员试图堆砌一堆模块和代码,只是因为它们很酷;项目经理试图在项目开发过程中增加新的功能,只是因为”X”或”Y”功能看起来会让软件更有价值。客户会要求额外的软件特征和功用,只是因为他们读到或听说这些东西会对他们的业务起到“关键”作用。

  “瑞士军刀综合征”有很多的表现:堆砌功能,过早优化,讨好无知客户等。但问题的根源是我们对软件的认知和对价值的评估:

  功能多   =   价值大

  然而,在现实生活中,在大多数情况下,反过来才是真理。代码越复杂,软件越庞大,它的价值反而会越小。我个人的一个证明这个说法的例子是一个小的DmacMdia公司使用的管理软件。

  最初这个应用非常简单:我们需要的是:

)能看到所有任务都分配到哪个团队里

)任务按周或按周列表显示,基本的任务列表

  我用一个周末把这些简单的功能实现。周一给经理演示的时候,他认为这个软件会非常有用。

  但是,如果能…会更好

  于是,瑞士军刀综合征发病了:伴随着一个“但是”。其它团队也要使用这个软件。就在他们还没有开始使用之前,我们就收到了一大堆他们“需要”的功能列表或增强意见。突然间,我们最初的轻量级的软件就要变成了一个超级复杂的多功能应用了。

 软件设计需要有清楚的目标

  软件应该简单实用。仍然使用瑞士军刀的例子,一个好的软件应该像一把杀猪刀。杀猪刀有清楚明确的使用方向和特殊功用。专业屠夫会选择适合他的工作的正确的刀。我们程序员对代码的认识也应该是这样的。

  干一件事,干好一件事!

  软件设计也应该遵循这样的原则,这也是我们通常说的单一责任原则:

…单一责任原则描述的是每个类应该只有一个责任,这个责任应该完全封装到这个类内部。这个类提供的所有服务都要以这个责任为目标。

 总结

  没有哪个公司、项目经理、程序员或客户能逃脱“瑞士军刀综合征”的毒害。我们都倾向于认为“更多”就是“更好”或“更有价值”。软件应该优雅,优雅的程序是刚好漂亮的解决一个问题。我们程序员有责任让我们编写的每一行代码都最简明、优雅和实用。

原文:







































白癜风复发怎么治疗
北京白癜风治疗医院哪家效果好



转载请注明地址:http://www.henanledxianshiping.com/rjkflc/6222.html
  • 上一篇文章:
  • 下一篇文章: