java高效編碼

構(gòu)造器參數(shù)太多

  1. 需要解決成員變量太多碟刺,使用多個構(gòu)造方法不直觀的問題
  2. 直接使用get set無法限制bean中那些數(shù)據(jù)是必要的
  • 解決方法:Builder模式
  • 內(nèi)部使用一個子類作為構(gòu)造器
  • 構(gòu)造器的get set返回本身,這樣可以鏈?zhǔn)秸{(diào)用
  • 最終的構(gòu)造方法里檢測必要的字段是否有值

不需要實例化的對象建丧,構(gòu)造器私有

  • xxxUtil xxTools 內(nèi)部都是static方法腿堤,不需要實例化
  • 防止使用者實例該對象

不要創(chuàng)建多余對象

  • 自動裝箱導(dǎo)致的多余對象
Long sum = 0L;
for(long i = 0; i<xx; i++) {
  sum = sum + i; // sum是包裝類型阀坏,i是基本類型,所以這里會先自動裝箱成對象
}
  • 使用static

避免使用終結(jié)方法

  • finaliza()方法虛擬機(jī)不保證此方法會被按時執(zhí)行或是執(zhí)行
  • 釋放資源必須顯式釋放笆檀,不能依賴此方法

類和成員變量可訪問性最小化

  • 主要作用是為了解耦
  • 只向外暴露接口忌堂,實體間調(diào)用只依賴與接口,具體實現(xiàn)解耦

可變性最小化

  • 類盡量做成不可變類
  • 類不可變就線程安全了
  • 類成員變量私有误债,不提供成員變量設(shè)置浸船,返回對象時返回復(fù)制的值等

優(yōu)先使用復(fù)合,而不是繼承

  • 使用父類的方法會破壞父類的包裝性
  • 例如父類實現(xiàn)類內(nèi)部相互調(diào)用寝蹈,重寫一個方法都可能影響其他方法
  • 復(fù)合就是內(nèi)部包含一個類李命,使用這個類完成具體方法

接口優(yōu)于抽象類

  • 一般來說,接口只能定義類將會有的行為箫老,抽象類里可以具體實現(xiàn)
  • 接口更為純粹封字,不依賴于具體實現(xiàn),而抽象類可以有實現(xiàn)耍鬓。并且支持多實現(xiàn)
  • 可以先定義一個接口阔籽,再聲明一個抽象類,實現(xiàn)類繼承這兩個(jdk的set等都是這么實現(xiàn)的)

可變參數(shù)的使用

  • 如果可變參數(shù)中至少要一個參數(shù)
int sum(int a, int... args)

返回零長度的數(shù)組和集合牲蜀,而不是null

  • 客戶端可以用判空

優(yōu)先使用標(biāo)準(zhǔn)異常

  • 代碼重用笆制,使用jdk已經(jīng)提供的
  • IlegalAraumentException 參數(shù)異常

使用枚舉而不 是常量

  • 還可以枚舉內(nèi)使用另一個內(nèi)部枚舉當(dāng)作構(gòu)造方法參數(shù),以使枚舉有不同的性質(zhì)
  • 即策略枚舉

局部變量作用域最小化

  • 即不要一開始就聲明局部變量涣达,要到使用的時候再使用
  • 防止不應(yīng)該使用局部變量的地方能夠修改局部變量

精確計算不適用float和double

  • 使用 int long BigDecimal

當(dāng)心字符串連接的性能

  • 每一次拼接都需要將字符串復(fù)制一遍

控制方法的大小

  • 方法盡量再50-80行

常用性能指標(biāo)

  • 并發(fā)數(shù)約等于在線人數(shù)的5%-15%
  • 吞吐量 每分鐘证薇、沒秒鐘處理數(shù)量
  • 一般平均響應(yīng)時間短,吞吐量就大箩张,反之小。但是吞吐量大熟掂,響應(yīng)時間未必短

常見性能優(yōu)化

  • 避免過早優(yōu)化
  • 性能測試,定位性能瓶頸
  • 分而治之二蓝,逐步優(yōu)化
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鸥诽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钠龙,老刑警劉巖碴里,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睡互,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)图贸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門撒汉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睬辐,“玉大人溯饵,你說我怎么就攤上這事丰刊∽那桑” “怎么了码泛?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卿城。 經(jīng)常有香客問我瑟押,道長嫩舟,這世上最難降的妖魔是什么家厌? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任掰吕,我火速辦了婚禮殖熟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘斑响。我一直安慰自己菱属,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布恋捆。 她就那樣靜靜地躺著照皆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沸停。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天昭卓,我揣著相機(jī)與錄音愤钾,去河邊找鬼。 笑死候醒,一個胖子當(dāng)著我的面吹牛能颁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播倒淫,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼伙菊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了敌土?” 一聲冷哼從身側(cè)響起镜硕,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎返干,沒想到半個月后兴枯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡矩欠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年财剖,在試婚紗的時候發(fā)現(xiàn)自己被綠了悠夯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡躺坟,死狀恐怖沦补,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咪橙,我是刑警寧澤夕膀,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站匣摘,受9級特大地震影響店诗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜音榜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一庞瘸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赠叼,春花似錦擦囊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涧郊,卻和暖如春贯被,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妆艘。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工彤灶, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人批旺。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓幌陕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汽煮。 傳聞我的和親對象是個殘疾皇子搏熄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容