<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          聊聊 Service 命名與設(shè)計

          共 1638字,需瀏覽 4分鐘

           ·

          2021-01-09 22:28

          點擊上方藍色“小哈學Java”,選擇“設(shè)為星標

          回復“資源”獲取獨家整理的學習資料!


          Service 類到底是什么含義?我相信如果碰到一個叫 SomethingService 的類,沒法馬上明白它到底起什么作用。



          說實話,我們都很困惑。


          經(jīng)過多年的專業(yè)開發(fā),在大量的代碼中游走,有一點是顯而易見的,開發(fā)人員不太擅長給事物命名。


          作為一個菜鳥開發(fā)者,我知道當看到 SomeService 或 WhateverManager 類,或者是 WhatevsManagerService 時,你都會不知所措或疑惑不解。


          Class 命名就像工作頭銜


          BD?實際是一個銷售人員。Social Media 專家?可能是 3 周學會如何在 Instagram 上發(fā)布貓咪照片。軟件工程師?實際上是堆砌代碼的碼農(nóng)。


          工作頭銜和工作角色有時候不掛鉤,我們更喜歡把頭銜弄得比角色更花哨。


          Class 命名也是如此。


          服務(wù)(service)類


          任何以 Service 為后綴的代碼基本上都是一個邏輯垃圾箱。任何添加到程序中的新功能,最后總是以某種服務(wù)類的方式來實現(xiàn)。


          一個服務(wù)類需要大量的構(gòu)造函數(shù)參數(shù),使得測試起來非常麻煩。要測試一個新方法 GetUserCount()?可能需要 mock 7 個完全不相關(guān)的類來實例化這個服務(wù)類。


          如果 GetUserCount() 只依賴于服務(wù)類中的一個構(gòu)造函數(shù)參數(shù),那么最好把它移到自己的類中。這樣一來,你就有一個非常簡單的類,只有一個構(gòu)造函數(shù)參數(shù)。


          當然,單獨的 GetUserCount 類看起來不是那么酷,但至少你知道它到底是做什么的。


          測試變得輕而易舉。


          Manager 類


          你很可能見過類似 UserManager 這樣的類,它管理用戶。


          像服務(wù)類一樣,它們也是邏輯垃圾箱。但是有一點區(qū)別。如果說服務(wù)類是一個普通的垃圾箱,那么 Manager 類就像一個紙板垃圾箱,它更特殊一點。


          你會面臨和服務(wù)類一樣的處理單元測試的問題。在做最微小的操作之前,你需要 mock 一大堆東西。


          Util 類和 Helper 類


          "我們不知道把這些代碼塞在哪里好,所以就弄了一個 Util 類"。


          這些都是煩人的東西。關(guān)于這一點,沒有什么好說的了。


          怎么破?


          很簡單。給出與職責相匹配的合適名稱。把一個類命名為GetUser,并且只有一個方法,這并不丟人。實現(xiàn)也簡單,每個人都知道它是做什么的。容易進行單元測試。


          停止代碼膨脹,簡化這些類。比如,構(gòu)建只有一個方法的類。


          關(guān)于作者:


          Nicklas Millard 是一家快速發(fā)展中的銀行擔任軟件工程師,負責構(gòu)建關(guān)鍵任務(wù)的金融服務(wù)基礎(chǔ)設(shè)施。


          此前,他曾是 Big4 高級技術(shù)顧問,為商業(yè)客戶和政府機構(gòu)開發(fā)軟件。


          他的 LinkedIn:https://www.linkedin.com/in/nicklasmillard/


          英文原文:

          https://medium.com/datadriveninvestor/the-true-meaning-of-service-and-manager-class-names-d09a08731fd9


          END


          有熱門推薦??

          1.?JDK 16 即將發(fā)布,新特性速覽!

          2.?SpringBoot 配置 ELK 環(huán)境

          3.?Jar 包依賴沖突排查思路和解決方法

          4.?基于 SpringBoot,來實現(xiàn)MySQL讀寫分離技術(shù)

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點“在看”,關(guān)注公眾號并回復?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

          謝謝支持喲 (*^__^*)

          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲首页AV | 1000色看免费 | 蜜桃网址一区在线观看 | 国产麻豆传媒在线 | www.168亚洲毛片基地 |