多如牛毛的小類

jopen 10年前發布 | 7K 次閱讀 代碼

當我在做“整潔代碼”培訓或和同事討論問題時,這樣的爭端會一遍一遍的出現:

“如果我把我的代碼全部拆分成這樣的小方法和小類,那我怎么在這么多東西中找一個想要的東西?我需要在幾十上百個文件中找來找去!”

這種觀點是有問題的,并不是他們說的不對。并且我的確有為了弄懂一個流程而在一堆的小類中仔細翻查代碼的經歷。

多如牛毛的小類
如果你想徹底的理解一段代碼,如果所有代碼都能放在一起出現在屏幕上,這當然是最好的。你可以從頂部到底部一行一行的看完。如果這些代碼是拆分在大量的小方法和小類中,你需要跟蹤哪個方法來自哪個類,無形中增加了工作量。

但我仍然認為這種觀點是錯誤的。問題在于,這種觀點的前提是你想去徹底的了解這些所有代碼。

可如果你想從一個更高層的視角,一個抽象的視角看你的代碼,那這種拆分是必不可少的。你不可能把所有的知識都放在你的大腦里。當遇到一個不是那么簡單的編程任務時,完全徹底的理解所有的代碼是不可行的。

一個現實中的任務通常需要你這樣做的:

  1. 減少你需要理解的代碼量
  2. 盡可能的讓代碼好理解

這其中的關鍵就是對代碼進行提煉抽象!

讓 我來問你一個問題:你是否經常使用HashMap——或你喜歡的語言里等效的類、方法?很可能每天要使用數次,不是嗎?但你會經常的去查看HashMap 的源代碼嗎?估計幾乎從來沒有過吧!因為我們都知道一個Map能做什么,知道HashMap是map的一個最常用的實現類。這就是所有我們需要知道的。我 們只是去用它。我們知道它的功能用法。我們知道當它被使用時會發生什么。

如果你能將你的方法和類進行像這樣的提煉抽象,大多數時候你根本不需要去看這些提煉出來的源代碼。你只需要看到它的名字就知道它在做什么。也許你不知道它是如何實現的,但你已經知道如何使用它,如果你真的需要深入這些代碼研究,這個時候你才會遇到我們上面說的那種情況。

當然,如果你的方法和類不能像HashMap那樣明了易懂,這說明它還有改進它的空間。

[英文原文:Tons of Small Classes ]
來自:http://www.aqee.net/tons-of-small-classes/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!