2009-09-16 83 views
102

最近几个月,我对编码katas非常感兴趣。我相信他们是磨练我的编程技能并提高我在工作中编写的代码质量的好方法。编码Katas用于练习遗留代码的重构

有很多地方可以找到Katas。如..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

,我认为这是一个Katas的优秀仓库......我试图在他们中的一些已经被巨大的回报。

不过,我觉得到目前为止我所见过的所有卡塔都有一个短暂的未来。他们似乎都没有让我练习重构糟糕的代码。学习如何在第一时间编写干净的代码非常好...但是在我目前的工作中,我没有太多的机会来编写新的代码。相反,我经常与传统代码作斗争,并试图找出如何重构模块,消除依赖关系,并减少耦合。

因此,我就找了一对夫妇Katas,我可以用它来磨练我的重构遗留代码的技能和把它变成干净的代码。

有谁知道任何已经存在的?我知道我得到它大量的实践,而我在工作......但我想磨练自己的技能的地方我能点到快速查看掰开依赖和独立的关切类,做得太多了。

+0

+1有趣的问题,有用的信息提供 – KLE 2009-09-16 13:04:31

+0

我希望我能给更多+1 :)伟大的问题。我从来没有想过用这种编程方法... – TJMonk15 2009-09-30 18:32:24

+0

我很想看到有人实际上发布了一个专门用于重构遗留代码的小系统......一些有Michael Feathers的重构会发光的部分。我一直在寻找像这样的表单,而不是一个星期。任何人?任何人? :) – 2010-05-05 01:50:20

回答

79

我不知道直接编目他们的网站,但我偶尔使用的一个策略是这样的:

  1. 找一个老,少,无人维护的开源sourceforge上
  2. 项目
  3. 下载它,得到它来编译/编译/运行
  4. 阅读文档,感受一下代码
  5. 使用在的技术修改代码有效地开展工作,以获得一块吧被测
  6. 重构那块,也许修正了bug,增加功能沿途
  7. 重复步骤4至6

当你发现这是特别具有挑战性的一部分,扔掉你的工作和几次跟读加强你的技能。

这不只是练习重构,但是其他的技能,如读码,检测和处理的构建过程。

最难的问题是找到一个您感兴趣的项目,继续工作。我最后一个工作的是用于遗传编程的python库,目前我正在开发的是一个IRC库对于Java。

+3

+1非常有趣的建议。就像你说的那样,棘手的是找到一个合适的项目。我会给这个很多的考虑。也许如果我或其他人发现一些非常有用的东西,它可以被保存并记录在某个地方作为卡塔... – mezoid 2009-09-25 06:14:06

+2

“处理遗留代码” - 你的意思是“有效地使用遗留代码”? http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052 – TrueWill 2009-09-30 02:46:26

+0

是的,我的意思是“有效地使用遗留代码”。谢谢你的收获! – Ryan 2009-09-30 18:19:53

18

我觉得方士回答这样一个古老的线程,但有一两件事,将使一个值得加成 - Legacy Code Retreat

想法是用遗留代码创建一个Code Retreat,并尝试练习用于处理这些问题的技术,但是我看不到任何会阻止您单纯使用自己编写和练习的代码的任何内容。只要用它来创建一个金色大师,就可以完成一个小时的工作,而且你还可以做更多的事情。如果你的kata通常持续2个小时左右,我会说通过将LCR中经常发生的事情分解成kata,可以为你提供四种不同的工作方式。

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

根据我作为组织者/参与者的经验,人们真的很喜欢这一点,并且看到遗留代码中可能存在什么问题以及重构如何将您引入歧途(以及如何!以下是Andreas Leidig的另一个说明。

15

Emily Bache有一个带有一些重构katas的github仓库:Emily Bache's Refactoring Kata Repo。 KataYahtzee和KataTennis的变体可以重构。另外,她还有一个被设计成重构卡塔的镀金玫瑰卡塔的变体。

另外,她的回购车中有赛车Katas:Racing Car Kata。 Race Car Katas还包含重构的优秀练习。

那些卡塔在多个langauages代码:

  • C++
  • C#
  • 的Java
  • 的Javascript
  • 的Python
  • 红宝石
+3

Emily还出版了The Coding Dojo手册,其中列出了Katas并描述了如何启动和运行自己的编码dojos。我强烈推荐这本书:https://leanpub.com/codingdojohandbook – 2015-01-05 21:47:57

+0

我用她的书来运行dojos,我同意这是一个很好的资源。 Emily也在pluralsight.com/courses/the-coding-dojo上有相关课程。 – 2015-01-06 21:49:37