0
A
回答
1
不,實際上這是很好的做法。或者你認爲你的三個調用方法應該複製被調用的代碼嗎?
1
方法只是功能和功能是代碼重用和設計改進有用的抽象。如果一個類的三個方法需要在運行時做同樣的事情,他們應該複製粘貼代碼或調用一個單獨的方法?
具有分成通過其他方法被調用方法的代碼一些有意義的部分是代碼重用這是很好的,除非你真的很過分的又一個例子。
1
號看來,你已經找到了有效的使用要堅持DRY principles。
0
根本不是。事實恰恰相反。方法可以完成特定的任務,您應該使用它們來完成這些任務。
3
完全沒有,如果你正確地設計了你的課程,這是預料之中的。你應該有一個小的公共接口,如果實現很複雜,你最終可能會在同一個類中調用很多私有方法。
事實上,不這樣做可能是反模式。如果你不斷地調用另一個類的方法,這就叫做Feature Envy,你應該把類組合起來。如果你把所有的實現都放到一個龐大的函數中,那只是不可維護的,而且可能包含很多代碼重複。
將事情分解成其他可重用的方法是件好事。你調用同一個方法的3種方法的情況是完美的代碼重用。如果該函數的代碼在每個調用函數中都重複,那將會非常糟糕。
0
是的,如果這些方法是可重寫的,即,如果類和/或方法的任何最終。原因是試圖覆蓋行爲或提供服務層的子類不能可靠地實現,因爲可以多次輸入圖層。 例(斯卡拉僞代碼),在這裏我們假設HashSet.addAll
調用自己的HashSet.add
:
class MemCountingSet[T] extends HashSet[T] {
private def sizeOf(t: T) = ...
private var memCount = 0
def add(t: T) = {
memCount += sizeOf(t)
super.add(t)
}
def addAll(coll: Collection[T]) = {
memCount += coll.foreach(sizeOf)
super.addAll(coll)
}
}
當使用addAll
我們現在結束了重複計算。
相關問題
- 1. 調用同一類中其他方法的方法:設計不好?
- 2. Java Mockito - 如何測試在同一個類中調用方法的方法以及其他類中的方法?
- 3. 在其他方法中調用類中的方法
- 4. Python:當從另一個類中調用初始方法時調用其他類方法的類方法
- 5. 其他類的c#調用方法
- 6. Nulljava.lang.NullPointerException調用其他類的方法
- 7. 調用其他類的靜態方法
- 8. 來自其他類的調用方法
- 9. 其他類的iOS調用方法
- 10. 在同一對象中用其他方法調用對象的方法
- 11. 另一種方法不能調用,而其他方法調用
- 12. 如何在其他類中調用另一個調用方法?
- 13. 其他同步方法的方法
- 14. 從其他類調用方法在不同的.java文件中
- 15. Java - 解析方法調用其他類
- 16. THEOS:調用其他類(徽標)方法
- 17. 綁定調用類內其他方法的方法
- 18. PHP PDO調用公共方法從其他類的不同類
- 19. 調用同一類中的另一個方法內的方法
- 20. 調用其他方法的TDD方法的正確方法
- 21. 如何在同一文件的其他類中使用其他類方法?
- 22. 從同一類中的另一種方法調用方法
- 23. 調用方法,它調用其他方法在Java中
- 24. GoogleMock可以從同一類的其他方法調用中調用模擬方法嗎?
- 25. 調用同一個類中的方法
- 26. 調用同一個類中的方法?
- 27. 測試一個組件的方法調用其他方法
- 28. 從其他對象調用方法的方法調用
- 29. 無法調用其他類中的方法
- 30. 等待一個同步方法,其中調用異步方法