google HTML5 Firefox Ubuntu java 开源 linux nginx linux命令 微软 wordpress apache centos Android php 程序员 shell mysql Windows Python

写更好的代码,还是写更少的代码?

先来看一个有趣的讨论:

引用

我宁愿让我的学生尽他们最大的努力去写更好的代码,而不是写更好的注释。——Uncle Bob Martin(设计模式和敏捷开发先驱,《代码整洁之道》作者)

比起“更好”的代码,我更宁愿学生们写更少的代码。——Bob Marshall

没有任何事情比“非常有效率地做了一件本不应该做的事”更没用的了。——Peter Drucker

这引发了一场关于“写更好的代码”还是“写更少的代码”的讨论。

一个好的折中方案就是,用更少的代码写出更好的代码。代码的优劣或多少不是看代码行数,也不是其他一些愚蠢的东西,而主要看的是有意义的代码。在这场讨论中,支持“更少代码”的一方,关心的不是使代码尽可能紧凑、避免重复,等等,而是他们认为只要合理,尽可能少些或不写代码。

我们是否应该将重点放在决定什么应该做,什么不应该做,还是应该竭力去改进我们的软件开发技能?

无论如何,在没有一个上下文环境的情况下,谁也无法合理地回答这个问题。下面我们来分开讨论。

更好的代码

这是站在开发者的角度来说的。在大部分中、大型软件开发公司中,开发者与产品管理者或产品所有者之间几乎没有任何直接联系,这意味着,管理者对于产品的构建知识知道得很少,甚至一点都不知道。

当然,作为一个开发人员,我可以,也应该分享我关于构建特定功能的一些看法,但是我也不太可能有足够的信息在很多情况下做出正确的判断。比如,我认为不应该添加某一个该死的功能,就算我是对的,但如果客户让加,我的意见被采纳的几率会很小。当然,也不完全是这样,你可以说服客户改变想法,但这种情况很少。

如果你曾经参与过一个大的合同项目,每个细节在前期都已经确定好了,并且由于内部政治原因,客户方面也没人想去更改任何东西,你知道我在说什么。如果你没有在类似公司工作过,你很幸运。

在这种情况下,最好专注于构建更好的代码,而不是更少的代码,因为很难说什么是有意义的更少的代码。

更少的代码

这是站在产品管理者的角度。对于他们来说,他们首要的重点应放在构建更少的代码上。是的,我知道他们不写代码,但这仍然应该是他们首要的目标。

产品经理应该知道哪些功能能够提升产品的价值,哪些不能。他们通常更适合与客户进行这样的讨论,比如客户想要哪些功能、费用、不必要的功能、无用的代码等。

作为开发者,你的领导希望你创造更多的价值,或更少的浪费,把重点放在构建更少的代码上。当然,你可以自由地选择编写更好的代码,或者更少的代码,但是似乎选择后者要更加明智。同时,你的工作效率很大程度上取决于你完成的工作,因此,你应该用更少量的代码完成更多的功能,并注重这些代码的质量,而不是使用大量的代码来解决问题。

很显然,这场争论不会有一个确定的答案。站在产品经理的立场,我会建议Peter Drucker的观点,而对于开发者,我会建议Bob Martin的观点。

英文原文:Code Better or Code Less?

延伸阅读

评论