日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

聊聊 Service 命名与设计

發(fā)布時間:2024/4/11 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聊聊 Service 命名与设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊上方“朱小廝的博客”,選擇“設(shè)為星標(biāo)”

后臺回復(fù)"書",獲取

后臺回復(fù)“k8s”,可領(lǐng)取k8s資料

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

說實話,我們都很困惑。

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

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

Class 命名就像工作頭銜

BD?實際是一個銷售人員。Social Media 專家?可能是 3 周學(xué)會如何在 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ù)。

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

測試變得輕而易舉。

Manager 類

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

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

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

Util 類和 Helper 類

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

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

怎么破?

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

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

關(guān)于作者:

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

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

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

英文原文:

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

想知道更多?描下面的二維碼關(guān)注我

后臺回復(fù)"技術(shù)",加入技術(shù)群

后臺回復(fù)“k8s”,可領(lǐng)取k8s資料

【精彩推薦】

  • 原創(chuàng)|OpenAPI標(biāo)準(zhǔn)規(guī)范

  • 如此簡單| ES最全詳細(xì)使用教程

  • ClickHouse到底是什么?為什么如此牛逼!

  • 原來ElasticSearch還可以這么理解

  • 面試官:InnoDB中一棵B+樹可以存放多少行數(shù)據(jù)?

  • 微服務(wù)下如何解耦?對于已經(jīng)緊耦合下如何重構(gòu)?

  • 如何構(gòu)建一套高性能、高可用、低成本的視頻處理系統(tǒng)?

  • 架構(gòu)之道:分離業(yè)務(wù)邏輯和技術(shù)細(xì)節(jié)

  • 星巴克不使用兩階段提交

點個贊+在看,少個 bug?????

總結(jié)

以上是生活随笔為你收集整理的聊聊 Service 命名与设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。