Je me suis beaucoup intéressé au codage des katas ces derniers mois. Je pense qu'ils sont un excellent moyen de perfectionner mes compétences en programmation et d'améliorer la qualité du code que j'écris au travail.
Il existe de nombreux endroits où l'on trouve des katas. comme..
http://schuchert.wikispaces.com/Katas
J'ai trouvé que c'était d'excellents dépôts de Katas ... mes tentatives sur certains d'entre eux ont été extrêmement enrichissantes.
Cependant, je pense que tous les Kata que j'ai vus jusqu'à présent ont un court à venir. Aucun d'entre eux ne me permet de m'entraîner à refactoriser du mauvais code. C'est formidable d'apprendre à écrire du code propre la première fois ... mais dans mon travail actuel, je n'ai pas trop d'occasions d'écrire du nouveau code. Au contraire, je me bats souvent contre le code hérité et j'essaie de comprendre comment refactoriser les modules, éliminer les dépendances et réduire le couplage.
En tant que tel, je suis à la recherche de quelques Katas que je peux utiliser pour perfectionner mes compétences de refactorisation du code hérité et de le transformer en code propre.
Quelqu'un en sait-il déjà? Je sais que je m'y pratique beaucoup pendant que je suis au travail ... mais j'aimerais affiner mes compétences au point où je suis capable de voir rapidement comment briser les dépendances et séparer les préoccupations dans les classes qui faire beaucoup trop.
la source
Réponses:
Je ne connais pas de site qui les catalogue directement, mais une stratégie que j'ai utilisée à l'occasion est la suivante:
Lorsque vous trouvez une partie particulièrement difficile, jetez votre travail et répétez-le plusieurs fois pour renforcer vos compétences.
Cela ne pratique pas seulement la refactorisation, mais d'autres compétences telles que la lecture de code, les tests et la gestion des processus de construction.
Le problème le plus difficile est de trouver un projet qui vous intéresse suffisamment pour continuer à travailler. Le dernier sur lequel j'ai travaillé était une bibliothèque python pour la programmation génétique, et celle sur laquelle je travaille actuellement est une bibliothèque IRC pour Java.
la source
Je me sens comme un nécromancien répondant à un fil de discussion aussi ancien, mais il y a une chose qui ferait un ajout digne: Legacy Code Retreat .
L'idée est d'avoir une retraite de code avec du code hérité et d'essayer de mettre en pratique les techniques mêmes pour y faire face, mais je ne vois rien qui vous interdirait simplement d'utiliser le code préparé et de vous entraîner avec vous-même. Le simple fait de l'utiliser pour créer un Golden Master représente une heure de travail, et vous pouvez faire beaucoup plus. Si votre kata dure généralement environ 2 heures, je dirais qu'en divisant ce qui se passe habituellement sur LCR en kata, vous obtenez quatre choses différentes sur lesquelles travailler.
Il existe un référentiel GitHub de l'auteur de l'idée, JB Rainsberger, qui contient un système hérité simple avec lequel vous devez travailler, Trivia Game.
D'après mon expérience en tant qu'organisateur / participant, les gens ont vraiment aimé cela et c'était instructif de voir ce qui peut être un problème dans un code hérité et où votre refactoring peut vous induire en erreur (et comment!). Voici encore un autre récit de son apparence, par Andreas Leidig .
la source
Emily Bache a un référentiel github avec quelques katas de refactoring: Refactoring Kata Repo d'Emily Bache . Il existe des variantes de KataYahtzee et KataTennis à refactoriser. En outre, elle a une variante du Kata à la rose dorée, qui a été conçue comme un kata de refactorisation.
En outre, elle a le Racing Car Katas dans son repo: Racing Car Kata . Les Katas Race Car comprennent également de bons exercices de refactoring.
Ces kata ont le code en plusieurs langages:
la source