Code Review
今天在圓老師的帶領下,進行了一次Code Review废累。盡管之前也知道一些Code Smell邓梅,然鵝,在限時訓練的時候邑滨,就顧不上那么多了日缨,各種隨意,直接導致代碼中有很多需要重構的地方掖看。
問題集中體現(xiàn)在以下幾個方面:
- Test setup(在多個測試中都
new
了同一個對象匣距,所以應該把這個對象提到@Before
中,減少冗余代碼) - 移動方法到正確的類中(將方法根據(jù)對應的功能放在對應的類中乙各,不要在一個類中寫與該類無關的方法)
- 空行/格式化(寫完代碼記得要養(yǎng)成格式化的習慣墨礁,在適當?shù)牡胤郊由峡招校瑤椭砬宕a結構)
- 類名是名詞耳峦,方法名用動詞
- 重構一次運行一次測試(每次重構都要運行測試恩静,來檢驗這次重構是否正確叹洲,如果正確鞠值,刪除掉以前的代碼)
- 消除重復代碼
- 分離職責(每個方法都實現(xiàn)自己對應的職責趟大,不要一個方法實現(xiàn)太多職責)
- 去除不必要臨時變量
這么多問題的存在炭懊,證明锹杈,還是沒有培養(yǎng)出好的編程習慣熄攘,以后一定要控制我自己~減少 Code Smell 的發(fā)生撕瞧,培養(yǎng)良好的編程習慣尤蛮,從我做起县匠。
三層架構
三層架構是一個分層式的軟件體系架構設計理念风科,適用于所有項目。
1. 表示層(表示層一般使用下面??這幾種語言框架)
- JSP
- JS
- Angular
- Reactive
作用:用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù)乞旦,為用戶提供一種交互式操作的界面贼穆。主要對用戶的請求接受,以及數(shù)據(jù)的返回兰粉,為客戶端提供應用程序的訪問故痊。
2. 業(yè)務邏輯層(同層之間可以自己調(diào)用,這一層是一些服務玖姑,服務之間可以互相調(diào)用)
作用:主要負責對數(shù)據(jù)層的操作愕秫。也就是說把一些數(shù)據(jù)層的操作進行組合慨菱。用戶輸入的數(shù)據(jù)通過業(yè)務邏輯層的處理發(fā)給數(shù)據(jù)層,數(shù)據(jù)層返回的數(shù)據(jù)通過業(yè)務邏輯層發(fā)送給界面展示戴甩。
業(yè)務邏輯層無疑是系統(tǒng)架構中的核心部分符喝。它處于表示層和數(shù)據(jù)訪問層中間,起到了數(shù)據(jù)交換中承上啟下的作用
3. 持久層(或數(shù)據(jù)訪問層)
作用:主要完成各個對數(shù)據(jù)文件的操作等恐,是對數(shù)據(jù)庫的操作洲劣,具體為業(yè)務邏輯層或表示層提供數(shù)據(jù)服務。
三層架構的特點:
- 低層不能調(diào)用上層课蔬。
- 同層之前可以互相調(diào)用囱稽,但是,持久層和展示層之間不能互相調(diào)用二跋。
三層架構的優(yōu)點:
- 開發(fā)人員可以只關注整個結構中的某個一層战惊。
- 實現(xiàn)高內(nèi)聚低耦合的思想。
- 降低層與層之間的依賴扎即。
- 結構更加明確吞获。
- 方便后期維護。
MVC(Model-View-Controller)
MVC 把用戶界面獨立到一些文件中(Views)谚鄙,把一些和用戶交互的程序邏輯(Controller)單獨放在一些文件中各拷,在 Views 和 Controller 中傳遞數(shù)據(jù)使用一些專門封裝數(shù)據(jù)的實體對象,這些對象闷营,統(tǒng)稱為Models烤黍。
三層架構和 MVC 的區(qū)別
MVC 屬于展示層的一種架構模式,和三層架構沒有必然關系傻盟。
三層架構是系統(tǒng)架構速蕊,屬于宏觀的解決方案∧锔埃可能會需要三種不同職能的程序員來維護规哲,每個人可以專注于自己擅長的模塊,分別進行開發(fā)诽表。
MVC 是設計模式唉锌,屬于微觀的解決方案。是同一個程序員可以接觸的東西竿奏,目的是為了讓HTML代碼和業(yè)務邏輯代碼分開袄简,讓代碼看起來更加清晰,便于開發(fā)议双。