我听到(并在这个网站上阅读)很多关于“偏爱构成而不是inheritance”。 但Compositon是什么? 我从人的angular度理解inheritance:哺乳动物:动物,但是我无法在任何地方真正看到“组合”的定义。有人可以填补我吗?
谷歌search“DDD适合什么样的应用程序?” 给了我下面的答案: 所有软件应用程序的95%可能属于“不太适合使用DDD”类别。 (见文章 ) 那么,什么是大惊小怪? 我正在使用的应用程序主要是以数据为中心的,但仍然包含一些要应用的业务逻辑和规则。 开始使用DDD技术会浪费时间吗? 我最好使用更传统的数据访问层,POCO模型和业务逻辑层? 或者以不同的方式陈述 – 什么是DDD的替代scheme?
我有一个Processor类,将做两个完全不同的事情,但从通用代码(“控制反转”情况)调用。 我想知道什么样的devise考虑因素,在决定它们是否应该全部从BaseProcessorinheritance,或者实现IP Processor作为接口时,我应该认识到(或认识到,对于你的USsers)。
devise模式的想法是从哪里来的,谁决定什么是模式,并给他们起了名字? 是否有一个官方组织来界定它们,还是通过一些社区共识来存在?
我正在使用Devise for Rails。 在默认注册过程中,Devise要求用户input密码两次以进行validation和authentication。 我怎样才能禁用它? 谢谢大家。 🙂
除了std::ios_base::Init之外,标准C ++库中的所有名称都是小写字母。 为什么是这样?
C ++编译器自动生成拷贝构造函数和拷贝赋值操作符。 为什么不swap呢? 现在,实现复制赋值运算符的首选方法是复制和交换方式: T& operator=(const T& other) { T copy(other); swap(copy); return *this; } ( 忽略使用按值传递的复制易用表单 )。 这个习惯用法的优点是在exception情况下是事务性的(假设swap实现不会抛出)。 相比之下,默认的编译器生成的复制赋值操作符recursion地对所有基类和数据成员进行复制赋值,并且不具有相同的exception安全保证。 同时,手动实现swap方法是很繁琐和容易出错的: 为了确保swap不会丢失,必须为所有非POD成员在类和基类中,在非POD成员中执行。 如果一个维护者向类中添加一个新的数据成员,维护者必须记得修改该类的swap方法。 如果不这样做可能会引入微妙的错误。 另外,因为swap是一个普通的方法,所以如果swap实现不完整,编译器(至less我不知道的)不会发出警告。 如果编译器自动生成swap方法不是更好吗? 然后隐式复制分配实现可以利用它。 显而易见的答案可能是:当开发C ++时,copy-and-swap成语不存在,现在这样做可能会破坏现有的代码。 不过,也许人们可以select让编译器使用C ++ 0x用于控制其他隐式函数的相同语法来生成swap : void swap() = default; 然后可能会有规则: 如果存在编译器生成的swap方法,则可以使用“复制和交换”来实现隐式复制分配操作符。 如果没有编译器生成的swap方法,将像以前一样实现隐式的复制分配操作符(在所有基类和所有成员上调用复制分配)。 有谁知道C ++标准委员会是否已经提出了这样的(疯狂的)事情,如果有的话,委员会成员有什么意见?
在devise资源层次时,应该何时使用子资源? 我曾经相信,当一个资源不可能没有另一个时,它应该被表示为它的子资源。 我最近碰到这个反例: 员工在所有公司中都是唯一可识别的。 员工的访问控制和生命周期取决于公司。 我将其build模为: /companies/{companyName}/employee/{employeeId} 请注意,我不需要查找公司来find员工,那么我该怎么办? 如果我这样做,我付出代价来查找我不需要的信息。 如果我没有,这个URL错误地返回HTTP 200: /companies/{nonExistingName}/employee/{existingId} 我应该如何表示一个资源属于另一个资源的事实? 我应该如何expression这样一个事实:一个资源如果没有另一个资源就不能被识别 ? 子资源意味着什么关系,而不是意味着build模?
我正在寻找一种替代访客模式。 让我只关注这个模式的几个相关方面,同时跳过不重要的细节。 我将使用一个Shape示例(对不起!): 您有一个实现IShape接口的对象的层次结构 您可以在层次结构中的所有对象上执行一些全局操作,例如Draw,WriteToXml等。 直接进入并向DrawShape界面添加一个Draw()和WriteToXml()方法是很诱人的。 这不一定是一件好事 – 只要您希望添加要在所有形状上执行的新操作,就必须更改每个IShape派生的类 为每个操作实现访问者,即Draw访问者或WirteToXml访问者将该操作的所有代码封装在一个类中。 然后添加一个新的操作就是创build一个新的访问者类来完成对所有types的IShape的操作 当您需要添加一个新的IShape派生类时,您基本上会遇到与3中相同的问题 – 必须更改所有访问者类才能添加一个方法来处理新的IShape派生types 大多数你读到关于访客模式的地方指出,第5点几乎是模式的主要标准,我完全同意。 如果IShape派生类的数量是固定的,那么这可能是一个相当优雅的方法。 所以,问题是新的IShape派生类被添加 – 每个访问者实现需要添加一个新的方法来处理该类。 这至多是不愉快的,最坏的情况是不可能的,并且表明这种模式并不是真正用来应对这种变化的。 那么问题是有没有人遇到这种情况的替代方法呢?
什么是最好的方式来布局一个大django项目? 本教程提供了有关设置应用程序,模型和视图的简单说明,但有关应用程序和项目如何细分的信息较less,典型项目中应用程序允许/必须共享多less共享(显然,这主要取决于该项目)以及如何/在哪里通用模板应该保存。 有没有人有例子,build议和解释为什么某个项目布局比另一个更好? 我特别感兴趣的是大量的unit testing(2-5倍实际代码库的大小)和string外部化/模板。