小编Mar*_*ers的帖子

使用RhinoMocks,如何在没有空构造函数的情况下模拟或存根具体类?

当你在一个类上有一个空的构造函数时,使用Rhino Mocks模拟一个具体的类似乎很容易:

public class MyClass{
     public MyClass() {}
}
Run Code Online (Sandbox Code Playgroud)

但是如果我添加一个带参数的构造函数并删除不带参数的构造函数:

public class MyClass{
     public MyClass(MyOtherClass instance) {}
}
Run Code Online (Sandbox Code Playgroud)

我倾向于得到一个例外:

System.MissingMethodException:找不到具有匹配参数的构造函数

我已经尝试在我对Mock或Stub的调用中输入空值,但它不起作用.

我可以创建缺少无参数构造函数的具体类的模拟和存根吗?

c# tdd constructor rhino-mocks

28
推荐指数
1
解决办法
2万
查看次数

使用与域实体的一对一接口是好的还是坏的做法?为什么?

我在一些DDD企业应用程序中看到的一件事是,使用与域实体相同的接口,以及属性和功能的一对一映射.实际上,域对象总是通过它的一对一接口使用,并且所有域实体都具有这种风格的一对一接口.

例如:

域对象帐户:

public class Account : IAccount
{
     public string Name {get;set;}
     //...some more fields that are also in IAccount
     public decimal Balance {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

它是匹配的界面

public interface IAccount
{
   string Name {get;set;}
   //... all the fields in Account
   decimal Balance {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

但最近我越来越相信这实际上是一种反模式.
我是由开源社区的一些架构师运行的,他们说这是基于设计错误或缺陷,在设计链的某个地方.

所以我告诉我的同事他们应该退出为Domain对象创建接口.因为它们没有任何意义,所以每当更新域实体时都必须更新接口.

首先声称这些接口提供了"解耦",但我反驳说,因为接口与域实体有一对一的关系,它们实际上并没有提供任何解耦,接口的改变意味着改变域实体,反之亦然.

下一个主张是我们需要接口用于测试目的.我的反击是Rhino-mocks提供了具体类的模拟和存根.但是他们声称Rhino-mocks在具体课程方面遇到了麻烦.我不知道我是否购买,即使rhino-mocks在具体类中遇到问题,也不一定意味着我们应该使用域实体的接口.

所以我很好奇:

为什么你的域实体有一对一的接口?

为什么不?

为什么这是一个好的或坏的做法?

谢谢阅读!

编辑:我应该注意,我一直使用接口,我相信如果它被要求我将使用一个接口.但我特别指的是具有一对一接口的域实体.

dns design-patterns domain-driven-design interface

26
推荐指数
3
解决办法
3243
查看次数

在使用单一责任原则时,您如何确定"责任"应该是多么粗糙或细粒度?

在SRP中,"责任"通常被描述为"改变的理由",因此每个类(或对象?)应该只有一个人应该去那里并改变它的原因.

但是,如果你把它变成极端细粒度,你可以说一个对象将两个数字加在一起是一个责任,也是一个可能的改变原因.因此,对象不应包含其他逻辑,因为它会产生另一个改变的原因.

我很好奇是否有人有任何"范围"策略,单一责任原则稍微不那么客观?

oop single-responsibility-principle solid-principles

23
推荐指数
1
解决办法
1645
查看次数

Html选择标签中的多行选项可能吗?

是否有可能(仅使用HTML),以显示selectoptions表示每一个跨越多行?

html html-select

21
推荐指数
2
解决办法
4万
查看次数

什么是javascript的最佳实践套管风格?为什么?

javascript的一个很难找到信息的方面是套管实践.通过套管实践,我的意思是套管样式(即驼峰式,pascal-case等)应该用于哪些元素(构造函数,私有函数,公共函数).

我听过的唯一一条规则是关于YUI剧院的Douglas Crockford演讲,指出构造函数应该是唯一以大写字母开头的函数.

除此之外,人们在javascript中似乎没有很多套管标准.

有没有人知道javascript的任何套管最佳做法,以及为什么使用它们是合理的?

你也遵循.js文件的套管风格吗?

javascript variables function casing

18
推荐指数
2
解决办法
1万
查看次数

如何在LINQ-to-Entities查询中使用自定义属性?

我有一个类Post实体框架模型.它包含这样的属性:

public bool Showable {
  get {
    return this.Public && this.PublishedDate > DateTime.now
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以在这样的查询中使用它:

from p in db.Posts where p.Showable select p;
Run Code Online (Sandbox Code Playgroud)

但是当我有一个使用它的属性时,就像这样

public IEnumerable<Post> ShowablePosts {
  get {
    return from p in db.Posts where p.Showable select p;
  }
}
Run Code Online (Sandbox Code Playgroud)

那我不能做:

from p in ShowablePosts where p.Id > 42 select p;
Run Code Online (Sandbox Code Playgroud)

它说:

LINQ to Entities不支持指定的类型成员"Showable".仅支持初始值设定项,实体成员和实体导航属性.

.net c# linq-to-entities entity-framework

16
推荐指数
2
解决办法
7540
查看次数

为什么你会在Session存储对象上使用asp.net的ViewState存储对象?

除了因为会话存储是多个页面的会话全局,你为什么要使用viewstate来保存值?

从客户端到服务器之间来回发送除了一些小的查询字符串之外的任何类型的信息似乎有点荒谬.我的意思是浪费带宽(!),仅用于存储目的.该会话虽然跨越多个页面,但看起来像是一个完全优于视图状态的替代方案.

特别是对于asp.net ajax控件和变体,viewstate可能很快变得臃肿,跟踪所有这些不同控件和html元素的各种状态和变量.

但那么为什么页面变量和对象的视图存储呢?

也许我错过了该页面的viewstate存储的另一个很好的用法,有没有人知道那里的东西?

谢谢阅读!

编辑:每个人都有一个很好的答案,对不起,如果我没有选择你的.

asp.net viewstate storage session-storage

15
推荐指数
4
解决办法
1万
查看次数

命名和封装多字CSS类和id的最佳实践是什么?

我试图找出命名和包装css类和id的最佳实践,特别是多个单词名称.

例如,假设我有一个<div>我想要命名的"角色技能".似乎有3种选择:"characterskills","character_skills"或"character-skills".

其中哪一个是命名css类和id的行业标准?

在css名称中拆分多个单词的最佳做法是什么?

最好的做法是始终使用全部小写的css名称,因为它们不区分大小写?

css naming-conventions

15
推荐指数
2
解决办法
5729
查看次数

在Grails中,只能从控制器和视图访问闪存存储对象吗?

在Grails中,flash存储对象用于保存交叉请求数据,如消息.

我知道它可以从大多数视图和控制器访问,但我不确定它是否可以在Grails中普遍使用,或者它是否只能从某些传统对象访问.

例如,可以flash从中访问对象Services吗?

甚至在实时网络请求期间的任何地方?

在访问方面有什么限制?

grails

12
推荐指数
2
解决办法
3677
查看次数

在域驱动设计中,您可以在UI中使用域实体吗?

在许多领先的DDD项目中,特别是MVC样式,我看到UI使用镜像域实体的显示对象,而不是直接使用这些域对象.这种风格显然是为了解决和分离问题,我个人更喜欢这种风格.

但我不确定的是,这是否是DDD的严格原则,还是这不仅仅是开发人员对它的不同解释.

您是否可以直接在UI中使用域对象,并且仍然遵循该行为中的DDD方法?

或者,总是使用显示对象是DDD最佳实践吗?

注意:当我提到MVC时,我真的很感兴趣是否必须在DDD项目中的几乎所有DDD兼容的UI模式中使用显示对象.

model-view-controller domain-driven-design

11
推荐指数
3
解决办法
3320
查看次数