论坛首页 软件开发和项目管理版 TDD

TDD能带我们去哪里?

浏览 14055 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2005-03-21
呵呵
那就是说设计也是一门隐形知识
只可意会,不可言传

要注意修炼内功了
   
0 请登录后投票
最后更新时间:2005-03-21
Archie 写道

应该说以你现有的经验来看,感觉有些夸大。这样说比较合适些,并不是每个人都觉得夸大了。,抠一下。


我所说的夸大意思仅仅是为了对firebody的说法表示同意
因为他的朋友的理解已经超出了TDD的本意
TDD是规约设计目标的方法,而不是规约设计结构的方法
所以使用TDD不一定就会使设计变好
我也抠一下
   
0 请登录后投票
最后更新时间:2005-03-21
flyingbug 写道
Archie 写道

应该说以你现有的经验来看,感觉有些夸大。这样说比较合适些,并不是每个人都觉得夸大了。,抠一下。


我所说的夸大意思仅仅是为了对firebody的说法表示同意
因为他的朋友的理解已经超出了TDD的本意
TDD是规约设计目标的方法,而不是规约设计结构的方法
所以使用TDD不一定就会使设计变好
我也抠一下 :D


设计是不是能变好,是否使用TDD并不能起决定作用,关键还是看个人的能力,没有TDD之前难道就没有好的设计吗?TDD只是让人更容易得到好的设计。我这么想的。
   
0 请登录后投票
最后更新时间:2005-03-21
庄表伟 写道
不是已经说了吗?

因此,要提高自己的设计能力,最需要花功夫提高的,是理解现实世界,理解需求的能力,只有真正理解了需求,只有真正理解了现实世界的运行,才有可能提高设计的水平。至于其他的,都是辅助的力量,并非根本。


首先表示同意,但个人认为这些辅助力量正发挥着至关重要的作用,如果没有这些力量的辅助,要提高设计水平是非常困难的事,只有一些特别聪明的人才能很快的提高。而有了辅助力量,使象我这样的普通程序员也可以以较传统思路轻松得多的方式去考虑设计问题。
比如:单元测试、重构,自然还有测试驱动。
   
0 请登录后投票
最后更新时间:2005-03-21
庄表伟 写道

说说我的一些理解
“容易测试、容易理解、符合面向对象法则、结构清晰、便于修改”有点互相矛盾,我的理解是真的用面向对象思路,由于存在大量的抽象和继承,代码并不容易理解,结构也只有在掌握面向对象思路的人眼里是清晰的。容易测试似乎不是什么值得一提的东西。便于修改也是有便于在什么范围内修改的度的问题。
TDD我的理解是不能用完美主义去用它,否则可能会歇斯底里
对于复杂的类之间关系,编写能够测试大多数情况的单元测试需要这个人的强大把握能力。
TDD的意义可能是发现设计中需要的元素,强迫你思考这个类到底干什么的,需要什么方法等,对设计的质量影响可能有,在有的情况下前提是你脑子中要有这些好的设计,TDD就是个启发而已。
所以也不能说TDD不能带来好的设计,而是取决于你脑子中有没有好的设计。
好的设计,一定是符合现实需求的设计,但不一定便于今后可能的需求变更。

这个人碰到的情况我没看懂到底怎么回事,泛泛的说说而已。
   
0 请登录后投票
最后更新时间:2005-03-21
引用
要提高自己的设计能力,最需要花功夫提高的,是理解现实世界,理解需求的能力,只有真正理解了需求,只有真正理解了现实世界的运行,才有可能提高设计的水平。

这里我想庄表为的理解是有些偏差的。理解需求是产生设计的一个大多数时候的必要条件。现实世界的运行毕竟不是程序的运行,你不可能建造起一个完全反应世界的模型。
良好的设计究竟来自什么,我想无非是两种——天才和不断的修改。天才的问题我不谈,因为我不是天才。而不断地修改,我想就需要你能按照一定的途径,遵从一定的标准,对设计不断地进行修正。TDD和重构,就是这个途径的一种。而这个标准就则会根据不同的人有不同的想法。问题并不在于TDD和重构能不能带来好的设计,而在于你是否知道什么是好的设计。而这实际上是一个无法立即解决的问题。而TDD和重构的好处在于可以让你在一个短暂的阶段以后,能查看一下你的设计是否比以前的设计更加良好,然后决定是否进行进行修正下去。也就是说那个良好的设计是在你TDD和重构的过程中不断地逼近的,而不是一次性的达到的。
当然我不否认可能存在一个直接得到良好设计的方法,但是我目前确实不能提供这个方法,也没有看到什么人提供了这个方法。即便是GOF和OO以及使用AOP,我也不能说你理解了这些之后就良好设计了。所以我宁愿去TDD和重构下来,慢慢的逼近良好设计。
   
0 请登录后投票
最后更新时间:2005-03-21
to:ozzzzzz
我想要表达的是,恰恰是:“TDD和重构并不能使你逼进良好的设计。”

TDD和重构,当然能够支持你不断的修改自己的设计,判断一个设计是不是良好,该如何更好,这个标准不能从TDD和重构本身得到的。

理解当前的需求,是设计的必要条件。但是并非充分条件。我的原话是:“最需要花功夫提高的,是理解现实世界,理解需求的能力”现实世界如何运行与需求并不完全一致。但是,如果“仅仅就事论事地去理解当前的需求”是不够的。

或者再进一步说,当客户提出了一个需求,你需要理解的不但是他这个需求说了什么,更要理解他因什么样的现实困境而产生目前的这个需求。进而才能协助用户一起判断,他所表述的这个需求,是不是真正能够帮助他摆脱目前的困境。

不是说理解世界,就是照着世界原样搞一个程序。

而是说:
只有深入理解用户的那个世界,才能真正理解用户的需求;
只有深入理解用户的需求,才有可能判断一个设计是不是符合这样的需求;
只有深入的掌握的判断设计优劣的标准,才有可能得到一个好的设计。
   
0 请登录后投票
最后更新时间:2005-03-21
to 庄
判断一个设计是否良好的标准,并不来自TDD和重构。这一点我也在前面承认了,但是这个标准也绝对不会来自所谓的需求,也不会来自需求的世界。你不可能完全的理解这个世界,也不必要去完全的理解这个世界。你要在程序中反应的知识只是这个世界的很小的侧面。
同时我也请你注意,所谓深入的了解用户的那个世界,也需要有手段。而使用TDD和重构,来小步的不断迭代,正好是一个给你提供不断地去理解用户需求的机会。
而用户的需求,并不能完全的不经过某些转化,形成你的程序。这个转化的过程,使用TDD和重构,也刚好可以让你不断地坚持检查你的工作是否偏离了用户的需求。
   
0 请登录后投票
最后更新时间:2005-03-21
唉,我发现其实我们表面上看起来是在争论,其实观点是一致的。

表达方式的不同,强调的重点不同,使我们的观点看起来对立,其实很接近
   
0 请登录后投票
最后更新时间:2005-03-23
to 庄表伟:
"互动平台开发笔记"中提到需求了么?还是您自行跑题了?
在大多数人的概念中"好的设计"的意思和您的"好的设计"好像不一样。
   
0 请登录后投票
论坛首页 软件开发和项目管理版 TDD

跳转论坛:
JavaEye推荐