我正在学习模式和反模式。 我对模式有一个清晰的认识,但是我没有得到反模式。 networking和维基百科的定义使我困惑不已。 有人可以用简单的语言向我解释什么是反模式吗? 什么目的? 他们在做什么? 这是一件坏事还是好事?
我正在阅读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(); } public static Singleton getInstance() […]
反模式 :必须存在至less两个关键要素才能正式区分实际的反模式和简单的坏习惯,不好的做法或坏主意: 一些重复的行为,过程或结构模式最初似乎是有益的,但最终会产生比有益结果更糟糕的后果 重构的解决scheme清晰logging,在实践中得到validation并可重复使用。 投票你曾经看过“野外”的TDD反模式太多了。 詹姆斯·卡尔的博客文章和关于testing驱动yahoogroup的相关讨论 如果你find了一个“未命名”的人,也可以发帖。 每个反模式的一个职位,请投票的东西。 我的既得利益是find前n个子集,以便我可以在不久的将来在饭盒会议上讨论他们。
所以我们有这个巨大的(是11000行巨大?)mainmodule.cpp源文件在我们的项目中,每当我碰它时我都畏缩。 由于这个文件如此重要,它不断累积越来越多的代码,我想不出一个好办法让它真正开始缩小。 该文件在我们的产品的几个(> 10)维护版本中被使用和主动更改,因此很难对其进行重构。 如果我只是简单地把它分解成3个文件,那么从维护版本合并更改将成为一个噩梦。 而且,如果你将这个历史悠久而丰富的文件分割开来,跟踪和检查SCC历史上的旧的变化突然变得更加困难。 该文件基本上包含了我们程序的“主要类”(主要内部工作调度和协调),所以每次添加一个function时,它也影响到这个文件,每次增长。 🙁 在这个情况下,你会怎么做? 有关如何将新function移动到单独的源文件而不搞乱SCC工作stream程的任何想法? (关于工具的注意事项:我们在Visual Studio使用C ++;我们使用AccuRev作为SCC但是我认为SCC的types在这里并不重要;我们使用Araxis Merge来进行文件的实际比较和合并)
通过Subversion,您可以使用外部工具来embedded其他存储库的工作副本,从而可以轻松地对项目中的第三方库软件进行版本控制。 虽然这些对于图书馆的重用和供应商软件的版本控制来说似乎是理想的,但他们并不是没有批评的人 : 请不要使用Subversion外部(或其他工具类似),它们是反模式,因此是不必要的 使用外部存在隐藏的风险吗? 请解释他们为什么会被视为反模式。
我发现这种模式(或反模式),我很高兴。 我觉得这很敏捷: 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__ 我不需要创build一个人工元组和计数参数,并保持元组内的%s匹配位置。 你喜欢它吗? 你/你会用它吗? 是/否,请解释。
我已经被告知不要使用element.innerHTML += …来追加东西element.innerHTML += …就像这样: var str = "<div>hello world</div>"; var elm = document.getElementById("targetID"); elm.innerHTML += str; //not a good idea? 它有什么问题?我还有其他的select吗?
我最近听到有人说数据传输对象 (DTO)是反模式的 。 为什么? 有什么select?
我们所有使用关系数据库的人都学习(或正在学习)SQL是不同的。 获得期望的结果,并有效地这样做,涉及到一个乏味的过程,部分特点是学习不熟悉的范例,并发现我们最熟悉的一些编程模式在这里不起作用。 什么是你见过的(或者你自己犯的)常见的反模式?
可能重复: 单身人士有什么不好? 单身devise模式:陷阱 单身反模式 我最近听说辛格尔顿是一个反模式。 我知道这与一个事实有关,使得一个类的单例就像把这个独特的实例变成一个全局variables,但是它也做了很多事情(限制这个对象的实例的数量,pipe理实例化等等)。 为什么Singleton认为是反模式? 还有什么select?