阅读更多

3顶
4踩

研发管理

翻译新闻 写更好的代码,还是写更少的代码?

2012-11-22 15:35 by 副主编 wangguo 评论(15) 有8256人浏览
先来看一个有趣的讨论:
引用
我宁愿让我的学生尽他们最大的努力去写更好的代码,而不是写更好的注释。——Uncle Bob Martin(设计模式和敏捷开发先驱,《代码整洁之道》作者)

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

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

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

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

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

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


更好的代码

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

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

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

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

更少的代码

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

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

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

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

英文原文:Code Better or Code Less?

相关阅读:写更少的代码
  • 大小: 7 KB
3
4
评论 共 15 条 请登录后发表评论
15 楼 qrg 2012-11-26 20:46
简单易懂,性能高的代码即可。
14 楼 dbhljyun 2012-11-26 12:04
层次分明、简单易懂就好,尽量不要在一个方法里实现太多功能
13 楼 yuanzhij 2012-11-26 09:08
magic_seek 写道
你的论题符合:没有任何事情比“非常有效率地做了一件本不应该做的事”更没用的了。——Peter Drucker。

因为通常最好的代码也是相对最少的那个。




越简单的代码越难理解,也就是要写更多更好的注释。

就像又要马儿跑,又要马儿不吃草。

很明显就是一个矛盾体。
12 楼 magic_seek 2012-11-23 16:54
你的论题符合:没有任何事情比“非常有效率地做了一件本不应该做的事”更没用的了。——Peter Drucker。

因为通常最好的代码也是相对最少的那个。
11 楼 freezingsky 2012-11-23 14:01
都是为同一个目标前进!
10 楼 allenny 2012-11-23 12:20
代码越简单,它离好就越近,当然,它首先必须是有用的代码
9 楼 雪飘寒 2012-11-23 09:45
确实总碰到这种情况
少代码,代码就一个方法,同一个功能五六百行,杂糅一起,看不懂
好代码,分层清晰,结构,名称都很明了,抽象出很多东西,同一个造成七八个方法,加起来比放一起多个50%吧

个人还是喜欢好代码,易于维护才是王道,写代码的目的还是给人看的,不是给计算机运行的。
8 楼 weng 2012-11-23 09:34
操,这两个有矛盾吗?
7 楼 gandilong 2012-11-23 09:00
机器对代码无谓多少!
代码的好坏只对人有意义。
最少的代码不一定是最好的,同样,最多的代码也不一定是最好的。
只有逻辑性一目了然,易于理解和维护的代码才是最好的。
6 楼 leavesforeye 2012-11-23 08:52
我一直想写更好的代码,每次我拿出更好的代码跟之前的代码比较,我都发现更好的代码写的更少。

代码的多少和好与不好存在某种微妙的联系,可是谁也说不准,但是我确实确定,在我的经验里更好的代码就是更少的代码。

如果退回过去,还要考虑编译器编译后的机器码。还要考虑代码移植性,我相信那时候更好的代码和更少的代码没什么好讨论的。都是在做更高质量的产品。

所以这个问题没啥意义。产品质量决定一切。
5 楼 java门徒CZP 2012-11-22 20:50
简单的代码最好
4 楼 kidneyball 2012-11-22 19:29
作者能举出一个在功能,可扩展性,可读性上都一致的前提下,长代码写得比短代码好的例子吗?
3 楼 gundumw100 2012-11-22 18:25
希望是好的,但失望总大于希望。
2 楼 wangcgen 2012-11-22 16:57
white_crucifix 写道
没什么好讨论的,只要双方不走极端,其实本质上说的是同一回事

