0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

いいコード悪いコードまとめ14章モデリング リファクタリング 既存コードを成長に導く技

Posted at

条件は読みやすいか

以下のように論理否定を使ったりすると読み替えるのが面倒

if customer.isEnabled?
if !customer.isEnabled?

したがって以下のように書き換える

if customer.isEnabled?
if customer.isDisabled?

ベタ書きロジックを目的を表すメソッドに置き換えているか

以下のように書いていると、理解に手間がかかる

if customer.posessionPoint.amount < comic.currentPurchasePoint.amount

したがって、以下のようにメソッドを用意すれば可読性が上がる。

def isShortofPoint(comic)
  return customer.posessionPoint.amount < comic.currentPurchasePoint.amount
end

テストを使用しよう

テストコードを用いたリファクタリングの流れ

  1. あるべき構造の雛形クラスをある程度作る
  2. 雛形に対してテストコードを書く
  3. テストを失敗させる
    4. テストを成功させるための最低限のコードを書く
  4. 雛形クラス内部でリファクタリング対象のコードを呼び出す
  5. テストが成功するようあるべき構造へロジックを少しずつリファクタリングしていく

仕様化テスト

実際の現場では仕様がわからない開発も多々あります。そのような場合、仕様化テストが1つの有効な手段。

分析したいメソッドのテストを書き、そのメソッドがどんな挙動を示すかを明らかにする方法
いくつかメソッドに対するテストをかき、その結果からどのような挙動が類推し理解する。

IDEのリファクタリング機能

リネームやメソッド抽出などを利用してリファクタリングに活用する。

機能追加とリファクタリングを同時にしていないか

バグが発生した場合問題の切り分けが難しくなったり、コミットの目的が分からなくなったりするので同時にやることは避ける。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?