`
hyj1254
  • 浏览: 342368 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

最近感悟:TDD与设计

阅读更多
   TDD到底是什么,它是怎么做到演进出一个优良的设计的?这些疑问驱使着自己不断地思考,并看了很多讨论,下面是自己的一点心得。
   testCase反映的应该只是需求,不能把设计掺杂进来,设计不是它考虑的问题,它只提出你要做什么,至于怎么做,它不管。TDD是需求驱动,在读kent的《tdd》时这样的想法若隐若现,没想到还真有人也这么说,与偶暗合。
   设计,由重构来负责。每次让testCase测试通过后,就应该试图进行重构,恰当的重构能够带来恰当的设计。
   另外,参考如下帖子:http://www.iteye.com/topic/6551。我的理解是,如果需要算法优化,则需要进一步进行tdd,增加需求即算法优化,编写testCase、编码、测试通过。得出来的结果甚至完全推翻了之前的算法,这点光靠重构是无论如何也做不到的。这篇帖子的主要议题是,tdd需不需要先验的宏观构思,在它的指引下进行tdd。我的观点是,不需要,但必须把它的目的转化为testCase,或是需求。为什么要这个宏观构思?比如这篇帖子,它就是要解决效率问题,那就编写一个测试效率的testCase,然后由它驱动着自己寻找最优算法;而不是一开始就按该算法的套路编码,这就不是测试驱动了。所谓宏观构思其实也是一种需求迫使它出现在你的脑海里,既然如此,就把这需求也暴露出来。
   现在仍有一个问题没有解决,kent说过,编写独立的测试能够实现“高内聚、低耦合”,这一点我还没有领悟。假如做到了这点,而重构又及时而恰当,那测试驱动的功力应该就到位了吧。
0
1
分享到:
评论

相关推荐

    李世鹤博士的TD-SCDMA讲座(大唐)

    2. **双工方式**:与FDD(频分双工)不同,TD-SCDMA使用TDD(时分双工),上行和下行链路在同一频率上交替使用时间资源。 3. **帧结构**:TD-SCDMA的帧结构设计考虑了突发性数据传输的需求,具有灵活的时隙分配能力...

    书:读书笔记&技术心得

    标题为“书:读书笔记&技术心得”的压缩包文件,很显然,它包含了一个作者在阅读过程中所做的笔记和对技术的理解,这可能是关于编程、系统设计、软件工程或者任何与信息技术相关的主题。 在描述中提到的“一个记录...

    reading-notes:阅读笔记,例如书和博客等

    这种“总结与思考与写作”的过程是学习的黄金三角,能帮助开发者将理论转化为实践,提升问题解决能力。 “一点监督的目的”可能指的是通过公开笔记来促使自己保持学习进度,同时也可以接受他人的反馈和建议,进一步...

    sukabuku:aplikasi untuk yang suka buku

    用户可以创建自己的书单,推荐好书,与他人交流阅读感悟,从而增强阅读的乐趣和价值。 文件名为"sukabuku-master"的压缩包,很可能包含了sukabuku应用的源代码。"master"分支通常是GitHub等版本控制系统中的主分支...

    easy_journal_app:使用Ruby on Rails制作的应用程序

    "简易日记"应用程序是使用Ruby on Rails框架开发的一款个人日志记录工具,旨在提供一个简单易用的平台,让用户能够方便地记录生活点滴、想法感悟或者工作笔记。Ruby on Rails,简称Rails,是一款基于Ruby语言的开源...

    我的博客

    它可能包含了博主的技术文章、教程或者是日常生活感悟,通过这个平台,博主与读者进行互动和交流。 【标签】:“Ruby”是关键信息,这表明博客的后端开发是使用Ruby语言完成的。Ruby是一种面向对象的脚本语言,以其...

    c++奋斗乐园 10月离线期刊

    在编程感悟部分,作者可能会分享自己的编程经验,比如代码风格的规范、错误调试技巧、软件设计原则(如SOLID原则)、测试驱动开发(TDD)的重要性等。这些软技能对提升编程素养、提高代码质量有着不可忽视的作用。 ...

Global site tag (gtag.js) - Google Analytics