下面来分析第一种选择(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...[继续阅读]
这个例子涉及到重构技术和测试驱动设计。假设要开发一个系统玩连线游戏:在方格内放上不同的标识。在连线游戏中,有3×3个方格,若能把你的标识放在同一行上的三个方格中即取胜。在Hasbro所提出的4连子游戏(ConnectFour)中,则有一个...[继续阅读]
●基本类型困扰(PrimitiveObsession)●数据类(DataClass)●数据泥团(DataClump)●临时字段(TemporaryField)...[继续阅读]
症状●容易形式(easyform):两个代码段看上去几乎相同。●困难形式(hardform):两个代码段都拥有几乎相同的作用(无论在哪个概念层次上)。原因由于程序员们通常独立地开发系统的不同部分,因此就会出现一些重复,而他们并没有意识到会...[继续阅读]
●依恋情结(FeatureEnvy)●不当的紧密性(一般形式)[InappropriateIntimacy(GeneralForm)]●消息链(MessageChains)●中间人(MiddleMan)...[继续阅读]
●不完备的库类(IncompleteLibraryClass)...[继续阅读]