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

リファクタリング?(202111社内勉強会)

shimadamiyuki
November 18, 2021
36

 リファクタリング?(202111社内勉強会)

月一で実施している社内勉強会の資料です(2021.11)

shimadamiyuki

November 18, 2021
Tweet

Transcript

  1. 構築­計測­学習のフィードバックループ アイデア 製品 データ 構築する 計測する 学ぶ • まずは最⼩限の労⼒と時間で製品を作る (MVP︓minimum

    viable product) • 「構築­計測­学習」のループを通じて、 顧客の望み、成⻑につながる価値を学ぶ (検証による学び) • 完璧なものを作るより、フィードバック ループにかかる時間を最⼩にすることが ⼤事
  2. 軽量ソフトウェア開発プロセス 従来の計画主義的なプロセスとは異なる、新しい価値観に沿ったプロセス。 数ページの基本的な理念で構成されているので軽量プロセスと呼ばれる。 • スクラム • エクストリームプログラミング • 適応型ソフトウェア開発 •

    リーンソフトウェア開発 →こうしたいくつもの軽量プロセスから⽣まれたのが「アジャイル開発」という ムーブメント エンジニアリング組織論への招待(技術評論社) 広⽊⼤地 著 https://gihyo.jp/book/2018/978-4-7741-9605-3
  3. リリースサイクルを早めるには︖ 実装 テスト デプロイ リファクタリング 継続的インテグレーション テスト駆動開発 ペアプログラミング バージョン管理 ビルドツール

    テストコード ⾃動リグレッションテスト (E2E) ⾃動デプロイ チーム開発実践⼊⾨(技術評論社) 池⽥尚史,藤倉和明,井上史彰 著 https://gihyo.jp/book/2014/978-4-7741-6428-1 エクストリームプログラミング(オーム社) Kent Beck・Cynthia Andres 共著/⾓ 征典 訳 https://shop.ohmsha.co.jp/shopdetail/000000004303/
  4. 関数の抽出 関数のインライン化 変数の抽出 変数のインライン化 関数宣⾔の変更 変数のカプセル化 変数名の変更 パラメータオブジェクトの導⼊ 関数群のクラスへの集約 関数群の変換への集約

    フェーズの分離 レコードのカプセル化 コレクションのカプセル化 オブジェクトによるプリミティブの置き換え 問い合わせによる⼀時変数の置き換え クラスの抽出 クラスのインライン化 委譲の隠蔽 仲介⼈の除去 アルゴリズムの置き換え 関数の移動 フィールドの移動 ステートメントの関数内への移動 ステートメントの呼び出し側への移動 関数呼び出しによるインラインコードの置き換え ステートメントのスライド ループの分離 パイプラインによるループの置き換え デッドコードの削除 変数の分離 フィールド名の変更 問い合わせによる導出変数の置き換え 参照から値への変更 値から参照への変更 条件記述の分解 条件記述の統合 ガード節による⼊れ⼦の条件記述の置き換え ポリモーフィズムによる条件記述の置き換え 特殊ケースの導⼊ アサーションの導⼊ 問い合わせと更新の分離 パラメータによる関数の統合 フラグパラメータの削除 オブジェクトそのものの受け渡し 問い合わせによるパラメータの置き換え パラメータによる問い合わせの置き換え setterの削除 ファクトリ関数によるコンストラクタの置き換え コマンドによる関数の置き換え 関数によるコマンドの置き換え メソッドの引き上げ フィールドの引き上げ コンストラクタ本体の引き上げ メソッドの押し下げ フィールドの押し下げ サブクラスによるタイプコードの置き換え サブクラスの削除 スーパークラスの抽出 クラス階層の平坦化 委譲によるサブクラスの置き換え 委譲によるスーパークラスの置き換え リファクタリングのカタログ リファクタリング 既存のコードを安全に改善する(第2版)に載っている、広く使われているリファクタリングのカタログ