亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > Java > 正文

Java編程風格的改變

2024-07-14 08:44:01
字體:
供稿:網(wǎng)友
最近Stephan Schmidt在博客中發(fā)表了題為《下一代Java編程風格》的文章,闡述了他眼中Java編程風格的改變,以及未來的走向:許多公司和開發(fā)人員正在從Java轉(zhuǎn)向其他編程語言:Ruby、Python、Grrovy、Erlang或Scala等等。不過你可能做不到這一 點。即便如此,你也可以改變你的編程風格,獲取這些新語言的優(yōu)勢。事實上,在過去的15年中,Java編程風格也已經(jīng)有明顯變化了。

  Stephan在文章中提出了以下幾點:

  盡可能地標注final:讓所有東西不可變,把變量標為final可以阻止改變它的值。很多時候,重新為變量賦值會引入bug,你應該使用新的變量。除此之外,final可以提高代碼的可讀性。我針對這個話題還寫過一篇文章:《Java中所有變量都應該是final的》

  沒有setter:許多Java程序員會自然而然地為類中所有的字段加上setter。思考一下,真的每個字段都需要修改嗎?更好的方法是創(chuàng)建包含改變后狀態(tài)的新對象。此外,也試著去除getter,我們應該遵循“Tell, don’t ask”的思想。

  避免使用循環(huán)來操作List:從函數(shù)式編程那里獲得的經(jīng)驗,循環(huán)并不是進行集合操作最好方法。例如,我們可以使用Google Collections提供的過濾功能。


   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; }

  使用大量接口:領(lǐng)驅(qū)動設計已經(jīng)大行其道,一個應該拆分為多種“角色”,即實現(xiàn)多種接口,提高復用程度。方法應該面向“角色”,而不是面向特定的類。我在《不要在Java中使用String》一文中討論了更多這方面的內(nèi)容。

  使用Erlang風格的并發(fā):Java的并發(fā)特性(如lock和synchronized)過于低端,難以使用。Erlang風格的并發(fā)是一種更好的做法。Java平臺上已經(jīng)有了Akka和Actorom。此外,也可以使用java.util.concurrent中的Join/Fork和數(shù)據(jù)結(jié)構(gòu)進行編程。

  使用Fluent Interface:Fluent Interface可以使代碼更短,更容易編寫。Google Collections中的MapMaker是個不錯的示例:


      ConcurrentMap graphs = new MapMaker()
  .concurrencyLevel(32)
  .softKeys()
  .weakValues()
  .expiration(30, TimeUnit.MINUTES)
  .makeComputingMap(
  new Function() {
  public Graph apply(Key key) {
  return createExpensiveGraph(key);
  }
  });

  避免在DTO中創(chuàng)建getter和setter:如果你擁有簡單的DTO(Data Transfer Object),不要耗費精力去編寫getter和setter,直接使用公開的字段吧。不過在你無法完全控制代碼的使用情況時,還是小心為上。

  這篇文章發(fā)表之后,有許多人發(fā)表了不同的看法。其中Cedric Otaku發(fā)表了文章《下一代Java與現(xiàn)在差不多》予以回應,其中反對了Stephan提出的大部分觀點。

  盡可能final:太多final會降低代碼的可讀性,它無法代碼額外的好處。我已經(jīng)不記得上次因為重新給變量賦值而造成錯誤是什么時候了。值得一提的是,在字段以外的成員上標記final違反了Google的風格指南。

  避免setter:看上去不錯,不過這不現(xiàn)實。有些時候你不愿把所有的參數(shù)都通過構(gòu)造函數(shù)傳入。此外,如果使用對象池的時候,可變的對象會讓編程更為方便。Stephan不是第一個提出要將訪問器(accessor)從OO編程中移除的人,不過這個說法很明顯不可行。

  避免循環(huán):Java并不適合函數(shù)式編程風格,所以我認為使用Predicate的代碼反而難以讀懂。我估計大部分的Java程序員會同意我的觀點,即使他們已經(jīng)熟悉了閉包風格。

  單行代碼:這要視情況而定。并引入臨時變量把一個表達式拆開可以提高代碼可讀性,也容易為其設置斷點。

  使用接口:不錯的建議,但也不能過火。過去我也爭論過類似的話題,不過引入太多接口會導致細小類型的爆炸,使你高端的類型意圖變得模糊。

  Erlang風格并行:重申一點,使用Java設計以外的編程風格是危險的做法。java.util.concurrent中包含了非常有用的功能,我遇到過不少基于這些元素的Java抽象,它們要優(yōu)于Erlang風格的actor架構(gòu)。

  Fluent Interface:這個建議比較有趣,它與Stephan提出的另一個建議“避免setter”相違背。Fluent Interface制式setter的另一種形式,不是嗎?

  使用公有字段:不,千萬別這么做。你不會因為加了訪問器而后悔,但是我能保證你會因為一時偷懶,使用了公有字段而后悔莫及。

  在Cedric的文章之后,Stephan又對他的說法進行了補充:

  沒有setter并不代表你不能修改這個對象,我只是說純粹的setter不是面向?qū)ο蟮乃季S方式。例如,你覺得stop()和setStop(true)哪個更好一些?

  (針對Predicate代碼不易讀)我認為你的假設有誤。循環(huán)是“程序化”的代碼,而Predicate是經(jīng)過封裝的,可以重用的,易于理解的“對象”。這里并沒有函數(shù)式編程,這里是純粹的OO – 我提起FP只是因為我從那里“引入”了這個方式。

  還有許多人對Stephon和Cedric的文章發(fā)表了評論,例如有人支持Stephan的觀點,認為final的可以更好的表示出代碼的意圖。甚至有人提出:

  更簡單的解決方案是使用Scala :) – 不可變的狀態(tài)、統(tǒng)一訪問原則(字段、屬性、方法看上去一樣)、單行代碼、使用monads或函數(shù)來替代循環(huán)……這些特性都已經(jīng)在Scala中優(yōu)雅地體現(xiàn)出來了。

  您的Java編程風格是什么樣的,和過去相比有什么改變嗎?

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
福利一区福利二区微拍刺激| 色婷婷一区二区三区av免费看| 欧美在线高清| 日本系列欧美系列| 中文产幕区在线观看| 欧美综合国产精品久久丁香| 日韩伦人妻无码| 思思99re6国产在线播放| 日韩a**中文字幕| 亚洲视频在线不卡| 国产中文字幕视频在线观看| 国产成人99久久亚洲综合精品| 久久久久久欧美精品se一二三四| 嫩草影院国产精品| 一本色道久久88亚洲精品综合| 青青青在线视频播放| **网站欧美大片在线观看| 2020国内自拍视频| 久草综合在线观看| 亚洲日本aⅴ片在线观看香蕉| 国产日产精品一区二区三区四区| 欧美激情视频免费观看| 99久久99久久精品| 视频91a欧美| 婷婷在线视频观看| 18+激情视频在线| 成年人福利网站| 在线观看av一区| 欧美老妇交乱视频| 日韩 中文字幕| frxxee中国xxx麻豆hd| 91日韩中文字幕| 欧美日韩乱国产| 久久久久国产免费| 中文字幕国产精品一区二区| 亚洲天堂男人av| 国产精品视频久久久久久| 男人用嘴添女人下身免费视频| 一级黄色av片| 日韩国产在线观看一区| 日本大胆人体视频| 婷婷在线视频观看| 欧美一级电影久久| 亚洲中文字幕无码一区二区三区| 9999精品免费视频| 国产成在线观看免费视频| 天天干在线播放| 一本色道久久88| 日韩精品电影一区二区| 亚洲精品电影在线| 亚洲天堂视频在线观看| 青青草原在线亚洲| 免费h网站在线观看| 欧美日韩亚洲一| 久久综合另类图片小说| 久久国产综合精品| 日韩精品极品在线观看播放免费视频| 国产一区 二区| 中文字幕亚洲一区二区av在线| 青青久久av北条麻妃海外网| 国模娜娜一区二区三区| 日本高清视频网站| 一区二区三区日韩在线观看| 日本一区二区三区免费看| 成人观看免费视频| 少妇av在线播放| 蜜桃传媒视频第一区入口在线看| 综合激情五月婷婷| 激情欧美日韩一区| 国产亚av手机在线观看| 美女啪啪无遮挡| 日本不卡一二三区黄网| 国产亚洲精品中文字幕| 99久久伊人网影院| 亚洲自拍第二页| 99tv成人| 少妇人妻互换不带套| 中文在线网在线中文| 欧美精品999| 97视频免费在线观看| 老熟妇一区二区三区| 色悠悠久久久久| 国产欧美日韩丝袜精品一区| 男插女视频久久久| 日韩女同互慰一区二区| 亚洲人成影视在线观看| 伊人婷婷久久| 国产精品亚洲欧美日韩一区在线| 亚洲18私人小影院| 久久久99精品| 亚洲精品黄色| 亚洲一区二区三区免费视频| 一区二区视频在线播放| 你懂的在线观看网站| 亚洲性人人天天夜夜摸| 99久久自偷自偷国产精品不卡| 亚洲国产一区在线观看| 小舞被吸乳羞羞网站视频| 午夜国产一区二区三区| 97国产精品人人爽人人做| 国产精品免费福利| 亚洲国产天堂| 亚洲国产精品t66y| 欧美aa一级| 老司机亚洲精品一区二区| 欧美日韩一区在线观看视频| 亚亚洲欧洲精品| 任我爽在线视频| 日韩精品欧美精品| 一区二区三区不卡在线观看| 久久免费视频精品| 亚洲一区二区三区乱码| 国产精品第12页| 激情小说综合区| 亚洲经典一区二区三区| 亚洲欧美国产精品专区久久| 老司机福利在线观看| 久久精品视频免费观看| 国产精品成人网| 久久久久成人精品无码| 在线观看av日韩| 免费久久久久久| 亚洲精品一二三四| 8x8x8x视频在线观看| 日韩成人在线观看视频| 99久久国产综合精品女不卡| 日本中文字幕视频| 久久久xxx| 国内精品不卡| 亚洲欧美国产精品桃花| 日韩亚洲欧美综合| mm1313亚洲国产精品美女| 日韩精品一区二区三区四区五区| 天天干天天操天天做| 久久久久久久穴| 国产欧美精品一区二区色综合| 日本中文字幕精品| 天天操夜夜草| 毛片av免费在线观看| 99久久99久久精品国产片果冰| 5278欧美一区二区三区| 久久成人久久鬼色| 免费中文字幕在线观看| av电影高清在线观看| 天堂网站www天堂资源在线| 11024精品一区二区三区日韩| 久久久久久蜜桃一区二区| 色哟哟在线观看一区二区三区| 免费在线一区二区| 亚洲一区二区在线播放相泽| 国产毛片久久久久久| 91亚洲国产成人精品一区二三| 自拍视频亚洲| 男人操女人动态图| 日韩在线综合| 色偷偷亚洲第一综合| 欧美一区在线视频| 精品中文字幕视频| 草碰在线视频| 国产一区二区看久久| 青青草国产精品97视觉盛宴| 国产中文第一页| 久久久国产综合精品女国产盗摄| 成av人片在线观看www| 欧美特大特白屁股xxxx| 91久久免费观看| 亚洲第一网站男人都懂| 亚洲图片在线| 亚洲欧洲一区二区福利| 欧美成人精品不卡视频在线观看| 一个人免费观看日本www视频| 欧美日产一区二区三区在线观看| 99re视频在线观看| 国产亚洲欧美一区| 欧美亚洲三级| 国产一区二区三区在线免费观看| 国产三级电影在线| 免费观看黄色大片| 97精品伊人久久久大香线蕉| 乱人伦精品视频在线观看| va婷婷在线免费观看| 成人国产综合| 人人爽人人爽人人片av| 色狠狠色噜噜噜综合网| av伦理在线| 91蝌蚪精品视频| 欧美午夜影院在线视频| 亚洲国产欧洲综合997久久| 国产精品情趣视频| 成人免费视频网站入口| 热re99久久精品国99热蜜月| 中文字幕在线亚洲三区| 国产黄色片在线观看| 国产亚洲人成a在线v网站| 奇米精品一区二区三区| 国产在线观看精品一区二区三区| 亚洲香蕉av在线一区二区三区| 亚洲精品乱码久久久久久蜜桃动漫| 国产精品美女xx| 在线视频尤物| 免费欧美在线视频| 极品色影院av| 亚洲色图第四色| 亚洲r级在线观看| 韩国三级在线观看久| 18岁视频在线观看| 国产成人免费91av在线| 中文字幕+乱码+中文乱码www| 特黄视频免费看| 人妻一区二区三区| 伊人成人开心激情综合网| 色妞色视频一区二区三区四区| 亚洲精品456在线播放狼人| 免费观看黄色大片| 妞干网在线视频观看| 在线观看网站免费入口在线观看国内| 一本大道久久a久久精二百| 午夜精品视频在线观看一区二区| 免费视频一区三区| 国产真人做爰视频免费| 女人另类性混交zo| 曰本一区二区三区视频| 亚洲色图一区二区| 亚洲亚裔videos黑人hd| 精品久久在线播放| 国产农村妇女aaaaa视频| 奇米色777欧美一区二区| 日日夜夜精品视频免费| 榴莲视频成人app| 天天干天天爽天天操| 成人免费看视频| 亚洲二区在线观看| 亚洲视频一区二区免费在线观看| 人妻大战黑人白浆狂泄| 免费成人av电影| 美女视频免费观看网站在线| 亚洲欧美日韩不卡一区二区三区| 精品嫩草影院久久| 久久男人av资源网站| 538精品在线视频| 日韩午夜在线| 丁香啪啪综合成人亚洲| 欧美69xxxxx| 国产精品视频一区二区三区四区五区| 欧美一区二区三区播放老司机| 欧美日韩一二| 欧美性生活大片免费观看网址| 色呦呦国产精品| 精品国产一区二区三区麻豆免费观看完整版| 久久精品第一页| 国产精品对白久久久久粗| 91久久青草| 欧美一区二区成人6969| 亚洲人成影院在线观看| 夜夜爽99久久国产综合精品女不卡| 国产精品1024| 久操久操久操| 先锋资源中文在线| 国产66精品久久久久999小说| 亚洲日本黄色| 8090成年在线看片午夜| 极品美女扒开粉嫩小泬| 色是在线视频| 24小时免费看片在线观看| 成人h动漫精品一区| 少妇aaaaa| 2018亚洲男人天堂| 日本欧美韩国一区三区| 50度灰在线观看| 日本一二三不卡视频| 丝袜中文在线| 国产精品手机在线| 偷拍视屏一区| 日韩欧美国产成人精品免费| 亚洲天堂日韩av| 精品裸体bbb| 成人免费毛片糖心| www在线观看播放免费视频日本| 一区二区三区视频在线观看免费| 国产一卡不卡| 青青在线免费观看| 久久久久国产免费免费| 青青草原av在线| 麻豆传媒网站在线观看| 韩国三级一区| www.97av| 国产成a人亚洲精v品在线观看| 乱人伦视频在线| 国产精彩视频在线观看| 欧美一区二区三区电影| 一级黄色免费看| 91麻豆精品久久毛片一级| 麻豆精品视频在线| 欧美aa一级| 在线看视频你懂得| 一级免费在线观看| 懂色av粉嫩av蜜乳av| 欧美片网站yy| 亚欧洲精品视频在线观看| 久久久久久91亚洲精品中文字幕| 国产精品一二三在| 日韩成人精品在线观看| 亚洲aⅴ乱码精品成人区| 99久久精品免费看国产| 一个人免费播放在线视频看片| 色呦呦一区二区三区| 日韩中文字幕不卡视频| 国产麻豆一区二区三区精品视频| 欧美性xxxx极品hd欧美| 欧美性极品少妇精品网站| 欧美精品 - 色网| 国产美女免费观看| ㊣最新国产の精品bt7086| 久久精品一区二区三区不卡免费视频| 动漫美女无遮挡免费| 黑人巨大精品欧美一区二区免费| 亚洲va欧美va国产综合久久| 免费高清特黄a大片| 丰满少妇大力进入| 日本私人影院在线观看| 国产精品一区二区免费福利视频| aaa欧美日韩| 久久久国产高清| 国产香蕉久久精品综合网| 狠狠噜天天噜日日噜| 精品国产31久久久久久| 91欧美精品成人综合在线观看| 激情综合丝袜美女一区二区|