tell-dont-ask

    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.

    0热度

    1回答

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