Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
リファクタリング
Search
takakuda
June 26, 2019
54
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リファクタリング
takakuda
June 26, 2019
More Decks by takakuda
See All by takakuda
パフォーマンス改善
takakuda
0
160
gem version up
takakuda
0
2.3k
ぼくらのかんがえたさいきょうのfactory_bot
takakuda
0
2.7k
LINE, Messenger比べてみました。
takakuda
0
1.4k
Featured
See All Featured
Making Projects Easy
brettharned
120
6.8k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
890
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
430
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Curious Case for Waylosing
cassininazir
1
540
Leo the Paperboy
mayatellez
10
2.3k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Accessibility Awareness
sabderemane
1
220
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Visualization
eitanlees
153
17k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Transcript
ZEALS Co.,Ltd デザインパターンでリファクタ リファクタリング テクノロジー開発部 takakuda
前職:雛人形売り - Ruby - Rails ZEALS Rails Engineer takakuda :takakdua
: @kutaike1504
fanpの紹介
リファクタリング
コンピュータプログラミングにおいて、プログラムの外部 から見た動作を変えずにソースコードの内部構造を整理 すること 引用: ウィキペディア リファクタリングとは?
リファクタやってます?
どうやってリファクタする?
・まずやったこと ・オブジェクト指向でリファクタ ・デザインパターンでリファクタ 今日話すこと
まずやったこと
使われてないコードを消す
debride2okuribito(https://github.com/shakemurasan/debride2okuribito) • コードを静的解析するgem • 未使用の可能性が高いメソッドを列挙してくれる • 静的解析なので、列挙に時間がかからない
okuribito_rails(https://github.com/shakemurasan/okuribito_rails) • コードを動的解析するgem • APIによる外部呼び出しも含めて分析可能 • ymlファイルにメソッドを記述するだけで使用可能
Image
コードを追加することは簡単 コードを削除することは難しい
オブジェクト指向でリファクタ
読み倒す
第7章 モジュールでロールの振る舞いを共有する
同じロジックが複数fileに記述されている
ActiveSupport::Concern
使い回すことができる ロジックを concernに切り出して、使い たいところでincludeするだ け
変更が簡単
楽に行数は減らせる …でも委譲したい
デザインパターンでリファクタ
デザインパターン…?
GoF
書籍『オブジェクト指向における再利用のためのデザインパター ン』の著者4人のことを指す プログラミングのベストプラクティスを体系化したもの
・アブストラクトファクトリ ・インタプリタ ・ビルダ ・イーテレータ ・ファクトリメソッド ・オブサーバ ・シングルトンパターン ・ストラテジ ・アダプタ ・コンポジット ・デコレータ ・プロキシ ・コマンド
Builder Pattern
オブジェクトの作成が複雑 複数modelをまたぐ処理
None
Builder Patternは、 作成過程を決定する「Director」 作業インタフェースをもつ「Builder」 を組み合わせることで、 柔軟にオブジェクトを生成をできるデザインパターン Builder Pattern とは…?
None
Fat model を避け 単機能として委譲
Active::Record == model?
Active::Recordを継承しない ふつうのオブジェクトに委譲
まとめ
- 既存のプログラミングベストプラクティス調べる - Active::Record == model ではない - 単機能として切り出す -
なによりリファクタは辛いことではなく、ひたすらコード と向き合い新たな知見が広がるすごく楽しいこ と!!!!
None
Thank you!!