下面来分析第一种选择(a)。作为第一次尝试,我们将从一个Catalog出发,并用串来表示查询和商品。以下是一个测试:Catalogcatalog;publicvoidsetup(){catalog=newCatalog();catalog.add(“Hammer-10lb”);catalog.add(“shirt-xL-blue”);catalog.add(“shirt-L-green”);ca...[继续阅读]
海量资源,尽在掌握
下面来分析第一种选择(a)。作为第一次尝试,我们将从一个Catalog出发,并用串来表示查询和商品。以下是一个测试:Catalogcatalog;publicvoidsetup(){catalog=newCatalog();catalog.add(“Hammer-10lb”);catalog.add(“shirt-xL-blue”);catalog.add(“shirt-L-green”);ca...[继续阅读]
●基本类型困扰(PrimitiveObsession)●数据类(DataClass)●数据泥团(DataClump)●临时字段(TemporaryField)...[继续阅读]
症状●容易形式(easyform):两个代码段看上去几乎相同。●困难形式(hardform):两个代码段都拥有几乎相同的作用(无论在哪个概念层次上)。原因由于程序员们通常独立地开发系统的不同部分,因此就会出现一些重复,而他们并没有意识到会...[继续阅读]
●依恋情结(FeatureEnvy)●不当的紧密性(一般形式)[InappropriateIntimacy(GeneralForm)]●消息链(MessageChains)●中间人(MiddleMan)...[继续阅读]
●不完备的库类(IncompleteLibraryClass)...[继续阅读]
症状●字段仅在某些时候得到设置,而在其余时间内为null(或未用)。原因对象中的某一部分存在一个算法,该算法要通过字段而非通过参数来传递信息,此时就会发生这种情况;这些字段仅在算法处于活动状态时才有效或得到使用。字段...[继续阅读]
症状●一个方法似乎过于强调处理其他类的数据,而不是处理其自己的数据。(你可能会因重复性而注意到这一点,即多个客户在做同样的处理,或者可能在同一行中多次看到同一个对象。)原因对于当前的数据类和原来的数据类,其客户...[继续阅读]
●发散式改变(DivergentChange)●霰弹式修改(ShotgunSurgery)●并行继承体系(ParallelInheritanceHierarchies)●组合爆炸(CombinatorialExplosion)...[继续阅读]
症状●你正在使用一个库类,而且希望在该类上有某个特性,但是却未能如愿。如果这是一个正常的类,就可以加以修改;但是,由于这是库的一部分,因此可能无法修改也不希望对它有所改变。原因库类的作者未能满足你的要求(或者由于...[继续阅读]