Questions tagged «anti-patterns»

编程反模式是特定编程问题的常用解决方案,通常声称是实际的设计模式。但是,这样的解决方案通常会对应用程序的可伸缩性,可测试性和维护性产生不利影响。

30
最常见的SQL反模式是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我们所有使用关系数据库的人都已经知道(或正在学习)SQL是不同的。选出想要的结果并有效地进行,涉及到一个乏味的过程,其部分特征是学习不熟悉的范例,并发现我们最熟悉的编程模式在这里不起作用。您见过(或自己犯过)的常见反模式是什么?
232 sql  anti-patterns 

30
11000行C ++源文件怎么办?
所以我们的项目中有mainfile.cpp这个巨大的文件(是11000行吗?),每当我不得不触摸它时,我都会畏缩。 由于该文件是如此之大且庞大,因此它会不断积累越来越多的代码,我想不出一种使它真正开始缩小的好方法。 该文件已在我们产品的多个(> 10)维护版本中使用并进行了有效更改,因此实际上很难对其进行重构。如果要“简单地”将其拆分为3个文件(例如,一开始),那么将维护版本中的更改合并回来将成为一场噩梦。而且,如果您拆分了具有如此长而丰富的历史记录的文件,则跟踪和检查SCC历史记录中的旧更改会突然变得困难得多。 该文件基本上包含我们程序的“主类”(主要内部工作的调度和协调),因此,每次添加功能时,它也会影响此文件及其每次扩展。:-( 在这个情况下,你会怎么做?关于如何将新功能移动到单独的源文件而不弄乱SCC工作流程的任何想法? (有关工具的注意事项:我们将C ++与一起使用Visual Studio;我们使用AccuRev,SCC但我认为这里的类型SCC并不重要;我们用于Araxis Merge进行文件的实际比较和合并)

30
单元测试反模式目录
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 反模式:必须至少存在两个关键要素,才能将实际的反模式与简单的坏习惯,坏习惯或坏主意正式区分开: 某些重复的动作,过程或结构模式似乎最初是有益的,但最终会产生比有益结果更多的不良后果,并且 重构的解决方案已明确记录在案,并在实践中得到证明,并且可重复。 投票一次您在“野外”看到的TDD反模式太多了。 詹姆斯·卡尔(James Carr)的博客文章以及 有关测试驱动开发yahoogroup的相关讨论 如果您找到了一个“未命名”的人。每个反模式请发表一篇文章,以使投票数有所作为。 我的既得利益是找到前n个子集,以便我可以在不久的将来在午餐会上讨论'em'。

13
什么是反模式?
我正在研究模式和反模式。我对模式有一个清晰的主意,但我没有反模式。网络和维基百科的定义让我非常困惑。 有人可以简单地向我解释什么是反模式吗?什么目的?他们在做什么?是好事还是坏事?

20
Java中带有参数的Singleton
我正在阅读Wikipedia上的Singleton文章,并且遇到了以下示例: public class Singleton { // Private constructor prevents instantiation from other classes private Singleton() {} /** * SingletonHolder is loaded on the first execution of Singleton.getInstance() * or the first access to SingletonHolder.INSTANCE, not before. */ private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); …

7
ServiceLocator是反模式吗?
最近,我阅读了Mark Seemann的有关Service Locator反模式的文章。 作者指出了ServiceLocator是反模式的两个主要原因: API使用问题(我非常满意) 当类使用Service定位器时,很难看到其依赖关系,因为在大多数情况下,类只有一个PARAMETERLESS构造函数。与ServiceLocator相比,DI方法通过构造函数的参数显式公开依赖项,因此在IntelliSense中很容易看到依赖项。 维护问题(使我感到困惑) 请考虑以下示例 我们有一个使用服务定位器方法的“ MyType”类: public class MyType { public void MyMethod() { var dep1 = Locator.Resolve<IDep1>(); dep1.DoSomething(); } } 现在我们要向类“ MyType”添加另一个依赖项 public class MyType { public void MyMethod() { var dep1 = Locator.Resolve<IDep1>(); dep1.DoSomething(); // new dependency var dep2 = Locator.Resolve<IDep2>(); dep2.DoSomething(); } } …


8
有什么理由不使用'+'连接两个字符串吗?
Python中常见的反模式是+在循环中使用串联字符串序列。这很不好,因为Python解释器必须为每次迭代创建一个新的字符串对象,并且最终要花费二次时间。(在某些情况下,最新版本的CPython显然可以优化此功能,但其他实现则不能,因此建议程序员不要依赖此功能。)''.join是执行此操作的正确方法。 但是,我听说它说过(包括Stack Overflow上的内容),您永远都不要将它+用于字符串连接,而应该始终使用''.join或格式字符串。我不明白为什么只连接两个字符串会出现这种情况。如果我的理解是正确的,则不应该花费二次时间,而且我认为a + b比''.join((a, b))或更加简洁易读'%s%s' % (a, b)。 +串联两个字符串是否是一种好习惯?还是有我不知道的问题?

12
设计模式要避免[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 许多人似乎都同意,Singleton模式有很多缺点,甚至有人建议完全避免使用此模式。这里有一个很好的讨论。请将有关Singleton模式的任何评论导向该问题。 我的问题:是否有其他设计模式应避免或谨慎使用?

4
为什么将“日志和抛出”视为反模式?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 这个问题是由围绕本文的讨论引发的,当时我没有得到任何好的答案。 如果不能以其他方式处理异常,为什么应该记录异常然后将其重新抛出(当然,保留原始堆栈跟踪)是一个坏主意呢?

30
您在生产企业环境中见过的最EVIL代码是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 您在公司的生产环境中见过的最邪恶或危险的代码片段是什么?我从来没有遇到过我认为是故意的恶意和邪恶的生产代码,因此我很想知道别人发现了什么。 我见过的最危险的代码是一个存储过程,该存储过程与我们的核心生产数据库服务器相距两个链接服务器。该存储过程接受任何NVARCHAR(8000)参数,并通过双跳sp_executeSQL命令在目标生产服务器上执行该参数。也就是说,为了跳过两个链接的服务器,sp_executeSQL命令执行了另一个sp_executeSQL命令。哦,链接服务器帐户对目标生产服务器具有sysadmin权限。

7
Python:使用“ ..%(var)s ..”%locals()是一种好习惯吗?
我发现了这种模式(或反模式),对此我感到非常满意。 我觉得它非常敏捷: def example(): age = ... name = ... print "hello %(name)s you are %(age)s years old" % locals() 有时我用它的表弟: def example2(obj): print "The file at %(path)s has %(length)s bytes" % obj.__dict__ 我不需要创建人为的元组并计算参数并将%s匹配位置保留在元组中。 你喜欢它吗?您会/会使用它吗?是/否,请解释。

7
颠覆外部是反模式吗?
Subversion允许您使用外部工具嵌入其他存储库的工作副本,从而可以轻松地在项目中控制第三方库软件的版本。 尽管这些对于重用库和供应商软件的版本控制而言似乎是理想的选择,但它们并非没有批评者的: 请不要使用Subversion外部工具(或其他工具中的类似工具),因为它们是反模式,因此不必要 使用外部元件是否存在隐患?请解释为什么将它们视为反模式。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.