by shigemk2

当面は技術的なことしか書かない

リファクタリングのコツをば少々書いてみる

ここ最近ずっとリファクタリングばかりやっていたので、
リファクタリングの極意的なものを少し。

大前提

まず、どのような処理が行われているか、100%正確に把握すること。
これが出来ないと、リファクタリングをきちんと行うことが出来ない。
きちんと処理の内容やプロセスを把握することで、ただ機械的にコピペするだけではない
攻めの消力(リファクタリング)を行うことが出来るッッ

わりと注意

他人のコードをリファクタリングする場合、オリジナルのコードが色々アレでも、
リファクタリングする側が責任を持たなければならない。つまり、色々アレなコードを
放置してそのままにしていたら、オリジナルのコードを書いた人ではなあく、
リファクタリングする人間に責任があるのだ。

リファクタリングの極意

  • 可読性を上げること
  • ログ出力などで結果を分かりやすく表示すること

などが上げられるだろう。

いくつかのTips

  • 関数の処理が長すぎるなら、各処理をメソッド化することを検討する

関数の処理の長さの基準としては、エディタやターミナルなどでスクロールしないで
関数の処理全てを見ることが出来るかどうかで判断すると良いかと思われる。
ただし、処理をただ関数の中に押しこんでコピペするだけではなく、
その処理を読みやすく分かりやすくすることも重要です。

  • 使われていない変数を削除する
  • 複数レベルのネストは使わない

このようなコードは、可読性を下げるのでやらないほうがよい。

if(....) {
  if(....) {
    ....
  }
  ....
}

複数レベルのネストは、以下のように分解することが出来る。

if(....) {
  ....
}
if(....) {
  ....
}
  • 1行if文はやらない
if(....) return false;

1行if文はなるたけ書かない - by shigemk2

理由は上記に書いてある通り、1行if文は拡張性に欠けるから。

とりあえずの参考文献