简化Java代码

样板代码Boilerplate Code的定义:[url=https://en.wikipedia.org/wiki/Boilerplate_code]https://en.wikipedia.org/wiki/Boilerplate_code[/url]

任何开发语言都存在样板代码的问题,相比之下Java语言的样板化更高。比如可能用10行代码其他语言就能实现的功能,用Java实现需要100行以上。可以Google一下“Reduce Boilerplate Code in xxxx”。

Java语言自身也比较保守,比如没有Python和Ruby的Meta-Programming能力。

JavaIDE都能定义模板后生成代码,也可以借助一些工具来自动化生成一些样板代码。但是问题在于生成的代码依然存在于工程中,需要维护。

这里说的样板不是指 [url=https://github.com/h5bp/html5-boilerplate]HTML5 Boilerplate[/url]、[url=https://github.com/springside/springside4]SpringSide[/url] 这些示例工程,而是项目代码中具体编写的代码。

模板Template:只包含布局或样式
骨架Skeleton:
样板Boilerplate:还包含具体的文字图形等数据

1)语言新特性
比如:Java7的try-with-resources、Java8的Lambda/Stream等。

那些丑陋的Java API [url=http://rensanning.iteye.com/blog/1843545]http://rensanning.iteye.com/blog/1843545[/url]
20年Java发展历程(1995-2015) [url=http://rensanning.iteye.com/blog/2195622]http://rensanning.iteye.com/blog/2195622[/url]

2)[url=https://projectlombok.org/]Project Lombok[/url]
为了封装类的成员变量,JavaBean规范需要为类定义getter和setter方法。但很少有人在这两个方法中写一些有意义的代码,但这两个方法还不可少,因为依据规范大量的框架还需要通过这两个方法来操作成员变量,这样就会在工程里发现大量的无意义的getter/setter方法。

Lombok基于注解Hack编译过程(javac/AnnotationProcessor、Eclipse/JavaAgent)来自动生成代码。

Java简化臃肿代码之Lombok [url=http://rensanning.iteye.com/blog/1930853]http://rensanning.iteye.com/blog/1930853[/url]

同样针对Android开发也有类似的工具:[url=https://github.com/excilys/androidannotations/]AndroidAnnotations[/url]

3)封装 Encapsulate
OOP三个基本特征:封装、继承、多态中的封装就是为了共用代码。编写共通组件也是开发中相当重要的一部分。

4)反射 Reflection
大部分开源框架都通过反射来调用工程里的代码。

5)重构 Refactoring
Rename、Extract Method、Pull Up/Push Down

6)开源框架 Frameworks
[url=https://github.com/google/guava]Google Guava[/url]、[url=http://commons.apache.org/]Apache Commons[/url]等。

7)依赖注入DI

8)其他
Spring MVC的注解式配置

参考:
https://www.infoq.com/articles/Concise-Java
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值