tell-dont-ask

    0熱度

    1回答

    class Operation { private $op; public function __construct() { $this->op = []; for ($i = 1; $i < 1000; $i++) { $this->op[] = rand(1,9999); } }

    0熱度

    1回答

    我有兩個類,Parser和Item。解析器類解析某些結構化文檔,並返回Item對象,如果您調用類似Parser::GetItem(int some_id)的東西。 這個Item類是用「Tell - do not ask」原則編寫的。我的意思是它沒有getter方法的幾個內部變量,這些變量由構造上的Parser填充。 現在的問題是:我怎麼能單元測試Parser類?如何檢查內部Item變量是否被正確解

    0熱度

    3回答

    我有一個工廠類,它根據它接收的參數創建一個對象。該參數是一個標識符,告訴它應該創建哪個對象。 其第一步是使用數據訪問層爲對象提取信息。 下一步是對數據進行一些清理/轉換。 最後,它創建所需的對象並將其返回。 我想確保清理/轉換步驟正常,但它返回的對象不會公開任何狀態,所以我不知道如何輕鬆測試。 數據訪問層和數據庫結構無法更改,因爲它們必須使用遺留代碼。 對象被使用後,我可以在系統中進一步測試它,但

    7熱度

    4回答

    問題 如何執行涉及多個對象的功能,當我堅持"Tell, Don't Ask"原則。 示例 - 生成報告 我有以下對象(說明目的): 車,馬,兔 有這些對象之間沒有任何關係,但我確實希望根據這些對象生成報告: createHtmlReport(Car car, Horse horse, Rabbit rabbit){ Report report = new Report() r

    3熱度

    2回答

    我認爲這個問題最好用一個例子來解釋。 public class MyService { private OtherService theOther; public void setTheOther(OtherService srv) { theOther = srv; } public void myBusinessStuffFor(int id) {

    4熱度

    1回答

    程序代碼獲取信息,然後做出決定。面向對象的代碼告訴對象做事情。 亞歷克夏普 當我們使用的是Factory pattern,我們做出決定的基礎上,除了比工廠類的類的屬性,所以這並不違反Tell, Don't Ask principle?

    0熱度

    2回答

    我試圖在cSharp中引發事件來通知我的應用程序中的代碼更改,以便具有tellDontAsk方案。 我必須從事件類實現 public class SimpleTellDontAsk : ISomeEvent { public void doSomething(string text, EventHandlerArgs args) { Console.WriteLi

    0熱度

    1回答

    這是事情。我有一個按鈕,根據場景,它會表現,看起來有不同的文字。以下是如何呢,大概,看起來像此刻: - if params[:param_A] && @statement_A %span.button.cancel_button{attribute: "value_B"} - if @statement_B = t('locale_A') - else

    0熱度

    1回答

    我瞭解許多設計原則在某些情況下相互衝突。所以,我們必須權衡他們,看看哪一個更有利。 直到現在我知道SRP的原則,並做了我的設計很多基於這一點,但內部我感覺有時錯誤,而遵循 這個原則。現在我來了解TDA,我的感覺了與:) SRP更多的支持: -對象應該擔心自己的關注不是其他任何人 TDA: -行爲(這是依賴於它的對象狀態)應該保持在對象本身內 例如: -我有不同的形狀像矩形,正方形,圓等現在我必須計

    0熱度

    1回答

    有兩類這樣的: class Site < ActiveRecord::Base has_one :subscription, dependent: :destroy def self.hostname_active?(hostname) site = where(hostname: hostname) site.exists? && site.first.