设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

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

2014-5-30 14:49| 发布者: 红黑魂| 查看: 1897| 评论: 0|来自: 外刊IT评论

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

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

瑞士军刀

瑞士军刀

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

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

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

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

功能多

=

价值大

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

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

  • 1)能看到所有任务都分配到哪个团队里
  • 2)任务按周或按2周列表显示,基本的任务列表

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

但是,如果能 … 会更好

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

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

菜刀

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

干一件事,干好一件事!

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

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

总结

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

[英文原文:Swiss Army Knife Syndrome ]

酷毙

雷人
1

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部