一次代码评审引发的TDD(续)

上周写的一次代码评审引发的TDD发布到TDD讨论群后(感兴趣的同学可以私信爱睡觉加入,微信号Vic-VVu),群里的大神们纷纷给了反馈,印象最深的来自麦宇安大神:

@葛亮 测试没有清晰表达意图,怎么就best fit了,那些1 2之类的魔法数字代表什么?光看测试完全不知道在测什么!

听上去虽然有些逆耳,但是逆耳的一般是忠言,苦口的一般是良药,赶紧再回去看看自己的测试代码,如果没有上下文,站在第一次读代码的读者角度,的确完全不知道测试的是什么,自以为深谙Clean Code之道的我顿时倍感惭愧。。。

    @Test
    public void two_matched_tariffs_with_different_rank() {
        Tariff matchedTariff1 = new Tariff(1, 1);
        Tariff matchedTariff2 = new Tariff(2, 2);
        List<Tariff> matchedTariffs = Arrays.asList(matchedTariff1, matchedTariff2);
        List<Tariff> bestFitTariffs = Arrays.asList(matchedTariff1);
        assertListEqual(bestFitTariffs, selectBestFit(matchedTariffs));
    }

知错能改,善莫大焉,于是立马重构,首先消除魔法数字,代码如下,

    @Test
    public void two_matched_tariffs_with_different_rank() {
        Tariff matchedTariff1 = new Tariff(GEO_LEVEL.TOWN, GEO_LEVEL.TOWN);
        Tariff matchedTariff2 = new Tariff(GEO_LEVEL.CITY, GEO_LEVEL.CITY);
        List<Tariff> matchedTariffs = Arrays.asList(matchedTariff1, matchedTariff2);
        List<Tariff> bestFitTariffs = Arrays.asList(matchedTariff1);
        assertListEqual(bestFitTariffs, selectBestFit(matchedTariffs));
    }

测试通过,代码稍微好一些了,但是测试意图还不够明显,决定重命名一下测试方法和几个关键变量,代码如下,

    @Test
    public void town2town_is_more_fit_than_city2city_tariff() {
        Tariff town2town = new Tariff(GEO_LEVEL.TOWN, GEO_LEVEL.TOWN);
        Tariff city2city = new Tariff(GEO_LEVEL.CITY, GEO_LEVEL.CITY);
        List<Tariff> candidateTariffs = Arrays.asList(town2town, city2city);
        List<Tariff> bestFitTariffs = Arrays.asList(town2town);
        assertListEqual(bestFitTariffs, selectBestFit(candidateTariffs));
    }

测试通过,比较下现在的代码和最初的代码,感觉好多了:)

群里面的另外一名大神还提到性能问题,说二叉树实现的性能会比现在的简单实现好,这让我想到下面这句名言,

“在编程中,过早优化是万恶之源。 ” —— Donald Ervin Knuth,1974

Donald是经典巨著《计算机程序设计的艺术》的作者,荣获1974年的图灵奖。在代码可读性和性能之间我会优秀选择代码可读性,因为你做的局部性能优化可能在系统级别微不足道,以本文提到的代码为例,我特意测试了输入10000和100000个Tariff时二叉树实现和简单实现的性能差异,

数据量 二叉树实现 简单实现
10,000 16ms 21ms
100,000 198ms 390ms

可以看出二叉树的性能的确比简单实现的性能好一些,但是现实业务中,匹配的报价条目最多不会超过100条,性能基本上不会有差异,所以这时候我们更应该优先选择代码可读性。

有一种代码叫做别人写的代码,相信每个程序员都有过读这种代码的痛苦经历,为了减少这种经历,难道我们不应该多花一些时间和精力在方法,变量的命名上吗,难道我们不应该多花点时间和精力让代码读起来更简单一些吗?

今天借Code Review例会的机会,把这些想法和二叉树实现的作者分享了一下并解答了一些问题,令人开心的是最终大家愉快地达成了一致:)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,575评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,623评论 4 59
  • 每周四下午我们会花一个小时针对一个选定的用户故事做代码评审,这次选定的用户故事是这样的: 做为一个物流服务提供者,...
    心水阅读 792评论 2 6
  • 都说经济不景气了,成千上万的小公司正在疾速死掉。 说到这儿该开香槟了吧?因为我们公司还奄奄一息,只不过即将从热闹的...
    拉扎啵阅读 381评论 2 2
  • 01 同事们在议论:“你们知道吗?上个月西安又一个女的跳楼了,还是带着儿子一起跳的,据说又是因为抑郁。好可怕啊,我...
    朴素者阅读 3,466评论 2 5