对Katas进行编码,以便重构遗留代码

在最近几个月里,我对编码卡塔斯很感兴趣。 我相信他们是磨练我的编程技能,提高我在工作中编写的代码质量的好方法。

Katas有很多地方可以find。 喜欢..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

我发现这些是Katas优秀的存储库…我在其中一些尝试已经非常有价值。

不过,我觉得迄今为止所见到的所有卡塔人都有一个短暂的未来。 他们似乎没有让我练习重构错误的代码。 学习如何在第一次编写干净的代码是很好的…但是在我目前的工作中,我没有太多的机会来编写新的代码。 相反,我经常与传统代码作斗争,试图弄清楚如何重构模块,消除依赖关系,并减less耦合。

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

有谁知道任何已经存在的? 我知道在工作时我有很多练习,但是我想磨练自己的技能,以便能够快速了解​​如何在课堂上分解依赖关系和分离关注点做得太多了。

我不知道有一个网站直接把它们编入目录,但是我偶尔使用过的一个策略是:

  1. 在sourceforge上find一个旧的,小型的,没有维护的开源项目
  2. 下载它,把它编译/编译/运行
  3. 阅读文档,了解代码
  4. 使用遗留代码有效工作中的技巧来获得testing中的一部分
  5. 重构这一块,可能会修复错误并添加function
  6. 重复步骤4到6

当你发现一个特别具有挑战性的部分,扔掉你的工作,并重复几次,以加强你的技能。

这不仅仅是练习重构,还有其他一些技巧,例如代码阅读,testing和处理构build过程。

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

我觉得死灵法师回答这样一个古老的线索,但有一件事情会使一个值得加的 – 遗产代码撤退 。

想法是使用遗留代码进行代码撤销 ,并尝试练习用于处理这些代码的技术,但是我看不到任何会阻止您单纯使用自己编写的代码和实践的代码。 只要用它来创造一个金色大师,就可以做一个小时的工作,还有更多的事情可以做。 如果你的kata通常持续2个小时左右,我想说的就是把LCR中经常发生的事情分解成kata给你四个不同的东西来处理。

这个想法的作者JB Rainsberger有一个GitHub仓库 ,它包含一个简单的遗留系统,你可以使用Trivia Game。

根据我作为组织者/参与者的经验,人们真的很喜欢这个,看到遗留代码中的问题,以及重构可能导致你误入歧途(以及如何! 这是Andreas Leidig所做的另一个说明。

Emily Bache有一个带有一些重构katas的github仓库: Emily Bache的Refactoring Kata Repo 。 有KataYahtzee和KataTennis的变种重构。 此外,她有一个变种的镀金玫瑰卡塔,这是一个重构卡塔devise。

另外,她还有赛车卡塔斯在她的回购: 赛车卡塔 。 赛车卡塔斯还包括很好的重构练习。

那些卡塔有多种语言的代码:

  • C ++
  • C#
  • Java的
  • 使用Javascript
  • python
  • ruby