,凡事要有个度! 极度的追求是愚蠢的,况且是这种 仁者见仁智者见智的观点
1 楼 white_crucifix 2012-11-22 16:19
没什么好讨论的,只要双方不走极端,其实本质上说的是同一回事

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Eclipse代码检视插件使用说明

    Eclipse代码检视插件,检查代码的规范性和合格性

  • eclipse中Smart Insert Mode作用

    最近在使用eclipse时,发现了Smart Insert Mode 具体这个有什么作用?谢谢各位大侠了。

  • eclipse里英文输入状态下的字体不对,如何更改?

    eclipse里英文输入状态下的字体不对,如何更改? public class ExampleFrame_05 extends JFrame {  //Frame应该携程JFramesdfdsfdsfasdfsdf-》英文状态下字体不一样  private static final long serialVersionUID=1L; 解决方法:你把输入法设置成全角输入了,切换

  • 关于Smart

    Ivar Jacobson提出了下一代软件过程的概念,指出:Agile更侧重于隐性,UP更侧重于显性;下一代软件过程的特点是Smart;关于过程的变迁,从隐性到显性,直到Smart。下一个大的技术趋势是主动软件,软件不再是被动的模式,而是主动的模式;Smart真正的含义有三个重要的环节,主动指导、主动观察、主动协助...等诸多观点。 熟悉敏捷开发的朋友,可以看到敏捷开发的四条宣言。个体和协作 胜...

  • Eclipse必备常识

    Eclipse介绍 1.windows--->perspective------>general-------->keys设置快捷键。 2.在Debug模式下如果想要查看一个变量的值,则光标选中变量名,右击,watch选项即可。 3.perspective与view perspective是一个个透视图,是由多个view组成。 view就是一个个小框框。 4.在Ecl...

  • eclipse光标/输入焦点变成中间断开的竖线

    今天碰到个情况,在写代码的时候突然发现输入焦点突然变成中间断开的竖线,如下图 这个问题之前碰到过,但是处理完后没有记录,这次百度google了半天都没找到什么原因,后来自己找了半天终于发现是Eclipse中的“smart insert mode”这个功能导致的,这个功能的作用这里就不解释了,网上有很多。功能在下图所示位置 ...

  • eclipse 常用快捷方式 及 启动参数说明

    完成单词:Alt+/ (对加快写代码的速度非常有用!) 重构之重命名:Shift+Alt+r 生成getter/setter: Shift+Alt+s,然后r 删除当前行:Ctrl+d 定位到上(下)一个编辑点: 标准为Alt+左(右)箭头,我改为了Alt+Q(W), 修改方法为: Windows->preference->keys, View标签页,找到...

  • Eclipse使用总结

    Eclipse使用总结 1、Eclipse中出现无法找到Maven包 症状:出现org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER, 且出现无法找到Maven的依赖的问题 解决方案:Build Path -》 Java Build Path -》Libraries -》Add Library -》Maven M...

  • eclipse的光标变粗,及其解决办法

    再用eclipese的过程中发现有时会光标变粗不知原因经过查找知道这是模式变了 从输入模式变为插入模式 解决方法:   有的有按键insert有些没有可以用图中的Smart Insert也可以 cit8u    ...

  • 关于ToolRunner.run()方法运行Hadoop程序原理分析

                            关于ToolRunner.run()方法运行Hadoop程序原理分析 文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在一亿人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍 一、相关的类及接口解释 二.关于ToolRunner典型用法关于ToolRunner ToolRunner与上图中的类、接口无任何的继承...

  • Myeclipse快捷键详述

    Compare - 比较Copy All from Left to Right (由左向右复制全部) Copy All from Right to Left (由右向左复制全部) Copy from Left to Right (由左向右复制) Copy from Right to Left (由右向左复制) Select Next Change (选取下一个变更) Select Pre...

  • Eclipse - Open Call Hierarchy (打开调用层级)

    Eclipse - Open Call Hierarchy (打开调用层级)

  • Eclipse 工具栏中external tools中没有run 和debug调试

    **前言** 经过好几天的挣扎,eclipse这个工具启动项目只能右击项目,通过maven build来启动,感觉 甚是麻烦,但是始终不知道怎么回事。经过网上搜索终于发现问题所在。下面说一下到底是哪里出问题了。 **内容** 问题: 如下图所示,他是没有run 和debug模式的 解决: 我们显示不出来run/debug这两个调试,是因为我们选择了resource这个视图,只要我们切换到java...

  • eclipse代码折叠/展开之笔记本快捷键设置【自己实践后有补充】

    首先  在eclipse 中开启设置代码折叠功能 1. windows->perferences->General->Editors->Structured Text Editors 可以看到Enable folding选项,打上勾就可以使用代码折叠功能,但还要在具体的语言中设置。 2、windows->perferences->Java->Editors->Folding

  • 【Eclipse】一些常见问题汇总

    一、Eclipse 异常关闭,导致重启失败,停止在Loading workbench 【解决】 删除“.metadata/.plugins ”下面的 org.eclipse.ui.workbench 和org.eclipse.ui.workbench.texteditor。

  • eclipse几个热键

    1)Alt + /修改處:視窗->喜好設定->工作台->按鍵->編輯->內容輔助。個人習慣:Shift+SPACE(空白)。簡易說明:編輯程式碼時,打sysout +Template啟動鍵,就會自動出現:System.out.println(); 。設定Template的格式:視窗->喜好設定->Java->編輯器->範本。2)程式碼自動排版:Ctrl+Shift+F修改處:視窗->喜好設定->工

  • JAVA项目更新打包部署之Eclipse外部工具升级版(Eclipse External Tools)

    这篇文章主要参考:http://www.iteye.com/topic/1120520       在这里我表示作者的思路非常好,赞一个~,可以很好的控制更新的文件省去了查找、粘贴、拷贝、打包的步骤,因为实现的功能都是一样,所以这篇文章的标题、部分内容同原著一致,这种更新打包方法非常适合中小型项目,尤其是项目上线阶段更新非常频繁的增量更新,虽然可以用hudson+maven+svn实现持续...

  • 从IDEA代码调试器的threads选项卡的一个细节谈如何学习编程

    一、背景 今天技术群里@段段同学提了一个很有意思的问题, IDEA的调试时, threads选项卡里,方法后面的 数字是啥意思?? 有些同学说是代码行数。但是我们发现有些代码并不是代码行数,而且还有 -1, 这是什么鬼?? 我们从这个很不起眼的问题,来讲述如何分析问题,如何学习。 二、研究 2.1 猜测 猜测要有上下文,首先这是调试界面,显然是给你提供调试的一些参考。 而数...

  • ★ Eclipse 3.0 RC2 热键表 (中英对照解说版,Default) ★

    ★ Eclipse 3.0 RC2 热键表 (中英对照解说版,Default) ★Author:sungo Date:2004/06/16 (三)◎阅读说明:冒号 ( : )后的蓝色标注热键为Eclipse预设的标准热键,空白即表示Eclipse并未对该项目设热键;红色标注选项表示常用或重要热键;teal色标注选项表示可以启动该热键的范围。◎热键修改处:Window->Preference->Wo

  • Eclipse快捷键(中英文对照)

    Toggle Folding (程序代码折迭、展开功能 开启/关闭) :Ctrl+键盘右方数字区的'/' Toggle Insert Model (Smart Insert模式 开启/关闭) : Ctrl+Shift+Insert Undo (复原前次作业) :Ctrl+Z US ASCII Encoding (将编码变更为 ASCII) UTF-16BE Encoding (将编码变...

Global site tag (gtag.js) - Google Analytics