Board logo

标题: Java编程风格的改变 [打印本页]

作者: qingqing3721    时间: 2011-9-1 01:29     标题: Java编程风格的改变

最近StephanSchmidt在博客中发表了题为《下一代Java编程作风》的文章,阐述了他眼中Java编程作风的改动,以及将来的走向:许多公司和开发人员正在从Java转向其他编程言语:Ruby、Python、Grrovy、Erlang或Scala等等。不过你能够做不到这一点。即便如此,你也可以改动你的编程作风,获取这些新言语的优势。事实上,在过去的15年中,Java编程作风也已经有分明变化了。
  Stephan在文章中提出了以下几点:
  尽能够地标注final:让一切东西不可变,把变量标为final可以阻止改动它的值。很多时分,重新为变量赋值会引入bug,你应该使用新的变量。除此之外,final可以进步代码的可读性。我针对这个话题还写过一篇文章:《Java中一切变量都应该是final的》
  没有setter:许多Java程序员会自然而然地为类中一切的字段加上setter。思索一下,真的每个字段都需要修改吗?更好的方法是创立包含改动后状态的新对象。此外,也试着去除getter,我们应该遵照“Tell,don’task”的思想。
  避免使用循环来操作List:从函数式编程那里获得的经验,循环并不是停止集合操作最好方法。例如,我们可以使用GoogleCollections提供的过滤功能。淘宝网特步
  Predicate canDrinkBeer = new Predicate()
  public boolean apply(HasAge hasAge)
  return hasAge.isOlderThan( 16 );
  List beerDrinkers = filter(persons, canDrinkBeer);
  使用单行代码:Java是一门繁杂(noisy)的言语,我们应该编写更准确的代码。尝试将代码写为一行。例如:
  public int add(int a, int b) return a + b;
  使用少量接口:范围驱动设计已经大行其道,一个应该拆分为多种“角色”,即完成多种接口,进步复用程度。方法应该面向“角色”,而不是面向特定的类。我在《不要在Java中使用String》一文中讨论了更多这方面的内容。
  使用Erlang作风的并发:Java的并发特性(如lock和synchronized)过于低端,难以使用。Erlang作风的并发是一种更好的做法。Java平台上已经有了Akka和Actorom。此外,也可以使用java.util.concurrent中的Join/Fork和数据结构停止编程。
  使用Fluent Interface:FluentInterface可以使代码更短,更容易编写。GoogleCollections中的MapMaker是个不错的示例:
  ConcurrentMap graphs = new MapMaker()
  .concurrencyLevel(32)
  .softKeys()
  .weakValues()
  .expiration(30, TimeUnit.MINUTES)
  .makeComputingMap(
  new n()
  public Graph apply(Key key)
  return createExpensiveGraph(key);
  );




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0