编码Katas,用于练习遗留代码的重构


123

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

卡塔斯有很多地方。喜欢..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

我发现它们是Katas的绝佳存储库...我对其中一些的尝试获得了极大的回报。

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

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

有谁知道已经存在的东西吗?我知道我在工作时会进行很多练习...但是我希望将自己的技能磨练到可以迅速了解如何打破依赖关系并在班级中分离关注点的程度做太多了。


+1个好问题,并提供了有用的信息
KLE

我希望我能提供的不止+1 :)好问题。我什至从未考虑过这种编程实践……
FallenAvatar

我很乐意看到有人实际上发布了一个专门用于重构遗留代码的小型系统……其中某些部分在迈克尔·费瑟斯的重构中大放异彩。我一直在寻找这样的东西超过一个星期了。任何人?任何人?:)
德里克·贝利

好问题。您可以练习@Ryan在他的回复中提到的内容。我建议分叉一个giithub存储库:github.com/garora/TDD-Katas您可以查看历史并检查如何重构这些Katas。
Gaurav Aroraa '17

Answers:


92

我不知道直接将它们分类的网站,但是我偶尔使用的一种策略是:

  1. 在sourceforge上找到一个旧的,小型的,未维护的开源项目
  2. 下载它,使其编译/构建/运行
  3. 阅读文档,了解代码
  4. 使用有效处理旧版代码中的技术对其中的一部分进行测试
  5. 重构该部分,也许修复错误并在此过程中添加功能
  6. 重复步骤4至6

当您发现特别具有挑战性的部分时,请放弃您的工作并重复几次以增强您的技能。

这不只是练习重构,还包括其他技能,例如代码读取,测试和处理构建过程。

最困难的问题是找到一个您感兴趣的项目,以使其继续工作。我研究的最后一个项目是用于基因编程的python库,而我正在研究的当前项目是用于Java的IRC库。


4
+1非常有趣的建议。就像您说的那样,棘手的事情是找到合适的项目。我会考虑很多。也许如果我或其他人发现一些非常有用的东西,可以将其保存起来并作为卡塔文件记录下来……
mezoid

3
“处理旧版代码”-您的意思是“有效使用旧版代码”吗?amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/…–
TrueWill

1
是的,我的意思是“有效使用旧版代码”。感谢您的接见!
Ryan

21

我感觉像是死灵法师回复了这么古老的话题,但是有一件事情值得做出值得补充的事情- 旧版代码撤退

想法是使用旧代码进行代码撤退,并尝试实践用于处理此类代码的技巧,但是我看不到有什么会禁止您简单地使用自己准备的代码并进行实践的。仅使用它来创建Golden Master便需要一个小时的工作,您还有很多工作要做。如果您的kata通常持续2个小时左右,那么我想说的是,将LCR上通常发生的情况分成kata,可以为您提供四种不同的解决方案。

这个想法的作者JB Rainsberger提供了一个GitHub存储库,其中包含您要使用的简单遗留系统Trivia Game。

从我作为组织者/参与者的经验来看,人们真的很喜欢这一点,并且很高兴看到遗留代码中可能存在的问题以及重构会在何处导致您误入歧途(以及如何!)。这是Andreas Leidig撰写的另一篇有关其外观的说明。


20

Emily Bache有一个带有一些重构选项的github存储库:Emily Bache的Refactoring Kata Repo。有KataYahtzee和KataTennis的变体可以重构。此外,她还有镀金玫瑰卡塔(Gilded Rose Kata)的一种变体,被设计为重构卡塔。

此外,她的回购中包含“赛车卡塔斯”赛车:“ 赛车卡塔”。赛车Katas还包括用于重构的良好练习。

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

  • C ++
  • C#
  • 爪哇
  • Java脚本
  • 蟒蛇
  • 红宝石

4
Emily还出版了《编码Dojo手册》一书,其中列出了Katas,并描述了如何启动和运行自己的编码Dojo。我强烈推荐这本书:leanpub.com/codingdojohandbook
Christian Maslen

1
我用她的书来写道场,我同意这是极好的资源。艾米丽(Emily)也有一个相关课程,网址为pluralsight.com/courses/the-coding-dojo。
史蒂夫·克兰顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.