design-principles

    0熱度

    1回答

    我正在讀implementing_the_visitor_pattern_without_recursion從Python的食譜,第三版 The implementation with additional Visit Class修復缺陷the one without it,因爲它要求。 「這個配方的一個潛在危險是關於產生節點和非節點值的區別 。在實現中,所有節點 自動遍歷。這意味着您不能使用 節

    1熱度

    1回答

    請考慮以下情況。 三個應用程序A,B和C必須合作:A是一個外部的第三方應用程序,而B和C是內部應用程序(所以我們可以控制B和C,而不是A)。 B回覆A提出的請求,同時使用C和B本身包含的邏輯。將B看作A和C之間的層。 A,B和C有一些基本的共同概念,理解和使用。 假設這裏的關鍵任務是去耦所有的東西,所以如果明天我們想要使用A1而不是A,B和C之間的所有交互都保持固定(並且分別如果我們想用C1代替C

    1熱度

    4回答

    我正在看我的一些項目,並將它們與我在github上看到的東西進行比較,我覺得我過度思考。我喜歡OOP,但我覺得我製作的文件太多,班級太多。 例如,在一個小型項目中,我有一個跳棋遊戲,我有很多文件可能都會進入一個文件/類。我怎麼知道我什麼時候想過我的解決方案?這是我的一些文件的樣子; |src | |- player.cpp | |- piece.cpp | |- color.cpp | |

    1熱度

    2回答

    如果我有一個複雜的任務來解決,我有時最終會遇到一種控制執行的方法。由於空檢查,if語句,調用在類型之間映射的方法等等,這種方法可能變得非常長,我努力使它更簡單。 實施例1 public class A public string MethodA(string stringA) { var fooResult = _fooService.fooMethod(stringA);

    1熱度

    1回答

    以下代碼A來自Kotlin for Android開發人員。代碼B由我撰寫。 這兩個不同的代碼塊的功能是否相同? 代碼A class DetailActivity : AppCompatActivity(), ToolbarManager { override val toolbar by lazy { find<Toolbar>(R.id.toolbar) } ...

    1熱度

    1回答

    我們正在構建一個使用Realm作爲我們的模型/數據庫的iOS應用程序,但我們希望設計客戶端,以便它可以輕鬆地適應將來可能發生的REST-ful API中的更改。假設我們正在爲適應不同活動的體育競賽組織開發應用程序。根據正在玩什麼運動,每個事件都有不同類型的事件類型。現在API只返回足球,棒球和足球,但將來它可能會擴展到包括籃球。之後它可能會消除棒球。我設計的領域對象,使事件從事件類型使用這樣的一對

    1熱度

    1回答

    Wiki says 在依賴倒置的直接應用,該摘要是 由上限/政策層擁有。該體系結構將 較高/策略組件和定義較低 服務的抽象組合在同一個包中。通過繼承/實現這些抽象類或接口創建的底層圖層是 。 理想的wiki文章還表示,(在正在實施的部分方法2)抽象模塊應該是鬆耦合單獨的模塊, 但我有辦法1援引言論的問題。在我沒有實現/可能實現的地方,我總是看到抽象類與低級模塊打包,而不是高級模塊。 高級封裝的封裝

    1熱度

    1回答

    我一直負責爲我們公司的內部測試標準和程序開發文檔。我一直在做大量的研究並發現了一些很好的文章,但我總是喜歡在這裏與社區聯繫。 這就是說,我的問題是這樣的:你如何看待一個擁有非常大的遺留代碼庫的公司,這是幾乎不可測試的,如果在所有可測試的情況下,並試圖測試你可以有效地進行測試?你有關於如何爲緊密耦合的代碼創建一些有用的自動化測試用例的提示嗎? 我們所有的新代碼都被編寫成儘可能鬆散耦合,我們都爲我們新

    0熱度

    1回答

    有沒有一種方法,我可以要求傳入一個函數的對象實現一組核心方法? 例如,我希望能夠編寫一個總和方法來總結實現'+'運算符的任何可迭代對象。 我初步實現如下 trait addable[T <: addable[T]]{ def +(other: T): T } def sum[T <: addable[T]](items: Iterable[T]) = if(items.i

    1熱度

    2回答

    單一職責原則(SRP): - 每個班級都應該承擔一個責任。基本上,應該有一個單一的理由來改變。我不確定 最後的聲明究竟意味着什麼。我的解釋是,設計類的方式應該有一個單一的理由來改變,因爲每種方法都是一種行爲,因此也是一種理由。那是對的嗎?如果不是什麼確切的原因定義? 考慮一個股票交易所繫統,其中大部分開發者提出設計,其中StockService.java同時具有買入和賣出方法。這裏將有兩方面的原因