Java8 函数式对齐约定————Eclipse自定义代码风格

引言

Java8 的函数式代码风格在Stream的使用上尤为突出。尽管我们可以通过连续调用函数完成一系列操作,但是其可读性并不能保证,还需要有与之相辅的Code Style。例如,请尝试阅读下面两段完全相同的代码:

未遵守约定格式:

int result = values.stream().filter(e -> e > 3).filter(e -> e % 2 == 0).map(e -> e * 2).findFirst().orElse(0);

遵守约定格式:

int result = values.stream().filter(e -> e > 3).filter(e -> e % 2 == 0).map(e -> e * 2).findFirst().orElse(0);

可以看到,第一段代码虽然采用了函数式编程,但是依然没有增加代码的可读性;而第二段代码由于采用了Java8 的约定格式而极大地提升了代码的可读性。这就是Java 8 “对齐约定”,它建议我们对齐函数组合在垂直方向上的各点

Eclipse的代码格式化功能可以很好的解决这个问题。

Eclipse自定义格式化

打开Window -> Preferences

说明:Active profile 一栏不论是什么都无所谓。

调整下图中红框内的设置,与下图保持一致。

你可以尝试其他的风格设置,不过经过尝试,上图的设置为最佳设置,且不会导致过度的格式化。

设置完成后,进行效果测试:

最终效果:

鸣谢

《Java 8 习惯用语 第 4 部分——提倡使用有帮助的编码》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java核心篇之JVM--day3

Java核心篇之JVM--day3 Java JVM详解--通俗易懂教程 JVM:Java虚拟机的简称。 谈到JVM,通常会聊到三个问题: 1. 什么时候触发Java GC? 2. 对什么东西进行Java GC? 3. 如何进行Java GC? 首先解决第…

Java8————Lambda表达式(一)

本博客翻译自官方教程《Syntax of Lambda Expressions》 Lambda表达式的语法 一个Lambda表达式由以下部分构成: 1、圆括号内的一个由逗号分隔的参数列表。 interface CheckPerson {boolean test(Person p); } CheckPerson.test方法包含一个参数,p&a…

使用springboot来实现WebLog

使用websocket技术实时输出系统日志到浏览器端,实现WebLog boot-websocket-log: spring boot系统中使用websocket技术实时输出系统日志到浏览器端,因为是实时输出,所有第一时间就想到了使用webSocket,而且在spring boot中&#…

Java8————Lambda表达式(二)

译者注:文中内容均来自于官方教程《Lambda Expressions》,但是由于英汉语言的差异,部分语句官方描述过于冗余,因此译者根据通常状况的理解做了微调,但不会影响表达的含义。比如: 原文:You want …

设计模式---观察者模式介绍与理解

设计模式---观察者模式介绍与理解: 观察者模式原理:类似于定牛奶业务 1. 奶站,subject:登记注册,移除,通知(register,remove,notify) 2. 用户,…

CRS-4995: The command ‘start resource’ is invalid in crsctl.

ntp时间调整后,节点1,advm 和acfs offline 处理办法: /u01/app/12.2.0.1/grid/bin/crsctl stop crs /u01/app/12.2.0.1/grid/bin/crsctl start crs 曾经尝试如下命令不起作用 /u01/app/12.2.0.1/grid/bin/acfsload start /u01/app/12.2…

抽象工厂模式升级版————泛型化实现

引言 今天回看之前总结的抽象工厂模式的实现《Java常用设计模式————抽象工厂模式》,聚焦于抽象工厂模式的缺点,试着改进了一下。 回顾一下抽象工厂模式的缺点: 在添加新的产品类型时,难以扩展抽象工厂来生产新种类的产品。…

发生在“注解”@的那些事儿

注解: 自定义注解: 注解和类,接口一样,属于一种数据类型 注解可以放在类,方法,属性上面 注解可以有属性,也可以没有属性 注解有作用范围 ( 源码期间(String&#…

Java常用设计模式————建造者模式

引言 建造者模式(Builder Pattern)使用多个简单对象一步一步构建成一个复杂的对象。这种类型的设计模式属于建造型模式,它提供了一种创建对象的最佳方式。 一个Builder会一步步构建最终的对象。该Builder类是独立于其他对象的。 实现概要 …

使用动态代理解决网站字符集编码问题:(之前通过拦截器)

使用动态代理解决网站字符集编码问题:(之前通过拦截器) 设计模式: 在软件开发的过程中,遇到相识的问题,将问题的解决方式抽象为模型(套路) 单例模式(静态代码只会执行一…

Java 多线程 —— AQS 原理

引言 使用Condition实现生产者-消费者模型,并与wait和notify实现的效果相对比。 wait/notify模拟生产者-消费者 面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法能够支持2个生产线程以及10个消费者线程的阻塞…

设计模式---简单工厂设计模式

先定义一个抽象类Animal: 定义两个动物类继承这个类: 定义一个专门生产动物的工程类: 最后定义一个测试类: 按照这个动物工厂类,你会发现,如果动物一多的话,就需要写很多重复的方法,…

Java 多线程 —— ThreadLocal

一、引言 ThreadLocal是Java帮助实现线程封闭性的典型手段。 作用:提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量的传递复杂度。同时也用来维护线程中的变量不被其他线程干扰。 …

Java8————方法引用

译者注:本篇博客翻译自Oracle官方教程《Method References》。作为Java 8 新特性Lambda表达式的引申概念,博主依然采用官方文档的方式来学习这一重要的概念。希望对各位同道有所帮助。 方法引用 使用Lambda表达式创建匿名方法。但是,有时候…

设计模式---适配器设计模式

设计模式---适配器设计模式 什么事适配器: 1. 在使用监听的时候,需要定义一个类事件监听器接口 2. 通常接口中有多个方法,而程序中不一定所有的方法都用到,但又必须重写,很繁琐 3. 适配器简化了这些操作&#xff0c…

Java并发编程实战————售票问题

引言 现有一个需求如下: 有10000张火车票,每张票都有一个编号,同时有10个窗口对外售票,如何确保车票的正常售卖? 程序一:使用List 问题的解决办法都是从我们最最熟悉的角度思考。程序一,我们…

多线程相关知识

多线程相关知识 两个线程进行通信:通过等待(wait)唤醒(notify)机制 三个或三个以上线程进行通信:通过notifyAll()方法 /* * 1. 在同步代码块中,用哪个对象锁&#xff0c…

Eclipse集成PyDev5.2.0开发插件

引言 在进行Python学习的时候,希望不使用IDLE进行开发,但是其他的IDE如PyCharm可能需要一段短暂时间的上手,因为开发过Java,所以使用能够集成到Eclipse上的PyDev插件进行开发应该会好一些。 但是在安装PyDev的时候发生了一些问题…

PostMan 四种常见的 POST 提交数据方式

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 协议规定 POST 提交的数据必须放在消息主体(entity-body&#xff0…

Java并发编程实战————对象的组合

引言 对象的组合,是《Java Concurrency in Practice》中第四章引入的课题。这并不是一个并发的概念。 为了可以将现有的线程安全组件组合为更大规模的组件或程序,而不是每次内存访问都进行分析以确保程序是线程安全的。这一章将介绍一些组合模式&#…