- 机构级别:普通会员
- 信用等级:
资料认证
未通过身份证认证
未通过办学许可认证
- 学校浏览人次:次
- 加盟时间:2017年03月10日
西安尚学堂Java培训专家:代码越少越干净吗?
在很多西安尚学堂Java培训专家的眼中对于干净代码的定义就是简单、易于理解的代码。不过分设计,模板文件尽可能地少,语义明确。那么,这样是否就意味着代码越少越干净呢?不尽然。大多数情况下,更少的代码往往语义更模糊,更难理解(因此更难维护)。
当使用jBehave工作和测试元过滤时,工程师写了类似于下面的代码:
1 2 3 4 5 6 7 8 |
public Embedder configuredEmbedder() { Embedder embedder = super.configuredEmbedder(); ignoreStoriesAndScenariosWithMetaInformationParameter(embedder, "ignore"); return embedder; } private void ignoreStoriesAndScenariosWithMetaInformationParameter(Embedder embedder, String ignoreParameter) { embedder.useMetaFilters(Arrays.asList("-" + ignoreParameter)); } |
在之后对这些代码的讨论中,其他工程师表示,可以删除了一些“没有必要”的私有方法,于是代码变成了这样:
1 2 3 4 5 6 |
@Override public Embedder configuredEmbedder() { Embedder embedder = super.configuredEmbedder(); embedder.useMetaFilters(Arrays.asList("-ignore")); return embedder; } |
显然,方法更短,代码更少了。对我们来说,使用这样的类,或许能让我们在工作时对这个方法所发生的变化一目了然。但是如果有新加入项目的人呢,并且这个人之前从未使用过jBehave呢?对他而言,长一点的代码反而可以获取更多的信息,即使他不知道jBehave是如何工作的,不清楚“元过滤器”是什么,不懂minus的意思——但是至少能理解我们想要实现的目标。
通过添加注释也可以达到相同的效果。可以通过注释解释元过滤器代码和jBehave层文件之间的联系。所以最后,代码成了这样的:
1 2 3 4 5 6 7 |
@Override public Embedder configuredEmbedder() { Embedder embedder = super.configuredEmbedder(); // ignore stories and scenarios with meta information parameter @ignore. embedder.useMetaFilters(Arrays.asList("-ignore")); return embedder; } |
可以通过讨论具体的例子找到一种普遍的风格。也许其他开发人员会因此而考虑他的代码是否会给新加入的同事带来困惑,从而去添加注释,而不是将方法缩成减一行代码。
结论
干净的代码并不总意味着更少的代码。所以,需要在编写更多的小方法和缩减代码行数之间权衡得失。