回答
它確實取決於您的項目的規模和範圍。
我傾向於每次都會有一些重複時間的事情分成功能,而重複廣義/抽象,下面的DRY的黃金法則(不要重複自己)。就分割類而言,我傾向於遵循面向對象編程的理念,即將不同的東西隔離開來,並且如果一個類正在實現更多的一個大理論「想法」或實體。但是老實說,如果你的代碼太碎片化和不透明,你應該嘗試考慮將重構轉換爲不同的方法/範例。
也許我自己的個人規則是,如果它超過兩行,並且在同一頁面(ASP.net)上被多次引用,或者在幾頁內傳播幾次,那麼我會比寫一個函數來做到這一點。
我想你一般不得不想到一大塊代碼有被重用的機會。它帶有經驗來解決這個問題並提前計劃。
我被教過,你不止一次做的任何事情都應該是一個功能。任何類似的東西都應該有一個父類,最重要的是在你的組織內查閱你的源代碼「標準」。後者主要處理格式。
爲了提供對常用功能的簡單訪問,我會小心提倡繼承。成分更好。保留繼承來表達「is-a」關係。 – 2010-06-24 05:51:27
點採取勞裏 – bobby 2010-06-24 07:55:02
我同意專注於可重用性和消除重複的答案,但我也相信可讀性至少同樣重要。因此,除了重複之外,我還會尋找能夠完成多件事的代碼段(類,函數,塊等)。
如果與代碼相關的名稱沒有描述它的功能,那麼現在是將代碼重構爲單元的好時機,每個單元都有一個single responsibility和一個描述性名稱。這separation of concerns將幫助重用性和可讀性。
有用的代碼可以堅持很長一段時間,所以重要的是你(或者理想的情況下是其他人)可以返回並輕鬆理解幾個月或幾年前編寫的代碼。
如果我可以給它一個好聽的名字(比它所取代的代碼更好),它成爲一個功能
- 1. 什麼時候注入構造函數,什麼時候是CDI
- 2. 爲什麼一切都不是黃金?
- 3. 什麼是代碼解析?
- 4. 什麼時候分支和什麼時候是錯誤的時間?
- 5. 什麼時候你把Javascript放在body裏,什麼時候在頭,什麼時候用doc.load?
- 6. 什麼時候是K 1024,什麼時候是1000?
- 7. 什麼時候不用開源代碼?
- 8. 什麼時候重構代碼?
- 9. 什麼時候解密?
- 10. 什麼時候是一個scala部分函數而不是部分函數?
- 11. 你什麼時候說代碼是遺留代碼?
- 12. 什麼是源代碼的shell函數?
- 13. 什麼時候生成MSIL?
- 14. 什麼時候jQuery.ajax()完成{}?
- 15. 函數ggplot:什麼時候它不識別參數,什麼時候它?
- 16. MonoDevelop什麼時候生成Connect語法
- 17. 什麼時候返回空集合,什麼時候不是?
- 18. 什麼時候把數據放在硬代碼和數據庫中?
- 19. 當我把(DateTime)放在DataBinder.eval前面什麼時候做什麼
- 20. 零參數構造函數有什麼好處?什麼時候是理想的?
- 21. 什麼時候執行了javascript函數
- 22. 這個JQuery代碼是什麼意思,什麼時候會被調用?
- 23. 什麼時候應該將我的代碼分成不同的類?
- 24. 是什麼代碼是什麼意思?
- 25. 字節代碼在什麼時候生成?
- 26. 如果($(函數(){});是合法的代碼,爲什麼不是$(FOO())
- 27. jQuery動畫 - 什麼時候是異步的,什麼時候不是?
- 28. 我們應該什麼時候把弱者變成強者?
- 29. 什麼是「代碼」
- 30. 什麼時候變長數組合法?
+1:第二個概念是SRP http://en.wikipedia.org/wiki/Single_responsibility_principle – 2010-08-31 16:02:24