via: http://linux.cn/article-3133-1.html
软件开发中的瑞士军刀综合症
“瑞士军刀”这个词通常用来比喻一个东西有很多很丰富的用途,能够在很多场合下使用。
虽然这种东西非常有用,但它也有一些需要你警惕的地方。一个工具如果有太多的活动部件组合而成,也许最终它什么都干不了。一个工具试图什么功能都有,也许它没有一样功能能做好。
在我的经验中,这个道理在软件开发中同样适用。而且是经常出现类似问题,程序员试图堆砌一堆模块和代码,只是因为它们很酷;项目经理试图在项目开发过程中增加新的功能,只是因为”X”或”Y”功能看起来会让软件更有价值。客户会要求额外的软件特征和功用,只是因为他们读到或听说这些东西会对他们的业务起到“关键”作用。
“瑞士军刀综合征”有很多的表现:堆砌功能,过早优化,讨好无知客户等。但问题的根源是我们对软件的认知和对价值的评估:
功能多 = 价值大
然而,在现实生活中,在大多数情况下,反过来才是真理。代码越复杂,软件越庞大,它的价值反而会越小。我个人的一个证明这个说法的例子是一个小的 Demac Media 公司使用的管理软件。
最初这个应用非常简单:我们需要的是:
1)能看到所有任务都分配到哪个团队里
2)任务按周或按2周列表显示,基本的任务列表
我用一个周末把这些简单的功能实现。周一给经理演示的时候,他认为这个软件会非常有用。
但是,如果能 … 会更好
于是,瑞士军刀综合征发病了:伴随着一个“但是”。其它团队也要使用这个软件。就在他们还没有开始使用之前,我们就收到了一大堆他们“需要”的功能列表或增强意见。突然间,我们最初的轻量级的软件就要变成了一个超级复杂的多功能应用了。
软件设计需要有清楚的目标
软件应该简单实用。仍然使用瑞士军刀的例子,一个好的软件应该像一把杀猪刀。杀猪刀有清楚明确的使用方向和特殊功用。专业屠夫会选择适合他的工作的正确的刀。我们程序员对代码的认识也应该是这样的。
干一件事,干好一件事!
软件设计也应该遵循这样的原则,这也是我们通常说的单一责任原则:
…单一责任原则描述的是每个类应该只有一个责任,这个责任应该完全封装到这个类内部。这个类提供的所有服务都要以这个责任为目标。
总结
没有哪个公司、项目经理、程序员或客户能逃脱“瑞士军刀综合征”的毒害。我们都倾向于认为“更多”就是“更好”或“更有价值”。软件应该优雅,优雅的程序是刚好漂亮的解决一个问题。我们程序员有责任让我们编写的每一行代码都最简明、优雅和实用。
相关推荐
黑莓瑞士军刀:黑莓cod软件安装与管理,黑莓刷机助手。 BBSAK是一款黑莓综合小软件,相当于一个小型的桌面管理器甚至更强大,在外出时, 你只要装备上黑莓的USB驱动和BBSAK,就可以随心所欲的安装程序、截图、WIPE...
黑莓瑞士军刀 中文包.exe 备份神器!
瑞士军刀,常用的拿去吧,杀毒软件会报毒,这是正常的.请放心下载使用。呵呵
Lua脚本语言,以其轻量级、高效和可扩展性,已经成为游戏开发领域中不可或缺的工具。它不仅简化了游戏逻辑的编写和维护,还为游戏的快速迭代和更新提供了强大的支持。本文将深入探讨Lua脚本在游戏开发中的应用,包括...
传说中IT们的瑞士军刀,提供网络端口扫描,ip查询等多项功能
小巧而功能强大,在网络工具中有“瑞士军刀”的美誉. netcat可以作为类似于telent的客户端,也可以监听某个端口作为服务器,还可以作为扫描工具扫描对方主机的端口,还可以用来传输文件等.
瑞士军刀
TuneUp Utilities 是你PC的瑞士军刀——德国系统调校工具第一品牌 TuneUp Utilities,能优化系统性能、解决问题并帮助你定制系统,以满足你的需要!通过 TuneUp Utilities, 你能使 Windows 运行更快、更安全、更舒适...
UML(Unified Modeling Language,统一建模语言)是一种标准化的建模语言,广泛用于软件工程中以可视化、描述、构建和记录系统的结构和行为。UML 提供了多种图表,用于不同的建模需求,包括但不限于类图、对象图、用...
NC 瑞士军刀 扫描器
netcat瑞士军刀for windows,此工具功能那是相当的强大. netcat for windows. 此包中包含两个版本, 一个版本不带-e参数, 另一个参数比较全.
visual studio
瑞士军刀(NC),用过的都说好!!
Python:编程世界中的瑞士军刀
瑞士军刀,经典之作,网络安全必备软件,源码奉上!
nc 瑞士军刀增强版 不要骂我要分多啊。 修改这个有点辛苦了, 各位给点支持啊。 分多的就给分 没有分的话 留言 邮箱。直接发你哦。
大名鼎鼎的瑞士军刀NetCat就不需要过多介绍了吧