使用有帮助的编码

1,编写可读的代码
2,函数式代码并不总是比命令式代码短。更重要的是它富于表达。简洁但难读的代码毫无帮助。
    函数式代码的设计目标是比命令式代码更简洁,但这不能保证它更可读
    考虑下面这个示例:

    清单 5. 联接选定名称的函数式代码
    ```
    System.out.println(names.stream().filter(name ->name.startsWith("J")).filter(name -> name.length() > 3).map(name -> name.toUpperCase()).collect(Collectors.joining(", ")));
```
      在清单 5 中,filter、map 和其他函数式元素增加了代码的表达能力。但您可能注意到,此代码让人感觉更加生硬,而不是更简洁。

    尽管它只有两行,但此代码仍需要花大量精力来阅读和理解。您的眼睛需要努力寻找函数调用在何处结束,下一个调用从何处开始。该代码非常简短,但它编写得非常生硬。编写这种毫无帮助的代码只有一个理由:开发人员肯定憎恨与他共事的每个人。
3,让您的代码简洁而不是生硬
    生硬的代码可能非常简短,但仍然很难读懂。简洁的代码也简短,但读起来让人感觉愉悦且容易理解。
    不幸的是,我观察到不熟悉 Java 8 的程序员常常忽略此约定,甚至在多次提醒后才想起它。经验更丰富的程序员应在代码评审期间执行此约定。优秀的 Java 8 IDE 也可以提供帮助,提供使用这类约定的快捷方式。

    清单 6 展示了我们使用对齐约定重写清单 5 的代码的结果:

    清单 6. Java 8 中的函数组合


    ```
    System.out.println(
             names.stream()
                  .filter(name -> name.startsWith("J"))
                  .filter(name -> name.length() > 3)
                  .map(name -> name.toUpperCase())
                  .collect(Collectors.joining(", ")));
    ```
    在这里,我们看到了来自清单 5 的同一段生硬的代码,但各个点已在垂直方向上对齐,而且我们抵抗住了将多个条件组合到一个参数中的诱惑。结果,每行都具有凝聚力:范围狭小而专注,仅含一个明确的任务。 
4,遵守 Java 8 对于函数组合中的垂直对齐点的约定(一种有帮助的约定)
    尽管可能看似可有可无,但遵循 Java 8 的对齐约定肯定非常有益。
    遵循此约定的代码更容易阅读、理解和解释。我们可以在详细检查每部分之前,快速掌握整个目标。
    元素非常明确且容易找到,有助于更快地修改。如果我们想包含另一个条件,或者删除或修改一个现有条件,那么可以相对容易找到该行并执行更改。
    该代码更容易维护,这表明我们关心团队的其他开发人员。除了让代码更容易维护之外,编写有帮助的代码还能显著提高团队士气。  
结束语
保持每行代码都简短紧凑是一种不错的做法,但是走极端可能导致代码变得生硬难读。要提高表达能力,可以问自己代码是否容易理解。要提高可读性,可采用 Java 8 垂直对齐各点的约定。使用这些简单技巧,就能创建出简洁、富于表达且可读的函数式代码。

参考:https://www.ibm.com/developerworks/cn/java/j-java8idioms4/index.html?ca=drs-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值