概述 當一個方法包含大量的布爾參數時,方法是很脆弱的,由此還可能會產生兩個問題: 1. 方法不容易被理解 2. 給方法的使用者造成一定困擾,可能會產生一些預期之外的結果 本文要介紹的重構策略“為布爾方法命名”,可以有效地避開這兩個問題。 為布爾方法命名 大量布爾參數帶來 ...
概要 有些開發者在編寫方法時,可能較少地去思考一個問題:方法放在這個class中是否合適 他們可能會覺得:這個方法已經實現xxx功能了,放在哪個class都一樣的,class不就是一個裝方法的容器嘛。 我贊同class是一個裝東西的容器,且不僅限於方法。 但是,容器是有區別的。本文要講的 移動方法 ,是一種讓方法放進合適的class的重構策略。 選擇合適的容器 生活中我們會用到杯子和箱子,杯子和箱 ...
2016-04-24 18:47 14 3948 推薦指數:
概述 當一個方法包含大量的布爾參數時,方法是很脆弱的,由此還可能會產生兩個問題: 1. 方法不容易被理解 2. 給方法的使用者造成一定困擾,可能會產生一些預期之外的結果 本文要介紹的重構策略“為布爾方法命名”,可以有效地避開這兩個問題。 為布爾方法命名 大量布爾參數帶來 ...
前言 “藝術源於生活”——代碼也源於生活,你在生活中的一些行為習慣,可能會恰如其分地體現在代碼中。當實現較為復雜的功能時,由於它包含一系列的邏輯,我們傾向於編寫一個“大方法”來實現。為了使項目便於維護,以及增強代碼的可讀性,我們有必要對“大方法”的邏輯進行整理,並提取出分散的“小方法”。這就 ...
為了方便大家閱讀這個系列的文章,我弄了個目錄匯總。 開篇和結尾 開篇有益 (2016-04-23) 終篇總結 (2016-06-02) 方法、字段重構 移動方法 (2016-04-24) 提取方法、提取方法對象 (2016-04-26) 方法、字段的提升和降低 ...
概述 閱讀文章時,如果某個段落已經傳達了關鍵信息,我們可能就不會逐字逐句地將文章讀完,因為我們已經知道了這篇文章的核心內容。與此類似,如果方法中某些條件判斷可以得到結果,我們應該盡快返回該結果。 盡快返回可以帶來三個好處 節省閱讀代碼的時間——如果方法能夠盡快返回,后面的代碼邏輯 ...
概述 “分離職責”是經常使用的一個重構策略,當一個類擔任的職責太多時,應按職責將它拆分成多個類,每個類分別承擔“單一”的職責,也就是讓每個類專心地做“一件事情”。 SRP原則 在面向對象編程中,SRP原則是一個非常重要的原則(SOLID原則都很重要),在展示示例前,我們先了解一下SRP原則 ...
概述 當方法返回類型或屬性類型為集合時,有些開發者會千篇一律地使用IList<T>集合。然而IList<T>具有集合的所有操作,這意味着調用者不僅可以讀取集合信息,還能夠修改集合。業務需求本來只是為調用者提供一個可讀的集合,例如數據的查詢和展示,但當方法返回 ...
概述 代碼是從命名開始的,我們給類、方法、變量和參數命名,我們也給解決方案、工程、目錄命名。在編碼時,除了應該遵守編程語言本身的命名規范外,我們應該提供好的命名。好的命名意味着良好的可讀性,讀你代碼的人無需太多的注釋,就能通過名稱知道它是什么,它能做什么事兒,以及它應該怎么用。 我們命名、命名 ...
簡述 如果方法有超過3個以上的參數,調用方法時就會顯得冗詞贅句。這時將多個參數封裝成一個對象,調用方法會顯得干凈整潔。這就是本文要講的重構策略“引入參數對象”——將方法的參數封為類,並用這個類的對象替換方法中原有的參數。 引入參數對象 下圖演示了這個重構策略,OrderSerivce表示訂單 ...