我很忙!我的大部分时间都花在使用分析技术或课程工作上,当我切换到编程模式时,我需要快速生成代码。因为,我所在实验室的初级研究员并不关心我是否使用TDD或算盘,只要我得到快速的结果。
我读过“TDD示例”并发现它非常有用。我随后购买了“重构:改进现有代码的设计”,“设计模式:可重复使用的面向对象软件的元素”,以及“有效地使用遗留代码”但这些书很大,现在进入它们的前景令人生畏!
“TDD by example”的会话风格和流程使我很容易融入我的日程安排。但是,我不知道如何在这些其他书籍中以及以何种顺序工作;看起来每个都是相关的(我是一个餐饮哲学家的僵局 - 我正在等待我的编程工具包的每个方面都要改进,但他们的相互依赖性让我要么陷入僵局,要么失去上下文切换的时间 - 对不起类比:))。例如我有遗留代码,需要重构并用测试覆盖,我需要使用TDD推进(但我从来没有这样做),我需要使用设计模式进行编码,这样我就不再重新发明轮子了。
是否有一种很好的方法可以将这些必需的读取分解为字节大小的块,以及将这些技术应用于当前项目时的一种方法(个人而言,如果我不能,我会丢失信息)立即申请)?我是否专注于一本书并完成它?我是否首先需要TDD然后重构和设计模式技能(但是'鸡和鸡蛋'所有这些单元测试书都谈论设计模式和重构,好像我知道它们是前后的)?
我已经阅读了best tutorials for beginners,但它没有解释我如何将其整合到繁忙的日程中。而且,我读了programming in a scientific environment,但是当你已经落后时,它又错过了你如何添加这些技术的标记。
答案 0 :(得分:2)
鉴于你所做的描述,我首先要质疑这个假设。我对程序的复杂性一无所知,但是如果你的编码完全由生成计算组成而且它是一种“脚本级”,这意味着对于给定的代码片段,你可以轻易地将其抛出重写它保持它,然后很多这些技术是矫枉过正。我认为TDD(可能是在集成测试中结合使用的配对版本)总是很有价值,但除此之外,不一定。
但是,如果你真的在设计软件系统(并且至少你可能正在做的一些事情可能有资格,即使它们都没有,例如数据库模型,输入屏幕,结果分配)那么我会说足够了这些书要开始使用,不要担心不能一直做好初学者,只要确保你每周都在取得可衡量的进步。
顺便说一下,设计模式可以用来了解类似问题是如何解决的,但不要“设计使用它们”而不是其他东西。你的设计可能不是很好,但模式来自现实世界的设计,而不是相反。所以你当然可以看到更多面向对象的解决方案,你可能正在做什么,但不要担心你做的是否符合设计模式。确保你所做的是按照自己的条件进行良好的可维护设计,并且模式将从中流出。
答案 1 :(得分:1)
你不能一次性完成所有这一切(你知道的)。有些技术可以节省您的时间,并且TDD和Refactoring在该列表中很高。特别是对于TDD - 不要担心何时这样做,是否要这样做,如何将其纳入你的日程安排;去做就对了。越早开始,越早省时间。一旦你掌握了这项技能,那么当你接近遗留代码的任务时,围绕它编写测试来保护你(不,这不是TDD,但你用TDD磨练的测试编写技能将适用)。当您对需要更改的模块有很好的覆盖范围时,您可以自由地重构它,经常运行测试。在你提到的书中,在你描述的情况下,我建议阅读的下一篇是Michael Feathers“有效地使用遗留代码” - 它将为你提供推动你前进的技巧。
暂时不过:TDD应有尽有。它会比您想象的更快地节省您的时间,您可以花时间学习更多更好的技术。
答案 2 :(得分:1)
我从重构书开始(因为你提到了遗留代码中的淹没),并尝试一次读一小时。然后在下次编程时,寻找应用所读内容的方法。
一旦你开始觉得你已经腾出一些时间,那就看看其他的书。我还推荐使用Code Complete来提高你的技能。