コードの悪臭
2006年2月9日
コードの悪臭とは、システム内のより深い問題に対応する通常は表面的な表示のことです。この用語は、Kent Beck が私の Refactoring の本を手伝ってくれたときに初めて作り出されました。
上記の手早い定義には 2 つの微妙な観点が入っています。まず悪臭の定義は、すばやく発見できるもの、あるいは私が最近述べたように「嗅ぎ取れる」ものです。長いメソッドが良い例です。コードを見るだけで、Java の行が 12 行を超えると私の鼻がピクピクします。
2 つ目は、悪臭は必ずしも問題を示しているわけではないということです。長いメソッドの中には何も問題のないものもあります。基盤の問題があるかどうかを見極めるために、さらに深く調べなければなりません。悪臭そのものが本質的に悪いわけではありません。問題そのものよりも問題の指標であることが多いのです。
優れた悪臭とは、発見しやすく、ほとんどの場合、非常に興味深い問題に導くものです。データクラス(データのみを持ち、動作を持たないクラス)は、その良い例です。データクラスを見て、このクラスにどのような動作を持たせる必要があるのか自問してください。その後、リファクタリングを開始して、その動作を移動します。多くの場合、単純な質問と初期のリファクタリングが無価値なオブジェクトを真にクラスを持ったものに変えるための重要なステップになる可能性があります。
悪臭の良い点の 1 つは、経験の少ない人が、実際の問題を評価したり、問題を修正したりするのに十分な知識がなくても、悪臭を発見しやすいことです。私は、リードデベロッパーが「今週の悪臭」を選択し、チームの人々に悪臭を探して、チームの上級メンバーに知らせるように指示したという話を聞きました。一度に 1 つの悪臭に対処することは、チームの人々に徐々に優れたプログラマーになるように指導する良い方法です。