tw-oocamp-201512 / questions

上课期间各种疑问可以发在这个repo的issues里,方便大家讨论,随时想到随时写
8 stars 0 forks source link

在做完任务分解以后,该怎么对代码进行设计? #11

Open ucooling opened 8 years ago

ucooling commented 8 years ago

之所以抛出这个问题,就是说,我已经完成了任务分解的工作,但是当在写实现的时候,该怎么去设计自己的代码,是每个任务写到一个文件还是相关的写到一个文件,还是有什么其他的选择?

freewind commented 8 years ago

这个在“测试驱动开发实用指南”这本书的前几章讲了,比如一个测试类里要放什么样的测试,什么情况下应该拆分到多个测试类,test suite怎么用,package怎么用等。我觉得你可以看看这本书(或者找我借),然后我们可以讨论一下

lvjian700 commented 8 years ago

设计是为了更好的组织实现。让实现的代码具有良好的可读性,良好的扩展性。

原则:先确定如何使用

如果你根据TDD or BDD, 先用测试来使用你的代码,让测试来约束当前代码的scope .

_如果你在做一个WebUI相关的任务_

先做Web UI的mockup, 然后 controller -> services -> model ....

_如果你做API_

先确定最基本的input/output, 然后 controller -> services -> model...

按照上面的策略,代码始终是从上层TDD or BDD到下层。 每一层都由上层来确定scope。

好的设计: Keep Simple, 恰如其分,不多不少

写controller层的时候,services还不存在. mock service 此时controller测试中对services的mock(先确定如何使用service),就是service层的scope 以此类推Model层提供的方法

好的设计:是重构出来的

Write Test First(Red) -> Make it Green -> Refactor

Refactor

设计模式实在第三步才会考虑的东西。 所以一开始追求好的设计,基本都会被block住。困扰你的问题可能是:

  1. 什么是好的设计?
  2. 如何实现?
  3. 会不会是过度设计?

在做完任务分解以后,该怎么对代码进行设计?

设计从测试开始,先写使用,再写实现.

曾经有这么个传说,什么是好的设计? 加一行多余,删一行不行