業(yè)務代碼開發(fā)總結(jié)

1凶杖、參數(shù)校驗

說明:每次開始編寫一個service,首先要做的就是參數(shù)校驗款筑。各種不為NULL智蝠、不為空的代碼隨處可見,很不爽奈梳。所以我們要找一種方法杈湾,來簡化這部分的業(yè)務無關(guān)代碼。

1.1. Apache給我們提供了一個工具類可以滿足我們的需求:org.apache.commons.lang3.Validate攘须,提供了各種校驗notBlank漆撞、notEmpty、notNull等于宙,可以滿足我們的一般需求叫挟。還可以自定義未通過校驗的提示語。

try {
      long num = 40;
      Validate.exclusiveBetween(1, 10, num, "num參數(shù)不在1-10范圍內(nèi)");
}catch (Exception e){
      e.printStackTrace();
}

1.2. Guava的Preconditions也實現(xiàn)了類似的功能限煞。

Preconditions.checkArgument(!(StringUtils.isEmpty(userName)
     || StringUtils.isEmpty(password)), "用戶名或密碼不能為空");

1.3. 實體類約束檢查:Hibernate-validator

BeanValidators.validateWithException(validator, dto);

2抹恳、分支判斷

說明:選擇正確的判斷語句會對性能有所提升。所以我們要合理的運用switch case署驻、if else奋献、while、for旺上。

  • 如果分支的條件判斷都是等值判斷瓶蚂,且值的范圍較小,則應該使用switch case而不是if else宣吱。因為switch內(nèi)部維護了一個路由表窃这,不需要像if else那樣挨個判斷。但是如果判斷是范圍征候,則只能用if else來操作了杭攻。

  • 雙層for循環(huán)判斷的情況:把內(nèi)層for拿出來,轉(zhuǎn)換成字典疤坝。

  • 使用策略模式和多態(tài)去掉if/else兆解、switch
    參考1
    參考2 利用設計模式替代項目中的if else
    注: if else 并不都適合用策略模式替代,只有每個分支足夠復雜跑揉,且每個分支用不同方法做同一件事锅睛,才需要使用策略模式埠巨。

3、編譯階段做檢查

改變編碼方式现拒,在編譯階段做錯誤檢查辣垒,而不是等到運行階段。
比如switch,如果參數(shù)拼寫錯誤,會走default分支哑诊,導致不可預測的結(jié)果。但是如果參數(shù)改為enum類型哥遮,則編譯階段就會發(fā)現(xiàn)該錯誤岂丘,及時改正陵究。

4、方法可見性

對共有方法進行判定奥帘,是否需要公布铜邮。

5、不斷去發(fā)現(xiàn)更新工具類

不應該一直使用項目里一些老舊的工具類寨蹋,應該不斷的去發(fā)現(xiàn)探索新的好用的工具類松蒜,例如Apache Commons、Google Guava或者Joda Date已旧。

6秸苗、靜態(tài)導入使用

Eg: import static com.google.common.base.Preconditions.checkNotNull;
好處:減少代碼的書寫量;可讀性高运褪。
缺點:如果濫用惊楼,可讀性會很差,代碼中都是方法名秸讹,看不到類名檀咙,類是極具描述性的表示的。
所以璃诀,如果方法具有很好的表述性含義弧可,則建議多用靜態(tài)導入。對于枚舉類劣欢,還是建議老老實實的書寫棕诵。

7、避免臟數(shù)據(jù)

寧愿讓程序出錯凿将、停止運行年鸳,也不要把一些錯誤的數(shù)據(jù)插入到數(shù)據(jù)庫。正式的線上系統(tǒng)丸相,數(shù)據(jù)的準確性是最重要的搔确。操作前,一定要反復的進行數(shù)據(jù)檢查。

第一步:基本判斷約束(null值等基本判斷)
第二步:實體屬性約束(滿足jsr 303等基礎判斷)
第三步:業(yè)務條件約束(需求提出的不同的業(yè)務約束)
第四步:處理業(yè)務邏輯

Eg: 下面貼出一段用戶發(fā)表文章的示例代碼:

  public ResponseEntity addArticle(Integer uid, Article article) {
    //參數(shù)數(shù)據(jù)檢驗
    // 1.用戶id不能為空膳算,且此用戶存在
    Preconditions.checkNotNull(uid);
    User user = userDao.findOne(uid);if(null== user){
      throw new RuntimeException("找不到當前用戶!");
    }
    // 2.文章的必要字段不能為空
    BeanValidators.validateWithException(validator, article);
    
    // 業(yè)務邏輯代碼
    article.setUser(user);
    ResponseEntity ret = articleDao.save(article);
    return ret;
  }

后面會抽時間不定期補充

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末座硕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涕蜂,更是在濱河造成了極大的恐慌华匾,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件机隙,死亡現(xiàn)場離奇詭異蜘拉,居然都是意外死亡,警方通過查閱死者的電腦和手機有鹿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門旭旭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人葱跋,你說我怎么就攤上這事持寄。” “怎么了娱俺?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵稍味,是天一觀的道長。 經(jīng)常有香客問我荠卷,道長模庐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任油宜,我火速辦了婚禮掂碱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘验庙。我一直安慰自己顶吮,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布粪薛。 她就那樣靜靜地躺著悴了,像睡著了一般。 火紅的嫁衣襯著肌膚如雪违寿。 梳的紋絲不亂的頭發(fā)上湃交,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音藤巢,去河邊找鬼搞莺。 笑死,一個胖子當著我的面吹牛掂咒,可吹牛的內(nèi)容都是我干的才沧。 我是一名探鬼主播迈喉,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼温圆!你這毒婦竟也來了挨摸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤岁歉,失蹤者是張志新(化名)和其女友劉穎得运,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锅移,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡熔掺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了非剃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片置逻。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖努潘,靈堂內(nèi)的尸體忽然破棺而出诽偷,到底是詐尸還是另有隱情坤学,我是刑警寧澤疯坤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站深浮,受9級特大地震影響压怠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜飞苇,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一菌瘫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧布卡,春花似錦雨让、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贸街,卻和暖如春庵寞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背薛匪。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工捐川, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逸尖。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓古沥,卻偏偏與公主長得像瘸右,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子岩齿,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

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