Upgrade to Pro — share decks privately, control downloads, hide ads and more …

refactoring

D845da5233d883972679b1cf05e186c4?s=47 mazua
August 20, 2021

 refactoring

D845da5233d883972679b1cf05e186c4?s=128

mazua

August 20, 2021
Tweet

Transcript

  1. リファクタリング 既存のコードを安全に改善する 意図が伝わるコードの書き方

  2. リファクタリングとは? • プログラムの振る舞い(仕様)を変えずに内部品質を向上させる作業 • 内部品質: 保守性、可読性等 • バグ修正ではない(リファクタリングとバグ修正は別で行う) • 実現方法:

    カプセル化、関数化、名前の変更等
  3. ロジックを関数化する目的とは? 1. 再利用性を高める(同じ処理を繰り返し書かない) 2. 可読性を上げる(行数を減らす) 3. 意図を明確にする(何をやっているかを読み手に伝える)

  4. サンプルコード(リファクタリング前) ※ if文の条件が長くなると単純に読み辛く、理解しづらいという問題も つまりどういうことだってばよ?

  5. サンプルコード(リファクタリング後) 曜日判定ロジックを 別関数に抽出 週末は割増料金になることをより明確に表現 ※ ユニットテストのしやすさも向上

  6. 関数命名のセオリー 「実装」と「意図」を分離する つまり「どうやって処理を行っているか」ではなく 「何をしているか」に着目して命名する × isDayOfWeekZeroOne() ◦ isWeekend()