<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 類到底有啥意義?

          共 1434字,需瀏覽 3分鐘

           ·

          2021-01-14 16:16

          Java技術(shù)棧

          www.javastack.cn

          關(guān)注閱讀更多優(yōu)質(zhì)文章



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

          說(shuō)實(shí)話,我們都很困惑。

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

          作為一個(gè)菜鳥(niǎo)開(kāi)發(fā)者,我知道當(dāng)看到 SomeService 或 WhateverManager 類,或者是 WhatevsManagerService 時(shí),你都會(huì)不知所措或疑惑不解。

          Class 命名就像工作頭銜

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

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

          Class 命名也是如此。另外,關(guān)注公眾號(hào)Java技術(shù)棧,在后臺(tái)回復(fù):手冊(cè),可以獲取一份最新的阿里 Java 開(kāi)發(fā)手冊(cè),非常齊全。

          服務(wù)(service)類

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

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

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

          當(dāng)然,單獨(dú)的 GetUserCount 類看起來(lái)不是那么酷,但至少你知道它到底是做什么的。

          測(cè)試變得輕而易舉。

          Manager 類

          你很可能見(jiàn)過(guò)類似 UserManager 這樣的類,它管理用戶。

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

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

          Util 類和 Helper 類

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

          這些都是煩人的東西。關(guān)于這一點(diǎn),沒(méi)有什么好說(shuō)的了。

          怎么破?

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

          停止代碼膨脹,簡(jiǎn)化這些類。比如,構(gòu)建只有一個(gè)方法的類。另外,關(guān)注公眾號(hào)Java技術(shù)棧,在后臺(tái)回復(fù):面試,可以獲取我整理的 Java 系列面試題和答案,非常齊全。

          作者:Nicklas Millard
          英文原文:https://medium.com/datadriveninvestor/the-true-meaning-of-service-and-manager-class-names-d09a08731fd9
          翻譯:高可用架構(gòu)
          譯文:https://m.sohu.com/a/440722848_268033/







          關(guān)注Java技術(shù)棧看更多干貨



          戳原文,獲取精選面試題!
          瀏覽 97
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  色婷婷色99国产综合精品 | 免费尻屄视频 | 草草视频在线 | 久久人人妻人人人人妻性色aV | 欧美A级视频在线观看 |