您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么理解web中整潔的類和函數”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么理解web中整潔的類和函數”吧!
言歸正傳,為什么函數要短小呢,如何才能是自己的函數更加短小?第一個問題我也無法證明,只能告訴你短小的函數看起來更加清晰,更加容易理解。那怎么才能讓函數變得更加短小呢?很簡單,抽離方法。將一些代碼抽離成另一個函數。什么樣的長度才是合適的呢?我認為不必過于追求短。這里的長度我們可以以代碼塊的層來定義,對于下面這種代碼相信任何人看了都會崩潰吧。
public void doSomething() {
for() {
...
while() {
...
if() {
...
}else {
...
}
}
}
}
所以每個函數中有一層或兩層為最佳,每層代碼塊最好不超過3行。這是我認為最佳的函數長度,當然,這個也可以根據個人習慣稍作調整。
只做一件事
如果說長度還可以根據個人習慣,那么“只做一件事”的要求應該是大家都應該遵守的公約了。如果一個函數中做了太多的事,那么代碼閱讀起來的難度將會成倍增加,而且文檔書寫難度同樣增大。還有就是給其他代碼調用造成不便。比如我定義了函數A做了1和2兩件事,函數B想做2和3,怎么辦?這時B只能再寫一遍A中做2的代碼。而這樣就會有大量重復代碼出現,不但增加工作量,對日后的維護工作也造成很大的負擔。而把1和2分別定義為函數C和函數D的話,只需要在AB中分別調用就可以了。
命名
這里不多解釋,函數的命名需要具有描述意義,函數越短也就越容易描述。
函數參數
參數數量越少越好(這個我目前也沒有做到),究其原因,首先是讀代碼時每次都要搞清楚每個參數的意義,所以自然越少越好。另一方面就是為測試的同事提供方便,如果有多個函數,測試的同學就需要考慮更多的測試用例對其進行覆蓋。如果一個函數有3個以上的參數,那測試的同學可能想要打人了。
使用異常代替返回錯誤碼
這樣就可以將Try/catch代碼塊抽離出來,因為Try/catch代碼塊影響了正常程序的流程,看起來很丑陋。
函數的主要規則就是這些,那么如何才能寫出這樣的函數呢?其實沒有什么特別的技巧,就是記住這些規則,在每次寫完代碼之后再斟酌一番,對代碼進行反復的打磨,修改不合適的命名,抽離冗長的函數。久而久之,你的代碼一定會被人稱贊的。
說完函數再來說一下如何寫好一個類。
還是短小
沒錯,類也應該短小,不過這里短小的定義和函數短小的定義稍有不同,我們通常以“權責”來衡量。先看下面這個類。
public class SuperDashboard extends JFrame implements MetaDataUser {
public Component getLastFocusedComponent()
public void setLastFocused(Component lastFocused)
public int getMajorVersionNumber()
public int getMinorVersionNumber()
public int getBuildNumber()
}
這個類只提供了5個方法,應該不算長,但是我要說,它仍然不滿足我們“短小”的條件,原因就是違反了單一權責原則。單一權責指的是一個類只描述一類事。上面這個類有對最后焦點組件的讀寫方法,還有獲取版本號和序列號的方法。只要我們描述一個類時,用到了類似于“還有”這樣的字眼時,那么這個類就違反了單一權責原則,就需要對其中的方法進行抽離。
為了修改而組織
大多數系統都會進行持續的迭代,而這也意味著我們需要不斷對代碼進行修改。而修改代碼往往伴隨著風險。所以,我們需要做的就是,修改一個方法時,不對其他方法造成影響。當我們開始修改時,就要評估好影響,然后將方法進行抽象,拆分。力求做到每次修改都不影響其他類(即降低耦合)。
感謝各位的閱讀,以上就是“怎么理解web中整潔的類和函數”的內容了,經過本文的學習后,相信大家對怎么理解web中整潔的類和函數這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。