代码越少越干净吗?

本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划

在我眼中,干净的代码就是简单、易于理解的代码。不过分设计,模板文件尽可能地少,语义明确。那么,这样是否就意味着代码越少越干净呢?

我不这么认为。大多数情况下,更少的代码往往语义更模糊,更难理解(因此更难维护)。

当我使用jBehave工作和测试元过滤时,我写了类似于下面的代码:

public Embedder configuredEmbedder() {
   Embedder embedder = super.configuredEmbedder();
   ignoreStoriesAndScenariosWithMetaInformationParameter(embedder, "ignore");
   return embedder;
}

private void ignoreStoriesAndScenariosWithMetaInformationParameter(Embedder embedder, String ignoreParameter) {
    embedder.useMetaFilters(Arrays.asList("-" + ignoreParameter));
}

在之后对这些代码的讨论中,我的一个同事表示,他刚刚删除了一些“没有必要”的私有方法,于是代码变成了这样:

@Override
public Embedder configuredEmbedder() {
   Embedder embedder = super.configuredEmbedder();
   embedder.useMetaFilters(Arrays.asList("-ignore"));
   return embedder;
}

显然,方法更短,代码更少了。对我们来说,使用这样的类,或许能让我们在工作时对这个方法所发生的变化一目了然。但是如果有新加入项目的人呢,并且这家伙之前从未使用过jBehave呢?对他而言,长一点的代码反而可以获取更多的信息,即使他不知道jBehave是如何工作的,不清楚“元过滤器”是什么,不懂minus的意思——但是至少能理解我们想要实现的目标。

当我试图解释自己的看法时,其他开发人员虽然同意我的观点,但却认为通过添加注释也可以达到相同的效果。是的,我完全同意,添加注释肯定是有效的。这只是风格问题。我个人不喜欢注释而已,不过,在上述这种情况下,或许注释的确是更好的选择,因为我们可以通过注释解释元过滤器代码和jBehave层文件之间的联系。

所以最后,代码成了这样的:

@Override
public Embedder configuredEmbedder() {
   Embedder embedder = super.configuredEmbedder();
   // ignore stories and scenarios with meta information parameter @ignore.
   embedder.useMetaFilters(Arrays.asList("-ignore"));
   return embedder;
}

当然你可以说,这样一个小小的事例不值一提。但是,一个项目的风格,我认为是非常重要的。你也可以通过讨论具体的例子找到一种普遍的风格。也许其他开发人员会因此而考虑他的代码是否会给新加入的同事带来困惑,从而去添加注释,而不是将方法缩成减一行代码。

结论

干净的代码并不总意味着更少的代码。所以,你需要在编写更多的小方法和缩减代码行数之间权衡得失。关于编码风格,以后我会再发帖子予以讨论。

你更喜欢哪种解决方案,为什么呢?欢迎留下各位的看法。

译文链接:http://www.codeceo.com/article/is-clean-code-less-code.html
英文原文:Is Clean Code less Code?
翻译作者:码农网 – 小峰
转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]

发表我的评论

取消评论
表情 插代码

Hi,您需要填写昵称和邮箱!

  • 必填项
  • 必填项

网友评论8

  1. ignoreStoriesAndScenariosWithMetaInformationParameter
    真不覺得長度有點問題?

    nnkken2015-05-10 13:50 回复
  2. 我就觉得上面方法命名是否太长了…造成可读性比较差,而且还是比较偏向注释.代码简介,适当清晰的注释,我觉得这是一种良好的习惯.

    sky疯子2015-05-10 21:34 回复
  3. 你真想多了,我觉得这个私有方法对于类来说干的事是特定的,并不通用,写多了真是冗余……

    打本男同学2015-05-11 02:00 回复
  4. 私有方法没必要写的那么清楚

    大水怪2015-05-11 09:52 回复
  5. 第一次读那个私有方法的时候,看到前面几个单词我已经不想继续读下去了,太长了。虽然有时好的命名可以节省注释,但是这种命名还不如注释。

    Troy2015-05-11 09:58 回复
  6. 肯定 ,必须的 ,楼主个人之间

    joine2015-08-18 22:50 回复
  7. [衰][围观]

    762016-02-17 21:51 回复