聊聊 Service 命名與設計程序員的成長之路關注共 1534字,需瀏覽 4分鐘 ·2021-01-13 16:53 程序員的成長之路互聯(lián)網/程序員/技術/資料共享?關注閱讀本文大概需要 2 分鐘。Service 類到底是什么含義?我相信如果碰到一個叫 SomethingService 的類,沒法馬上明白它到底起什么作用。說實話,我們都很困惑。經過多年的專業(yè)開發(fā),在大量的代碼中游走,有一點是顯而易見的,開發(fā)人員不太擅長給事物命名。作為一個菜鳥開發(fā)者,我知道當看到 SomeService 或 WhateverManager 類,或者是 WhatevsManagerService 時,你都會不知所措或疑惑不解。Class 命名就像工作頭銜BD?實際是一個銷售人員。Social Media 專家?可能是 3 周學會如何在 Instagram 上發(fā)布貓咪照片。軟件工程師?實際上是堆砌代碼的碼農。工作頭銜和工作角色有時候不掛鉤,我們更喜歡把頭銜弄得比角色更花哨。Class 命名也是如此。服務(service)類任何以 Service 為后綴的代碼基本上都是一個邏輯垃圾箱。任何添加到程序中的新功能,最后總是以某種服務類的方式來實現(xiàn)。一個服務類需要大量的構造函數(shù)參數(shù),使得測試起來非常麻煩。要測試一個新方法 GetUserCount()?可能需要 mock 7 個完全不相關的類來實例化這個服務類。如果 GetUserCount() 只依賴于服務類中的一個構造函數(shù)參數(shù),那么最好把它移到自己的類中。這樣一來,你就有一個非常簡單的類,只有一個構造函數(shù)參數(shù)。當然,單獨的 GetUserCount 類看起來不是那么酷,但至少你知道它到底是做什么的。測試變得輕而易舉。Manager 類你很可能見過類似 UserManager 這樣的類,它管理用戶。像服務類一樣,它們也是邏輯垃圾箱。但是有一點區(qū)別。如果說服務類是一個普通的垃圾箱,那么 Manager 類就像一個紙板垃圾箱,它更特殊一點。你會面臨和服務類一樣的處理單元測試的問題。在做最微小的操作之前,你需要 mock 一大堆東西。Util 類和 Helper 類"我們不知道把這些代碼塞在哪里好,所以就弄了一個 Util 類"。這些都是煩人的東西。關于這一點,沒有什么好說的了。怎么破?很簡單。給出與職責相匹配的合適名稱。把一個類命名為GetUser,并且只有一個方法,這并不丟人。實現(xiàn)也簡單,每個人都知道它是做什么的。容易進行單元測試。停止代碼膨脹,簡化這些類。比如,構建只有一個方法的類。關于作者:Nicklas Millard 是一家快速發(fā)展中的銀行擔任軟件工程師,負責構建關鍵任務的金融服務基礎設施。此前,他曾是 Big4 高級技術顧問,為商業(yè)客戶和政府機構開發(fā)軟件。他的 LinkedIn:https://www.linkedin.com/in/nicklasmillard/英文原文:https://medium.com/datadriveninvestor/the-true-meaning-of-service-and-manager-class-names-d09a08731fd9推薦閱讀:Github爆火!21歲理工男開源的十六進制編輯器爆贊Java在線考試系統(tǒng)5T技術資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內回復「2048」,即可免費獲取!!微信掃描二維碼,關注我的公眾號朕已閱? 瀏覽 20點贊 評論 收藏 分享 手機掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 聊聊 Service 命名與設計小哈學Java0聊聊 Service 命名與設計我是程序汪0編程5分鐘,命名2小時!聊聊命名規(guī)則!編程幫0編程5分鐘,命名2小時:聊聊命名規(guī)范!目標檢測與深度學習0命名與必然性命名與必然性0命名與必然性索爾·克里普克(Saul Kripke 1941—),美國著名的邏輯學家和哲學家,模態(tài)邏輯語義學創(chuàng)始命名與必然性命名與必然性0命名與必然性《命名與必然性》講述事物是怎樣被命名的?這取決于名稱的起源和歷史,而不取決于被命名對象的偶然特性。丘命名與必然性命名與必然性0命名與必然性命名與必然性是美國當代著名邏輯學家和哲學家,模態(tài)邏輯語義學創(chuàng)始人之一的克里普克所著。本書是其代表作。點贊 評論 收藏 分享 手機掃一掃分享分享 舉報