|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-09-15
hax 写道 抛出异常的爱 写道 你的例子说明了你与别人沟通有一定的问题。 自从我看了楼主的第一篇帖子之后,我就想说这句话。到你这楼终于说了,我终于舒坦了。。。 还有一句我憋不住了,先说了:可怜的gigix…… 再来两句成语: 刻舟求剑 对牛弹琴 可怜的hax,净说实话,结果挨骂了吧。。。实话不能常说。。。我看完前面都笑得趴在地上了。如果TDD就是这样,估计kent beck能气死再气得诈尸。。。。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-15
gigix 写道 引用 在我看来,不论你是直接返回字符串常量也好,还是采用之前的那个比较复杂的循环方式转换也好,也或是其他方式,只要它让这个测试通过,那我就认为他们的功能是一样的,都实现同样的需求。
怎么说呢?人,不仅要会看书,会听话,还得会动脑子。人得有常识,知识再多,要是连常识都没有,那就叫傻子。 就比如说吧,你说这两个代码: # code A
result = []
(1..5).each{|i| result << i*2}
# code B
result = (1..5).map{|i| i*2}
没有区别(虽然它们实际上可能还是有那么一点点速度或者空间上的区别),行,这是符合常识的。可是你硬要说这两个代码: // code C
public Object reverse(String str) {
return "technology devolopment software a is Tdd";
}
// code D
public String reverse(String str) {
String[] words=str.split(SPACE);
StringBuilder result=new StringBuilder();
for (int i = words.length-1; i >=0; i--) {
result.append(words[i]).append(SPACE);
}
return result.toString().trim();
}
没有区别……哎,就算你吹出大天来,我还是要说:你就算没有知识也该有点常识吧?也甭跟我讲什么测试啦什么重构啦之类的大道理,道理再大也大不过个合情合理。就您这样掰扯下去,人家不明白的还以为学重构学得岔了气呢。 gigix,你真的不觉得他故意来消遣大家么? |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-16
楼上的朋友,如果你认为我是来消遣你你可以不回帖,你也可以叫管理员删贴。
对于你说的,在junit newsgroup上kent beck先生未进行回复,但是很多其他的朋友都回复了,就像testng的作者,Cédric Beust,Michael Feathers ,Jeff等等也都回复了,我倒是未见他们气死再气得诈尸,相反,他们却告诉了很多我想知道的东西。 如果你想知道kent beck先生是否会如你所说,你不妨给他发邮件了解了解. |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-16
to gigix:
我承认我没你聪明,而且我还是有点傻,所以才会向你请教,:) 不过我发现,我的关注点好像一直和你都对不上号。 也许这就是聪明人跟傻子的区别哦,:) 你实践TDD的方式的确和我的方式有很大的不同,不过很荣幸的是,从你的谈话中,我总能学到很多东西,非常感谢. 顺便说一句,我一向都很尊重你,尤其是你对软件图书行业贡献,:),非常感谢. |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-16
此外,我声明一下,我发起本帖,主要目的就是寻找答案,讨论(借鉴大家的)适合的实践方式,如果哪位朋友不是为了讨论而来,请不要回帖,如果回帖,和该问题无关,我不会回帖,请谅解。
对于不是为了讨论而来的朋友,我希望仔细思考Ilja跟你说的: Hai, I couldn't tell whether you are agreeing or disagreeing with my point. Please elaborate if you feel like it. Thanks, Ilja 最后,本帖在junit newsgroup上已经有了讨论结果,大家感兴趣的话自己去看,地址:http://tech.groups.yahoo.com/group/junit/message/19846 由于时间上的原因,我不在回帖了,请谅解,如果想进一步沟通的朋友,请给我邮件,谢谢. |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-18
hyysguyang的精神可嘉,毕竟我们都是一步步走过来的,走在前面的应该拉走在后面的一把,而不是一脚踩死。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-09-18
gigix虽然语气重了点,但都说到点子上了.我这里总结一下:
1. 你的Requirement不是测试驱动出来的; 2. 你的两段代码严格意义上不叫重构,可你却拿"自己重构的步骤有点大"为自己辩护; 3. 在真实的世界,你的第一段代码根本不需要重构; 我再加一句, 面试你的人绝对不是在跟你讨论TDD的学术问题,你却自己钻到牛角尖(这句话他们评价的很对). 很多好心人给你指出这一点,你却认为他们不是在讨论学术,而是在人身攻击.你的虚心态度不光要用在学术上. |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-18
怎么这么多说风凉话的人。。。
我觉得楼主一开始之所以给出个极其简单的实现,无非是想(极端地)演示TDD,就好像那个著名的money的例子,同样很罗嗦,只不过那是kent beck写出来的,没人敢说他sb 而那两个面试的人,显然没有想清楚自己是在考察TDD还是在考察算法问题 对重构的理解确实有误 沟通能力需要加强一下,共勉 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-20
引用
code1:
package org.opensource.test;
public class StringReverser {
public Object reverse(String str) {
return "technology devolopment software a is Tdd";
}
}
重构代码 ==>
code2:
package org.opensource.test;
public class StringReverser {
private static final String SPACE = " ";
public String reverse(String str) {
String[] words=str.split(SPACE);
StringBuilder result=new StringBuilder();
for (int i = words.length-1; i >=0; i--) {
result.append(words[i]).append(SPACE);
}
return result.toString().trim();
}
}
看到楼主能把code1重构成code2这个样子 忽然想起见过的公务员考试里那种题目,类似这样的推理题: 引用 1.问:请观察下面一堆数字,说出其中的规律 2,4,8,16 答:2的X次方 2.问:请观察下面一个数字,说出其中的规律 16 答:2的4次方 感觉楼主的重构跟第2道推理有点神似. 按您上面的那个死需求,个人感觉如果您把code2重构成code1比较能让人接受. |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-20
xmx0632 写道 引用
code1:
package org.opensource.test;
public class StringReverser {
public Object reverse(String str) {
return "technology devolopment software a is Tdd";
}
}
重构代码 ==>
code2:
package org.opensource.test;
public class StringReverser {
private static final String SPACE = " ";
public String reverse(String str) {
String[] words=str.split(SPACE);
StringBuilder result=new StringBuilder();
for (int i = words.length-1; i >=0; i--) {
result.append(words[i]).append(SPACE);
}
return result.toString().trim();
}
}
看到楼主能把code1重构成code2这个样子 忽然想起见过的公务员考试里那种题目,类似这样的推理题: 引用 1.问:请观察下面一堆数字,说出其中的规律 2,4,8,16 答:2的X次方 2.问:请观察下面一个数字,说出其中的规律 16 答:2的4次方 感觉楼主的重构跟第2道推理有点神似. 按您上面的那个死需求,个人感觉如果您把code2重构成code1比较能让人接受. 不能自己删除回复吗?? |
|
| 返回顶楼 | |









