专栏首页Java学习网什么是好代码

什么是好代码

什么是好代码

你如何定义好的代码?本文通过咨询65个开发人员同一个问题从而得出了一个伪科学的答案。 首先我们相信写好代码是非常重要的。为什么呢?首先,好代码比差代码更有趣,成本更低。其次,代码好,就意味着你正在构建的产品有可能会更好。第三,也是非常关键的一点,写出好的代码是我们的职责:毕竟,我们的工作就是写代码。 方法 由于此65名开发人员都是我们某个职位的应聘者,所以这意味着这些样品开发人员大多偏向于使用Java或Scala技能,并且通常有着5年及以上的工作经验。 问题统一:“怎样写好代码?你如何定义好代码?”并且在面试时由同一人(面对面或通过电话),历时约1年,从2014年1月至2015年1月,来执行此地调查。 梳理这些问题的答案之后,可以分为31个不同的类,每组至少有2个相似的答案。例如,下面这些答案通通归纳为可读一类: 可读。

  • 人脑可阅读。
  • 能自我解释。
  • 人们能读懂。
  • 很容易理解。
  • 不用5分钟就能了解。
  • 没有文档,你也可以阅读并理解。
  • 可读,新来的开发人员也能够理解。
  • 就如同文本一样可读。
  • 易于阅读,直线化的思维。

结果 这65位开发人员的答案总共统计出288条不同的内容,平均一个人4.43条。 当然,目前最常见的答案是,代码必须可读(78.46%),几乎10分之8的开发人员认为,好的代码应该易于阅读和理解。 然后是可测试的/测试过的(29.23%),这说明好的代码应当是经过自动化测试的(或至少是有可能执行测试的)。25%的受访者认为,良好的代码还应该是简单的——不过于复杂,当然还应该是可以工作的,意味其能够按照我们的意愿正常执行功能。前五条是,代码应该是可维护的(21.54%)。 奇怪的是,我们发现有两项内容是关于同一主题的:文档和代码注释。有的开发人员认为代码应该自文档化(不需要用文档解释),而有些开发人员则表示应该在代码中着重于注解,说明代码目的。 其他的,如,可扩展的/可重复使用的,恰当的命名规律,代码解耦或者称为小方法的重要性——当然这个“小”在不同开发人员的眼中概念还不一样:“10-15行”到“<50行”莫衷一是。 探讨 面试中的回答给了我们很多有趣的可用于分析的定量数据,而有些数据非常值得一提。下面这些是我们点赞量最多的答案,有的让我们会心一笑,有的有理有据值得深思:

  • 再怎么测试也不会发生崩溃。
  • 不要创建那些并不需要的玩意儿。
  • 任何人都需要写点注释。好不好以后自然会知道。
  • 你看到它,它才有意义。
  • 你需要了解业务目的。
  • 你需要做的不仅仅是写代码。
  • 不需要太过于特立独行。
  • 差的代码也能做很多事情,但就是通通做不好。

开发人员重视代码的可读性和可理解性并不奇怪。但是令人有一点点惊讶的是,其余的回答却差不多至少有50%的差异! 以下这四条就属于让人惊讶的后者:

  • 可维护:因为我们大多数人都有过维护别人代码的经历(或者一段时间以后维护自己的代码),并且很有可能度过了一段非常悲惨的日子。所以,我们期待更多的开发人员能够编写出可维护的代码。可能有的人假设代码可读,那么一定易于维护,所以就忽略了这一条。
  • 可工作:编写代码的目的,就是能够为他人提供价值。编写可工作的代码,是我们的首要任务之一。所以我们很惊讶为什么并不是每一个开发人员的答案中都囊括这一条。
  • 可测试/已测试过的:测试的重要性在这里我就不多说了,相信大家已经听到过不知道几百遍了。
  • 高效:话说,答案中包含“高效”的开发人员比强调“不可过早优化”的开发人员,要多两倍,而众所周知,“过早的优化是万恶之源”,所以,这太让人纳闷了。

最后,我们总结出好代码的定义: “好的代码是可读的,可理解的,覆盖了自动化测试的,不过于复杂,并且能办好我们需要它做的事情。”

本文分享自微信公众号 - Java学习网(javalearns),作者:javas

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 优秀程序员是如何处理糟糕代码的

    优秀程序员是如何处理糟糕代码的 可能你一行不好的代码也从来没有写过。这是有可能的,但在现实中又不太可能。 现实情况是,和这个星球上的其他所有程序员一样,你会产出...

    用户1289394
  • 如何编写可靠的代码

    介绍 当你得到一个小older-my但你妻子说我不是老愤世嫉俗者。这是为什么许多老男人不要说(或写)那么多:我们知道没有人注意。当你获得AARP另一个问题是,你...

    用户1289394
  • 为什么优秀的程序员也是优秀的设计师

    为什么优秀的程序员也是优秀的设计师 在高科技行业中,我听过很多伟大的开发人员声称对设计一无所知。他们将设计当作是一个神秘的世界,一个编程世界之外的世界。他们觉得...

    用户1289394
  • 你是否有过代码写的太烂不敢开源的经历?

    作为一个写了十几年代码的老司机,在入行不久会有这种心理,老是觉得自己写的代码见不得人,主要还是基础不牢固写出来的代码属于见光死的程度,从测试人员那边的感觉就能测...

    程序员互动联盟
  • 系统设计之降低复杂性

    熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。热力学第二定律,又称“熵增定律”,表明了在自然过程中,一个孤立的系统总是从最初的集中、有序的排列状态...

    肉眼品世界
  • 最令程序员沮丧的十件事

    er双旦快乐~! 软件开发是一个伟大的工作——和任何其他工作一样,它也有它的缺点。下面的十件事就是大多数程序员关于编程所无法苟同的。 对于非软件开发人员来说,...

    智能算法
  • 12 岁开始学编程,17 岁总结了 7 个重要教训!

    原文:https://www.freecodecamp.org/news/7-important-lessons-about-programming-that-...

    Java技术栈
  • 最令程序员恐惧的 10 件事,据说还没有全部“躺枪”的

    软件开发是一个伟大的工作——和任何其他工作一样,它也有它的缺点。下面的10件事就是大多数程序猿关于编程所无法苟同的。 对于非软件开发人员来说,开发人员的工作看起...

    BestSDK
  • [译] 代码审查之最佳实践

    原文:https://medium.com/palantir/code-review-best-practices-19e02780015f 作者:Robert...

    江米小枣
  • 最令程序员沮丧的 10 件事

    软件开发是一个伟大的工作——和任何其他工作一样,它也有它的缺点。下面的10件事就是大多数程序员关于编程所无法苟同的。

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券