|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-09-20
daquan198163 写道 对重构的理解确实有误
沟通能力需要加强一下,共勉 感谢daquan198163的指点,的确我对重构理解确实有误,其实这个问题主要也再于重构,这几天仔细思考了一下,也和一个同事讨论了一下,他认为其实测试代码中的字符串于产品代码中的字符串不属于重复,应该是产品代码里面的重复才算的上重复,仔细考虑之后,我很认同他的观点,实际上测试代码里面的对于产品代码来说只是输入和输出,他才不管产品代码是怎么实现的呢?所以应该在产品代码里出现重复的时候再考虑这样重构。 而至于沟通嘛,再怎么强调都不为过,不断努力提高中。 Kent Beck先生的例子看起来虽然简单,但我认为那个确实TDD的精华。重在领悟精华,这样才能随心所欲的去运用,在那个money的例子中,Kent Beck先生也提到过,运用TDD,你可以大步前进,也可以小步快走,重要的是你能控制你自己,你既能够大步快走也能小步前行(你必须具备这样的能力),在该停的时候(当你大步快走是,一个测试失败掉了)你要能够停下来走起那婀娜多姿的小碎步。从这点来讲,我却认为没有什么重构幅度太大之类的,因为对不同的人意味着不同的幅度。 就像Joakim Ohlrogge说的, "The simplest thing that can possibly work" is confusing because it is very subjective and what is simple to one person may be hard for another. I think "the simplest thing that could possibly work" is often interpreted as "the easiest thing that could possibly work" which at first glance looks similar but can be very different. Simple is not always or even often "easy". 对于我的那个重构,Jeff认为那更应该叫generalization。的确,呵呵,更应该叫generalization,问题的确就在这儿。 ps:看过daquan198163兄的“离开公司前写给在一起奋斗了半年多的兄弟们”,受益匪浅。还希望能不吝赐教,先谢过。 顺便再说一下,我真的不原再回复了,我的这些回复基本都是从junit newsgroup上copy过来的,更详细的信息,大家请到那边去看,时间有限,希望大家能理解。 毕竟做开发的最讨厌的就是做重复的事情。因此我也及其不愿意重复junit上的话。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-21
hyysguyang 写道 daquan198163 写道 对重构的理解确实有误
沟通能力需要加强一下,共勉 感谢daquan198163的指点,的确我对重构理解确实有误,其实这个问题主要也再于重构,这几天仔细思考了一下,也和一个同事讨论了一下,他认为其实测试代码中的字符串于产品代码中的字符串不属于重复,应该是产品代码里面的重复才算的上重复,仔细考虑之后,我很认同他的观点,实际上测试代码里面的对于产品代码来说只是输入和输出,他才不管产品代码是怎么实现的呢?所以应该在产品代码里出现重复的时候再考虑这样重构。 而至于沟通嘛,再怎么强调都不为过,不断努力提高中。 Kent Beck先生的例子看起来虽然简单,但我认为那个确实TDD的精华。重在领悟精华,这样才能随心所欲的去运用,在那个money的例子中,Kent Beck先生也提到过,运用TDD,你可以大步前进,也可以小步快走,重要的是你能控制你自己,你既能够大步快走也能小步前行(你必须具备这样的能力),在该停的时候(当你大步快走是,一个测试失败掉了)你要能够停下来走起那婀娜多姿的小碎步。从这点来讲,我却认为没有什么重构幅度太大之类的,因为对不同的人意味着不同的幅度。 就像Joakim Ohlrogge说的, "The simplest thing that can possibly work" is confusing because it is very subjective and what is simple to one person may be hard for another. I think "the simplest thing that could possibly work" is often interpreted as "the easiest thing that could possibly work" which at first glance looks similar but can be very different. Simple is not always or even often "easy". 对于我的那个重构,Jeff认为那更应该叫generalization。的确,呵呵,更应该叫generalization,问题的确就在这儿。 ps:看过daquan198163兄的“离开公司前写给在一起奋斗了半年多的兄弟们”,受益匪浅。还希望能不吝赐教,先谢过。 顺便再说一下,我真的不原再回复了,我的这些回复基本都是从junit newsgroup上copy过来的,更详细的信息,大家请到那边去看,时间有限,希望大家能理解。 毕竟做开发的最讨厌的就是做重复的事情。因此我也及其不愿意重复junit上的话。 说实话你肯定没好好看回复 。对于jeff说的, 前边回复中就有人说明了 gigix也说的是这个意思的 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-21
引用 对于我的那个重构,Jeff认为那更应该叫generalization。的确,呵呵,更应该叫generalization,问题的确就在这儿。 如果要作这件事。。。。 先要写两个不同的字串进行测试。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-24
楼主,好学是好事情,但老外有时候跟你玩假客气你别当真。再说我前面说的话,我还真没有伤你之意,我倒是想调侃一下gigix。。。
楼主我想你看了那么多,也应该明白大家的意思了吧。我之所以写两个成语,无非是表达两个意思: 刻舟求剑,就是说你过于教条的看待问题了。当然,我们很多人都要经过这个阶段,但是教条到你这个程度的,倒还是少见。不过这也许预示着你将来有很大的成就(偏执的人往往能取得很大的成功)。 对牛弹琴,是说gigix等其他人说你的,你好像很少能听得进去,总是过多的强调你自己的想法。我猜测大概是这句成语惹恼了你。不过我觉得这个成语并没有人身攻击的意思。但是你好像反应很大也。 其实你的回帖还有不少可调侃之处,不过看来你没有什么幽默感(整个javaeye上许多人也缺乏幽默感),我就不说了。 唯一想补充的一点是,不要动不动就说什么“中国的悲哀”,我担当不起。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-24
好玩。好象是偶公司面的。TDD。伟大的TDD。呵呵.
|
|
| 返回顶楼 | |
|
最后更新时间:2007-09-24
daquan198163 写道 怎么这么多说风凉话的人。。。
我觉得楼主一开始之所以给出个极其简单的实现,无非是想(极端地)演示TDD,就好像那个著名的money的例子,同样很罗嗦,只不过那是kent beck写出来的,没人敢说他sb 而那两个面试的人,显然没有想清楚自己是在考察TDD还是在考察算法问题 对重构的理解确实有误 沟通能力需要加强一下,共勉 本来不想说什么,但是既然身为tdder之一,我只想说我特地强调了可以是任意字符串。tdd是个过程,所以我们出这道基础得很的题目无非是看下代码风格和对算法(空间复杂度)的理解,仅此而已。我们之所以摇头并不是因为lz对tdd理解上的偏差(在此我不愿意讨论这个),而是因为lz对业务的理解让我们失望,web的开发理解和沟通同样很重要不是吗? |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-24
DavidLu 写道 daquan198163 写道 怎么这么多说风凉话的人。。。
我觉得楼主一开始之所以给出个极其简单的实现,无非是想(极端地)演示TDD,就好像那个著名的money的例子,同样很罗嗦,只不过那是kent beck写出来的,没人敢说他sb 而那两个面试的人,显然没有想清楚自己是在考察TDD还是在考察算法问题 对重构的理解确实有误 沟通能力需要加强一下,共勉 本来不想说什么,但是既然身为tdder之一,我只想说我特地强调了可以是任意字符串。tdd是个过程,所以我们出这道基础得很的题目无非是看下代码风格和对算法(空间复杂度)的理解,仅此而已。我们之所以摇头并不是因为lz对tdd理解上的偏差(在此我不愿意讨论这个),而是因为lz对业务的理解让我们失望,web的开发理解和沟通同样很重要不是吗? |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-25
DavidLu 写道 daquan198163 写道 怎么这么多说风凉话的人。。。
我觉得楼主一开始之所以给出个极其简单的实现,无非是想(极端地)演示TDD,就好像那个著名的money的例子,同样很罗嗦,只不过那是kent beck写出来的,没人敢说他sb 而那两个面试的人,显然没有想清楚自己是在考察TDD还是在考察算法问题 对重构的理解确实有误 沟通能力需要加强一下,共勉 本来不想说什么,但是既然身为tdder之一,我只想说我特地强调了可以是任意字符串。tdd是个过程,所以我们出这道基础得很的题目无非是看下代码风格和对算法(空间复杂度)的理解,仅此而已。我们之所以摇头并不是因为lz对tdd理解上的偏差(在此我不愿意讨论这个),而是因为lz对业务的理解让我们失望,web的开发理解和沟通同样很重要不是吗? 何止是“同样很重要”,重要多了 弄不清楚做什么,再怎么TDD,做事方式再怎么好也没用。方式越好错得越远。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-25
dustinth 写道 gigix虽然语气重了点,但都说到点子上了.我这里总结一下:
1. 你的Requirement不是测试驱动出来的; 2. 你的两段代码严格意义上不叫重构,可你却拿"自己重构的步骤有点大"为自己辩护; 3. 在真实的世界,你的第一段代码根本不需要重构; 我再加一句, 面试你的人绝对不是在跟你讨论TDD的学术问题,你却自己钻到牛角尖(这句话他们评价的很对). 很多好心人给你指出这一点,你却认为他们不是在讨论学术,而是在人身攻击.你的虚心态度不光要用在学术上. 贴子上我从头乐到尾,如果总结lz存的的问题,dustinth说的没错。还有,其中有位仁兄(抛出异常的爱)事例也很对。 在这篇贴子中还是很有收获的。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-26
个人认为,TDD到底是测试功能还是代码逻辑结构?如果只是测试功能是否正确,那么重构前后的两段代码执行后结果完全一样,因而从功能上来说这个是重构。当然是在仅仅对于那个特定的句子来说,对于其它的句子可能就不正确了。
从hyysguyang的角度来说,他认为客户的需求只是把那个句子简单的反向一下。他的Unit测试也是仅仅针对这个需求而已。重新代码后,对于调用端来说没有任何结果的改变,个人认为可以说是重构。 至于大家争论的这么多,个人认为关键点在于需求被hyysguyang和面试人员的理解范围不一样。按照gigix理解的需求范围,对于“I am Michael”这句话来说,重构前后的的执行结果完全不一样,因此这段代码不是重构,因为他改变代码的功能。 |
|
| 返回顶楼 | |











