如何寫出更好的Java代碼(4)

發表于:2014-05-27來源:不詳作者:不詳點擊數: 標簽:
配置管理 那現在你的代碼可以編譯了,倉庫也搭建起來了,你需要把你的代碼帶出開發環境,走向最終的發布了。別馬虎了,因為 自動化 執行從長遠來看

  配置管理

  那現在你的代碼可以編譯了,倉庫也搭建起來了,你需要把你的代碼帶出開發環境,走向最終的發布了。別馬虎了,因為自動化執行從長遠來看,好處是大大的。

  Chef,Puppet,和Ansible都是常見的選擇。我自己也寫了一個可選方案,Squadron。這個嘛,當然了,我自然是希望你們能下載下它的,因為它比其它那些要好用多了。

  不管你用的是哪個工具,別忘了自動化部署就好。

  庫

  可能Java最好的特性就是它擁有的這些庫了。下面列出了一些庫,應該絕大多數人都會用得上。

  Java的標準庫,曾經還是很不錯的,但在現在看來它也遺漏掉了很多關鍵的特性。

  Apache Commons

  Apache Commons項目有許多有用的功能。

  Commons Codec有許多有用的Base64或者16進制字符串的編解碼的方法。別浪費時間自己又寫一遍了。

  Commons Lang是一個字符串操作,創建,字符集,以及許多工具方法的類庫。

  Commons IO,你想要的文件相關的方法都在這里了。它有FileUtils.copyDirectory,FileUtils.writeStringToFile, IOUtils.readLines,等等。

  Guava

  Guava是一個非常棒的庫,它就是Java標準庫"所缺失的那部分"。它有很多我喜歡的地方,很難一一贅述,不過我還是想試一下。

  Cache,這是一個最簡單的獲取內存緩存的方式了,你可以用它來緩存網絡訪問,磁盤訪問,或者幾乎所有東西。你只需實現一個CacheBuilder,告訴Guava如何創建緩存就好了。

  不可變集合。這里有許多類:ImmutableMap, ImmutableList,甚至還有ImmutableSortedMultiSet,如果這就是你想要的話。

  我還喜歡用Guava的方式來新建可變集合:

  // Instead of

  final Map map = new HashMap();

  // You can use

  final Map map = Maps.newHashMap();

  有許多像Lists, Maps, Sets的靜態類,他們都更簡潔易懂一些。

  如果你還在堅持使用Java 6或者7的話,你可以用下Collections2,它有一些諸如filter和transform的方法。沒有Jvaa 8的stream的支持,你也可以用它們來寫出連貫的代碼。

  Guava也有一些很簡單的東西,比如Joiner,你可以用它來拼接字符串,還有一個類可以用來處理中斷。

  Gson

  Google的Gson是一個簡單高效的JSON解析庫。它是這樣工作的:

  final Gson gson = new Gson();

  final String json = gson.toJson(fooWidget);

  final FooWidget newFooWidget = gson.fromJson(json, FooWidget.class);

  真的很簡單,使用它會感覺非常愉快。Gson的用戶指南中有更多的示例。

  Java Tuples

  我對Java一個不爽的地方就是它的標準庫中居然沒有元組。幸運的是, Java tuples工程解決了這一問題。

  它也很容易使用,并且真的很贊:

  Pair func(String input) {

  // something...

  return Pair.with(stringResult, intResult);

  }

  Joda-Time

  Joda-Time是我用過的最好的時間庫了。簡直,直接,容易測試。你還想要什么?

  這個庫里我最喜歡的一個類就是Duration,因為我用它來告訴說我要等待多長時間,或者過多久我才進行重試。

  Lombok

  Lombok是一個非常有趣的庫。它通過注釋來減少了Java中的飽受詬病的樣板代碼(注:setter,getter之類的)。

  想給你類中的變量增加setter, getter方法?太簡單了:

  public class Foo {

  @Getter @Setter private int var;

  }

  現在你可以這么寫了:

  final Foo foo = new Foo();

  foo.setVar(5);

  這里還有更多的示例。我還沒在生產代碼中用過Lombok,不過我有點等不及了。

  Play框架

  備選方案:Jersey或者Spark

  在Java中實現REST風格的WEB服務有兩大陣營:JAX-RS和其它。

  JAX-RS是傳統的方式。你使用像Jersey這樣的東西來將注解和接口,實現組合到一起來實現WEB服務。這樣做的好處就是,你可以通過一個接口就能很容易創建出一個調用的客戶端來。

  Play框架是在JVM上實現WEB服務的截然不同的一種方式:你有一個routes文件,然后你去實現routes中那些規則所引用到的類。它其實就是個完整的MVC框架,不過你可以只用它來實現REST服務。

原文轉自:http://it.deepinmind.com/java/2014/05/21/better-java.html

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97