编码Katas实践遗留代码的重构

时间:2009-09-16 11:50:17

标签: refactoring legacy-code

近几个月来,我对编码katas非常感兴趣。我相信它们是磨练我的编程技巧和提高我在工作中编写的代码质量的好方法。

有许多地方可以找到Katas。像..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

我发现这些是Katas的优秀资料库......我对其中一些人的尝试获得了极大的回报。

然而,我觉得到目前为止我见过的所有卡塔都有一个短暂的来临。他们似乎都不允许我练习重构坏代码。第一次学习如何编写干净的代码真是太棒了...但在我目前的工作中,我没有太多机会编写新代码。相反,我经常与遗留代码作斗争并试图弄清楚如何重构模块,消除依赖关系并减少耦合。

因此,我正在寻找一些可以用来磨练我重构遗留代码并将其转化为干净代码的技能的Katas。

有人知道任何已存在的吗?我知道我在工作的时候会接受很多练习...但是我想磨练自己的技能,以便能够快速地看到如何分离依赖关系,并在课堂上分离关注点做得太多了。

3 个答案:

答案 0 :(得分:86)

我不知道有哪个网站直接对它们进行编目,但我偶尔使用的一个策略是:

  1. 在sourceforge上找到一个旧的,小型的,未维护的开源项目
  2. 下载它,让它编译/构建/运行
  3. 阅读文档,了解代码
  4. 使用有效使用旧版代码中的技术来测试其中的一部分
  5. 重构那件作品,或许修复错误并在途中添加功能
  6. 重复步骤4到6
  7. 当你发现一个特别具有挑战性的部分时,扔掉你的工作并重复几次以增强你的技能。

    这不仅仅是练习重构,还包括代码阅读,测试和处理构建过程等其他技能。

    最困难的问题是找到一个你感兴趣的项目继续工作。我最后一个工作的是一个用于遗传编程的python库,我正在研究的当前版本是一个IRC库。 Java的。

答案 1 :(得分:18)

我觉得死灵法师回复了这样一个旧线索,但有一件事可以让一个有价值的补充 - Legacy Code Retreat

想法是拥有遗留代码的Code Retreat并尝试练习处理此类代码的技巧,但我看不到任何会阻止您简单地使用编写的代码并通过它来实践的内容你自己。只是用它来创建一个黄金大师就可以完成一个小时的工作,你可以做更多的事情。如果你的kata通常持续大约2个小时,我会说只需将LCR上经常发生的事情分成kata,就会给你四种不同的东西。

想法的作者J.B. Rainsberger有一个GitHub repository,其中包含一个与你合作的简单遗留系统,Trivia Game。

根据我作为组织者/参与者的经验,人们非常喜欢这一点,看看遗留代码中的问题是什么,以及你的重构可能导致你误入歧途(以及如何!)是很有启发性的。这是另一个关于它的样子的说明,Andreas Leidig

答案 2 :(得分:17)

Emily Bache有一个github存储库,其中包含一些重构katas:Emily Bache's Refactoring Kata Repo。有重复的KataYahtzee和KataTennis重构。此外,她有一个Gilded Rose Kata的变种,它被设计为重构kata。

此外,她还在她的回购中使用了赛车Katas:Racing Car Kata。 Race Car Katas还包括很好的重构练习。

那些kata的代码有多种语言:

  • C ++
  • C#
  • 爪哇
  • 的Javascript
  • 的Python
  • 红宝石