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

mez*_*oid 119 refactoring legacy-code

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

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

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

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

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

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

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

Rya*_*yan 88

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

  1. 在sourceforge上找到一个旧的,小型的,未维护的开源项目
  2. 下载它,让它编译/构建/运行
  3. 阅读文档,了解代码
  4. 使用" 有效使用旧版代码"中的技术来获取其中的一部分
  5. 重构这一块,可能会修复错误并在此过程中添加功能
  6. 重复步骤4到6

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

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

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

  • +1非常有趣的建议.就像你说的,棘手的是找到一个合适的项目.我会给这个考虑很多.也许如果我或其他人发现一些非常有用的东西,它可以保存并记录在某个地方作为卡塔...... (4认同)
  • "处理遗留代码" - 您的意思是"有效地使用遗留代码"吗?http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052 (3认同)

LAF*_*ica 18

我觉得死灵法师回复了这样一个古老的线索,但有一件事可以让一个有价值的补充 - 遗产代码撤退.

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

想法的作者JB Rainsberger 有一个GitHub存储库,它包含一个你要使用的简单遗留系统,Trivia Game.

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


Ste*_*ton 18

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

此外,她还有她的回购赛车 Katas:赛车卡塔.赛车Katas还包括很好的重构练习.

那些kata有多个langauages的代码:

  • C++
  • C#
  • Java的
  • 使用Javascript
  • 蟒蛇
  • 红宝石

  • Emily还出版了"The Coding Dojo Handbook"一书,其中列出了Katas,并介绍了如何启动和运行自己的编码dojos.我强烈推荐这本书:https://leanpub.com/codingdojohandbook (4认同)