Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

デザインパターンを用いたリファクタリング

344 views

Published on

リファクタリング

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

デザインパターンを用いたリファクタリング

  1. 1. ZEALS Co.,Ltd デザインパターンでリファクタ リファクタリング テクノロジー開発部 takakuda
  2. 2. 前職:雛人形売り - Ruby - Rails ZEALS Rails Engineer takakuda :takakdua : @kutaike1504
  3. 3. fanpの紹介
  4. 4. リファクタリング
  5. 5. コンピュータプログラミングにおいて、プログラムの外部 から見た動作を変えずにソースコードの内部構造を整理 すること 引用: ウィキペディア リファクタリングとは?
  6. 6. リファクタやってます?
  7. 7. どうやってリファクタする?
  8. 8. ・まずやったこと ・オブジェクト指向でリファクタ ・デザインパターンでリファクタ 今日話すこと
  9. 9. まずやったこと
  10. 10. 使われてないコードを消す
  11. 11. debride2okuribito(https://github.com/shakemurasan/debride2okuribito) ● コードを静的解析するgem ● 未使用の可能性が高いメソッドを列挙してくれる ● 静的解析なので、列挙に時間がかからない
  12. 12. okuribito_rails(https://github.com/shakemurasan/okuribito_rails) ● コードを動的解析するgem ● APIによる外部呼び出しも含めて分析可能 ● ymlファイルにメソッドを記述するだけで使用可能
  13. 13. Image
  14. 14. コードを追加することは簡単 コードを削除することは難しい
  15. 15. オブジェクト指向でリファクタ
  16. 16. 読み倒す
  17. 17. 第7章 モジュールでロールの振る舞いを共有する
  18. 18. 同じロジックが複数fileに記述されている
  19. 19. ActiveSupport::Concern
  20. 20. 使い回すことができる ロジックを concernに切り出して、使い たいところでincludeするだ け
  21. 21. 変更が簡単
  22. 22. 楽に行数は減らせる …でも委譲したい
  23. 23. デザインパターンでリファクタ
  24. 24. デザインパターン…?
  25. 25. GoF
  26. 26. 書籍『オブジェクト指向における再利用のためのデザインパター ン』の著者4人のことを指す プログラミングのベストプラクティスを体系化したもの
  27. 27. ・アブストラクトファクトリ  ・インタプリタ ・ビルダ           ・イーテレータ ・ファクトリメソッド     ・オブサーバ ・シングルトンパターン    ・ストラテジ ・アダプタ         ・コンポジット ・デコレータ ・プロキシ ・コマンド
  28. 28. Builder Pattern
  29. 29. オブジェクトの作成が複雑 複数modelをまたぐ処理
  30. 30. Builder Patternは、 作成過程を決定する「Director」 作業インタフェースをもつ「Builder」 を組み合わせることで、 柔軟にオブジェクトを生成をできるデザインパターン Builder Pattern とは…?
  31. 31. Fat model を避け 単機能として委譲
  32. 32. Active::Record == model?
  33. 33. Active::Recordを継承しない ふつうのオブジェクトに委譲
  34. 34. まとめ
  35. 35. - 既存のプログラミングベストプラクティス調べる - Active::Record == model ではない - 単機能として切り出す - なによりリファクタは辛いことではなく、ひたすらコード と向き合い新たな知見が広がるすごく楽しいこ と!!!!
  36. 36. Thank you!!

×