2009-09-16 8 views
102

最近数ヶ月でkatasをコーディングすることにかなり関心を寄せています。私は彼らが私のプログラミングスキルを磨き、仕事で書くコードの質を向上させる素晴らしい方法だと信じています。レガシーコードのリファクタリングを実践するためのKatasのコーディング

カタールが数多くあります。以下のような...

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

私はそのうちのいくつかで私の試みは非常にやりがいのあったされている... Katasの優れたリポジトリであることを、これらのを見つけました。

しかし、私が今まで見てきたカタのすべてが、1つの短い来ると感じています。それらのどれもが私に悪いコードのリファクタリングを練習させるように思わない。初心者にはきれいなコードを書く方法を学ぶのはすばらしいですが、私の現在の仕事では、新しいコードを書くチャンスがあまりありません。むしろ、私はしばしばレガシーコードと戦い、モジュールをリファクタリングし、依存関係をなくし、結合を減らす方法を見つけようとしています。

このように、私は、レガシーコードをリファクタリングしてクリーンなコードに変換するスキルを磨くために使用できるカップルのKatasを見ています。

既に存在するものは誰か知っていますか?私が仕事をしている間、私はそれで多くの練習を受けることがわかっています...しかし、私はすぐに従属関係を解きほぐし、あまりにも多くを行う。

+0

+1素敵な質問を有用な情報提供された – KLE

+0

私は+1以上を与えることができたらいいです:)素晴らしい質問。私はプログラミングのこの種の練習について考えたことはありません。 – TJMonk15

+0

マイケルフェザーズのリファクタリングが輝く部分があるもの...レガシーコードのリファクタリングのために小さなシステムを実際に投稿する人がいるのが大好きです。私は今一週間以上このような何かを探しています。誰でも?誰でも? :) –

答えて

79

私はそれらを直接カタログサイトを知らないが、私は機会に使用してきた1つの戦略はこれです:

  1. はsourceforgeの
  2. 上の古い、小さな、メンテナンスされていないオープンソースプロジェクトを探します
  3. はそれをダウンロードし、それがコード
  4. の感触がテスト
  5. の下で、それの一部を取得するために、レガシーコードで有効に機能し で技術を使用して取得し、ドキュメントを読み/ビルド/実行
  6. をコンパイルするために取得しますおそらくバグを修正し、あなたは、特に挑戦的だった部分を見つけ、あなたの仕事を捨ててまでそれを数回繰り返すとき
  7. 繰り返しが6

を通じて4ステップ道に沿って機能を追加作品、

  • リファクタリングあなたのスキルを強化してください。

    これはリファクタリングだけでなく、コードの読み取り、テスト、ビルドプロセスの処理などの他のスキルを練習するだけです。

    難しい問題は、あなたが十分に興味を持っているプロジェクトを見つけることです。私が最後に取り組んだのは、遺伝子プログラミングのためのPythonライブラリでした。現在作業しているのはIRCライブラリですJavaの場合

  • +3

    +1非常に興味深い提案。あなたが言ったように、トリッキーなことは適切なプロジェクトを見つけることです。私はこれに多くの配慮をします。もしかしたら、私や他の人が非常に有用なものを見つけたら、それを保存してカタールのどこかで文書化することができます。 – mezoid

    +2

    "レガシーコードを扱う" - あなたは "レガシーコードで効果的に働く"を意味しますか? http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052 – TrueWill

    +0

    はい、「従来のコードで効果的に作業する」という意味です。キャッチをありがとう! – Ryan

    18

    このような古いスレッドに返答するネクロマンサーのような気がしますが、価値ある追加のために1つのことがあります - Legacy Code Retreat

    アイデアは、従来のコードでCode Retreatを使用し、そのような処理方法を実践しようとしていますが、準備されたコードを使用して自分で練習することを禁止するものはありません。ゴールデンマスターを作成するためにそれを使用するだけで、1時間の作業が可能になります。さらに多くのことができます。あなたのkataが通常約2時間続くならば、私はちょうどカタカナにLCRで起こるものを分割することによってあなたに4つの異なることを働かせると言うでしょう。

    アイデアの作者、J.B. RainsbergerのGitHub repositoryがあります。これには、Trivia Gameで作業する単純なレガシーシステムが含まれています。

    主催者/参加者としての私の経験から、皆さんは本当にこれが好きで、レガシーコードで何が問題になるのか、リファクタリングがあなたを迷子に導く可能性があるのか​​を見極めることができました。ここには、それがどのように見えるかについての別のアカウントがAndreas Leidigによってあります。

    15

    Emily Bacheには、リファクタリング用のkatasを持つgithubリポジトリがあります。Emily Bache's Refactoring Kata Repo。リファクタリングにはKataYahtzeeとKataTennisのバリエーションがあります。また、彼女はリファクタリング・カータとして設計されたGilded Rose Kataの変種を持っています。

    また、彼女は彼女のレポでというレーシングカーカタを持っています。 Race Car Katasには、リファクタリングのための優れた演習も含まれています。

    これらのカタに複数のlangauagesのコードがあります、

    • C++
    • C#
    • のJava
    • Javascriptを
    • Pythonの
    • ルビー
    +3

    Emilyはまた、Katasをリストした「The Coding Dojo Handbook」という本を出版し、独自のコーディングドッジを起動して実行する方法についても説明しています。私は非常に本をお勧めします:https://leanpub.com/codingdojohandbook –

    +0

    私はdojosを実行するために彼女の本を使いました。それは素晴らしいリソースであることに同意します。エミリーはpluralsight.com/courses/the-coding-dojoにも関連コースを設けています。 –

    関連する問題