20得票15回答
滥用的设计模式

在《四人帮设计模式》的经典模式列表中,除了备受争议的 Singleton 模式外,是否存在其他常被误用、误解或过度使用的设计模式?换句话说,你会建议在使用某个设计模式前三思而行吗?为什么?

20得票6回答
有哪些闰年错误的例子?

一种闰年错误是代码缺陷,在闰年上下文中执行时会产生问题和意外结果,通常在普通公历系统内。 最后一个闰年是2016年。下一个闰年是2020年和2024年。 闰年有两个独特的属性: - 闰年有2月29日,而平年没有。 - 闰年总共有366天,而平年只有365天。 本篇文章旨在帮助其他人了解...

19得票3回答
贫血领域模型与领域模型

在阅读了关于这种反模式以及在SO上的许多相关问题之后,我再次感到困惑。 如果我有一个领域模型并捕获必须持久化的数据到一个数据传输对象中,那么这是否使我的领域模型成为数据的包装器?这种情况下,我将使用贫血领域模型。但是,如果我在该包装器上添加足够的领域逻辑,那么在什么时候它会变成真正的领域模型...

19得票7回答
全局常量是一种反模式吗?

我一直认为只是为了保存常量而创建一个类是一种不好的设计。但最近,我试着搜寻相关资料,发现仅有提到将 接口 作为常量被认为是一个反模式 - 没有提到使用常量类。 我认为,由于常量类与全局变量没有太大区别,因此我反对这种设计,并倾向于重构掉这种类。它会创建一个没有任何上下文的数据类。更好的方法是...

19得票13回答
这种反模式/代码异味有一个名称吗?

首先,我要说的是,我不赞成这种做法,但最近我看到了这种做法,我想知道是否有一个名称可以用来指向罪魁祸首。接下来就是内容。 现在你有一个方法,并且你想返回一个值。你还想返回一个错误代码。当然,异常是更好的选择,但由于某些原因,你想使用错误代码。记住,我在这里只是扮演魔鬼的代言人。所以你创建了一...

18得票7回答
如何克服反模式“大泥球”?

是什么导致计算机程序变成大泥球?是否有可能从这种反模式中恢复?是否有经过验证的重构方法可以应用?

18得票18回答
钻石问题真的可以解决吗?

在面向对象编程中,一个典型的问题是菱形问题。我有一个父类A和两个子类B和C。A有一个抽象方法,B和C实现它。现在我有一个继承自B和C的子类D。菱形问题是,D应该使用B的实现还是C的实现?人们声称Java没有菱形问题。我只能通过接口进行多重继承,因为它们没有实现,所以我没有菱形问题。这是真的吗?...

17得票8回答
如何说服人们一份有11975行代码的单一类是不好的?(难道不是吗?)

我在阅读[What to do about a 11000 lines C++ source file?]的帖子时感觉很熟悉,但我认为我没有权力采取行动,因此我认为第一步是说服组织中的人们大块代码是不好的。 我面临类似的情况,有一个单独的类有11975行代码,每当有新功能时,这个类很可能会变...

17得票3回答
贫血领域模型与简单领域驱动设计中的领域模型对比

我最近读到了一篇关于 "贫血领域模型模式" 的帖子,引起了我的注意。阅读过程中,我发现贫血领域模型的描述适用于我参与和构建的许多项目。我从未认为这是一个糟糕的设计决策,因为它感觉非常自然。我认为,在领域模型轻量且不太复杂的情况下,贫血领域模型名称非常合适。为什么要增加领域模型的复杂性,如果不需...

17得票3回答
等待一个Promise链有什么问题?

我正在开发一个Angular 6应用程序,并被告知以下内容是一种反模式:await someFunction().then(result => { console.log(result); }); 我意识到等待一个 Promise 链是没有意义的。如果 someFunction(...