126

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

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

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

我发现这些是 Katas 的优秀存储库……我对其中一些的尝试获得了巨大的回报。

但是,我觉得到目前为止我看到的所有 Kata 都有一个缺点。他们似乎都不允许我练习重构糟糕的代码。第一次学习如何编写干净的代码很棒……但是在我目前的工作中,我没有太多机会编写新代码。相反,我经常与遗留代码作斗争,并试图弄清楚如何重构模块、消除依赖关系和减少耦合。

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

有人知道已经存在的吗?我知道我在工作时会进行很多练习......但我想磨练我的技能,以便能够快速了解​​如何在类中分解依赖项和分离关注点做得太多了。

4

3 回答 3

95

我不知道有哪个网站可以直接对它们进行分类,但我有时使用的一种策略是:

  1. 在 sourceforge 上查找一个旧的、小型的、未维护的开源项目
  2. 下载它,让它编译/构建/运行
  3. 阅读文档,感受一下代码
  4. 使用有效地使用遗留代码中的技术来测试它的一部分
  5. 重构那部分,可能会修复错误并在此过程中添加功能
  6. 重复步骤 4 到 6

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

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

最难的问题是找到一个你有足够兴趣继续工作的项目。我最近做的是一个用于基因编程的 python 库,而我目前正在做的是一个用于 Java 的 IRC 库。

于 2009-09-25T06:02:15.530 回答
21

我感觉就像死灵法师在回复这么老的帖子,但有一件事情可以成为一个值得补充的东西 - Legacy Code Retreat

想法是使用遗留代码进行代码撤退,并尝试练习处理此类问题的技术,但我看不出有什么会阻止你简单地使用编写的代码并自己练习。仅仅用它来创建一个黄金大师就需要一个小时的工作,而且你可以做的还有很多。如果您的 kata 通常持续大约 2 小时,我想说,只需将 LCR 上通常发生的事情拆分为 kata,您就可以处理四种不同的事情。

idea 的作者 JB Rainsberger有一个GitHub 存储库,其中包含一个简单的遗留系统,您可以使用它,Trivia Game。

根据我作为组织者/参与者的经验,人们真的很喜欢这一点,并且看到遗留代码中可能存在的问题以及你的重构会在哪里导致你误入歧途(以及如何!),这很有启发性。这是Andreas Leidig对它外观的另一个描述。

于 2013-02-09T12:02:55.420 回答
20

Emily Bache 有一个 github 存储库,其中包含一些重构 kata:Emily Bache 的 Refactoring Kata Repo。有 KataYahtzee 和 KataTennis 的变体可以重构。此外,她还有镀金玫瑰型的变体,它被设计为重构型。

此外,她的 repo 中有 Racing Car Katas:Racing Car Kata。Race Car Katas 还包括很好的重构练习。

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

  • C++
  • C#
  • 爪哇
  • Javascript
  • Python
  • 红宝石
于 2013-10-12T15:38:02.480 回答