企业邮箱_网站建设参考_企业0元试用

数据库 虚拟云 浏览

小编:记住,这是原始类图 下面是正统的TDD,在编写实际的search()方法之前,我们实现了一个失败的测试,然后编写足够的代码来通过测试。所以我们需要在测试类中添加一个search\u exi

记住,这是原始类图

下面是正统的TDD,在编写实际的search()方法之前,安畅云,我们实现了一个失败的测试,然后编写足够的代码来通过测试。所以我们需要在测试类中添加一个search\u existing\u guitar()方法

Initialize\u inventory是一个helper方法(不是测试方法),它使用add\u guitar方法将guitars添加到库存中。

运行完测试后,当然找不到任何东西,由于搜索方法是空的

让我们创建一个简单的线性搜索算法,它接受一个吉他对象引用,并返回找到的对象。没什么复杂的,只是遍历所有的吉他,并比较它的每一个属性。

再次运行测试,它通过了

现在,我对这个实现有很多问题。首先,这些字符串比较不是很有效。它只需要一个打字错误,或一个不正确的大写字母测试失败。第二,如果业主希望他的客户有多种选择呢?这种搜索方法只返回一把吉他,这肯定不会让他高兴。第三,ZCL\ U库存和ZCL\ U吉他类相互依赖太多。有这么多事情要解决,很难知道从哪里开始。现在,这是一个现实世界的问题过于简单化,云端大数据,但我敢肯定你可以与这个故事,并已在相同的情况。事情太多,时间太短,客户希望尽快看到结果。

那我们从哪里开始?在head-first面向对象分析与设计(OOA&D)一书中,数据存储网络,有一个关于构建优秀软件的步骤的指南。这个包里面有一些实现枚举的标准类,基类是CL\u BCFG\u ENUM\u base。所以我复制了这个基类,为每个字符串属性(吉他类型、生成器、木头)创建了一个枚举类。例如,为了创建一个吉他类型enum来替换"type"属性(原声吉他–电吉他),我创建了类ZCL\u enum\u GUIT\u type,如下所示:

这样,云播服务器,我就不用将吉他类型称为"Electric"或"Acoustic",而是说ZCL\u enum\u GUIT\u type=>Electric或ZCL\u enum\u GUIT\u type=>Acoustic。如果仍然需要string属性呢?您可以使用在超类中定义的GET\u ID()方法:

输出如下:

让我们实现对search()方法的第一个更改。这相当简单,只需返回一个包含找到的吉他的内部表,而不是一个。

第二个更改是用相应的枚举类替换属性字符串。因此,我们需要更新ZCL\u GUITAR类中的属性定义。

并更新search\u existing\u GUITAR()测试方法。

手动添加这么多GUITAR真的很痛苦。大量的复制粘贴,代码看起来杂乱无章。即使将它隐藏在助手方法下。事实证明,一些聪明的人已经考虑到了这一点,并创建了一种非常简洁的方法,服务器试用,以一种更简单的方式使用测试数据。但是我会把这个留到下一篇文章中。

我想在这些更改之后,用类图的更新来完成。

当前网址:http://www.vmchk.com/app/2021/0611/88790.html

 
你可能喜欢的: