Submit Search
今日からはじめるリファクタリング
12 likes
3,980 views
Junya Shimazu
Martin Fowlerの名著「リファクタリング- プログラムの体質改善テクニック-」より今日から実践できるリファクタリングテクニックの紹介
Engineering
Read more
1 of 42
Download now
Downloaded 35 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
More Related Content
PDF
リファクタリングで実装が○○分短縮した話
infinite_loop
PDF
Metaverse & Web3 Technology Innovation & Business Development
Alex G. Lee, Ph.D. Esq. CLP
PDF
Metaverse Infographics
Alex G. Lee, Ph.D. Esq. CLP
PDF
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
PPTX
3Dモデル類似検索
Core Concept Technologies
PPTX
僕たちがすべきことはリファクタリングなのか
Ito Takumi
PDF
越境アジャイル
toshihiro ichitani
PDF
4つの戦犯から考えるサービスづくりの失敗
toshihiro ichitani
リファクタリングで実装が○○分短縮した話
infinite_loop
Metaverse & Web3 Technology Innovation & Business Development
Alex G. Lee, Ph.D. Esq. CLP
Metaverse Infographics
Alex G. Lee, Ph.D. Esq. CLP
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
3Dモデル類似検索
Core Concept Technologies
僕たちがすべきことはリファクタリングなのか
Ito Takumi
越境アジャイル
toshihiro ichitani
4つの戦犯から考えるサービスづくりの失敗
toshihiro ichitani
What's hot
(20)
PDF
毎日が越境だ!
増田 亨
PDF
Sphinxでまとめる多言語環境APIドキュメント
Iosif Takakura
PDF
プロダクトオーナーが知るべき97のこと
toshihiro ichitani
PDF
chatGPTの驚くべき対話能力.pdf
YamashitaKatsushi
PDF
Magic Mirror For Retail Stores
FootfallCam
PPTX
擬人化で考えるオブジェクト指向
yamada28go
PDF
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
Hironori Washizaki
PPTX
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
Nobuhiro Yoshitake
PDF
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
Yusuke Suzuki
PDF
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
Itsuki Kuroda
PDF
ChatGPT を使ってみた
Hide Koba
PPTX
「アーティスト活動」というプログラマの自己防衛術 - 坪倉輝明
Teruaki Tsubokura
PDF
ソフトウェア開発のやり方の改善
増田 亨
PPTX
JICD主催−ナラティヴ・セラピー・アドバンスコース
Kou Kunishige
PPTX
BDD Approach with Karate Framework in Service Tests
kloia
PDF
アジャイルによくきく?モデリング
Iwao Harada
PDF
OpenAI の音声認識 AI「Whisper」をテストしてみた
Hide Koba
PDF
コールバックと戦う話
torisoup
PDF
The CQRS diet
Luismi Cavallé
PPTX
プロダクトのフェーズとマネジメント
Takamasa Hirose
毎日が越境だ!
増田 亨
Sphinxでまとめる多言語環境APIドキュメント
Iosif Takakura
プロダクトオーナーが知るべき97のこと
toshihiro ichitani
chatGPTの驚くべき対話能力.pdf
YamashitaKatsushi
Magic Mirror For Retail Stores
FootfallCam
擬人化で考えるオブジェクト指向
yamada28go
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
Hironori Washizaki
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
Nobuhiro Yoshitake
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
Yusuke Suzuki
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
Itsuki Kuroda
ChatGPT を使ってみた
Hide Koba
「アーティスト活動」というプログラマの自己防衛術 - 坪倉輝明
Teruaki Tsubokura
ソフトウェア開発のやり方の改善
増田 亨
JICD主催−ナラティヴ・セラピー・アドバンスコース
Kou Kunishige
BDD Approach with Karate Framework in Service Tests
kloia
アジャイルによくきく?モデリング
Iwao Harada
OpenAI の音声認識 AI「Whisper」をテストしてみた
Hide Koba
コールバックと戦う話
torisoup
The CQRS diet
Luismi Cavallé
プロダクトのフェーズとマネジメント
Takamasa Hirose
Ad
Viewers also liked
(20)
PPTX
レガシーコード改善のススメ
Akira Hirasawa
PDF
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
PDF
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
PDF
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
Masanori Satoh
PDF
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
Keiichiro Shikano
PDF
レガシーコードとの付き合い方とテストでの話
H Iseri
PDF
納品のない受託開発を支える レガシーコードを作らない仕組み
Masahiro Nishimi
PDF
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
Hiroyuki Ohnaka
PDF
リファクタリングの実情
Ryuhei Ishibashi
PDF
Gaucheで本を作る
Keiichiro Shikano
PDF
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
PPT
【CyberX読書会】リファクタリング 2012/02/06
Suguru Shirai
PDF
リファクタリング?
Yoshiyuki Miyagawa
PDF
命名の話(ソースコードは読み物です)
Akihiro Nakahara
KEY
テストコードのリファクタリング
Shuji Watanabe
PPTX
Spring超入門-Springと出会ってから1年半-
Ryosuke Uchitate
PDF
コーディングスタイル入門~人に伝えるプログラミング~
Hideki MACHIDA
PDF
エクストリームエンジニア5
T-arts
PDF
第1回JUnit勉強会ハンズオン
equj65
PDF
システムアーキテクト~My batis編~
Shinichi Kozake
レガシーコード改善のススメ
Akira Hirasawa
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
Masanori Satoh
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
Keiichiro Shikano
レガシーコードとの付き合い方とテストでの話
H Iseri
納品のない受託開発を支える レガシーコードを作らない仕組み
Masahiro Nishimi
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
Hiroyuki Ohnaka
リファクタリングの実情
Ryuhei Ishibashi
Gaucheで本を作る
Keiichiro Shikano
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
【CyberX読書会】リファクタリング 2012/02/06
Suguru Shirai
リファクタリング?
Yoshiyuki Miyagawa
命名の話(ソースコードは読み物です)
Akihiro Nakahara
テストコードのリファクタリング
Shuji Watanabe
Spring超入門-Springと出会ってから1年半-
Ryosuke Uchitate
コーディングスタイル入門~人に伝えるプログラミング~
Hideki MACHIDA
エクストリームエンジニア5
T-arts
第1回JUnit勉強会ハンズオン
equj65
システムアーキテクト~My batis編~
Shinichi Kozake
Ad
Similar to 今日からはじめるリファクタリング
(9)
PDF
2019年度 若手技術者向け講座 リファクタリング
keki3
KEY
111030 ksworks-lifehack-refactoring
Ken AKASHI
PDF
第10回rest勉強会 リファクタリング(サーバ編)編
ksimoji
PDF
デザインパターンを用いたリファクタリング
kei takakuda
PDF
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
Kamiya Toshihiro
PDF
第11回rest勉強会 リファクタリング(クライアント編)
ksimoji
PDF
Refactoring
Akinori IKEDA
PPT
Mizukiryu refactering-20110821
Mizuki Yamanaka
PDF
App codeでリファクタリング
semnil
2019年度 若手技術者向け講座 リファクタリング
keki3
111030 ksworks-lifehack-refactoring
Ken AKASHI
第10回rest勉強会 リファクタリング(サーバ編)編
ksimoji
デザインパターンを用いたリファクタリング
kei takakuda
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
Kamiya Toshihiro
第11回rest勉強会 リファクタリング(クライアント編)
ksimoji
Refactoring
Akinori IKEDA
Mizukiryu refactering-20110821
Mizuki Yamanaka
App codeでリファクタリング
semnil
今日からはじめるリファクタリング
1.
今日からはじめる リファクタリング 2014.08.30
kanazawa.rb meetup#24
2.
よろしくお願いします • 島津 純哉(しまず じゅんや)
• DMM.com Labo • Linux, Apache, PHP, MySQL, Memcached, Javascript, HTML5, Vim, Shell, Git @jshimazu0820 Junya Shimazu
3.
こんなコードで困っていませんか? • 読みにくい
• 編集しにくい • 複雑
4.
こんなイメージ なんで動いてるの?みたいな
5.
コードがモンスター化している!
6.
コードがモンスター化している! • メンテナンスしにくい!
7.
コードがモンスター化している! • メンテナンスしにくい!
• 修正したい
8.
コードがモンスター化している! • メンテナンスしにくい!
• 修正したい • でも修正するの難しい
9.
コードがモンスター化している! • メンテナンスしにくい!
• 修正したい • でも修正するの難しい • 現状動いてるので放置・・・
10.
コードがモンスター化している! • メンテナンスしにくい!
• 修正したい • でも修正するの難しい • 現状動いてるので放置・・・ • クソコードが拡大していく
11.
駄目だこのコード、 早くなんとかしないと・・・ リファクタリングをしよう!
でも、何から手を付ければいいのだろう?
12.
参考文献
13.
リファクタリングの名著 • リファクタリングを体系化
• サンプルコードが充実 • 2000年初版(14年前!) • 最近新装版がでた
14.
リファクタリングとは 「外部から見たときの振る舞いを保ちつつ 理解や修正が簡単になるように
ソフトウェアの内部構造を変化させること」 ! → メンテナンスしやすいコードにすること
15.
リファクタリングとは 「外部から見たときの振る舞いを保ちつつ 理解や修正が簡単になるように
ソフトウェアの内部構造を変化させること」 ! → メンテナンスしやすいコードにすること
16.
なぜコードは汚れていくのか? 仕様追加・変更、バグ修正の繰り返し コードがだんだん乱れていくのは自然な事
17.
リファクタリングは 常に行われていくべきもの
18.
どこを直せばいいの? 「コードの不吉なにおい」➡22種類 !
そのうちよく見かけた5つを紹介
19.
1位 重複したコード
20.
「重複したコード」の特徴 • 同じようなコードが2カ所以上に存在
• 2カ所以上変更しなければならない
21.
2位 長すぎるメソッド
22.
「長すぎるメソッド」の特徴 • メソッドの内部の処理を追うのが大変
• 一時変数が多くなりがち • テスト・デバッグが困難
23.
3位 巨大なクラス
24.
「巨大なクラス」の特徴 • 仕事をしすぎなクラス
• いわゆる密結合 • フィールドが多くなりがち
25.
4位 多すぎる引数
26.
「多すぎる引数」の特徴 • 引数の意味を理解するのに手間
• 仕様追加でさらに増える • 本来、0~2個にとどめておくのが良い
27.
5位 変更の分散
28.
「変更の分散」の特徴 • 変更するたびに他の箇所も変更が必要
• 他方の修正を忘れて問題発生
29.
不吉なにおい=負債 将来にわたってコードの理解・修正を妨げる プログラマーにとっての「負債」
30.
どうやって負債を取り除くか? 「リファクタリングカタログ」 わりとすぐに適用できる3種類を紹介
31.
メソッドの抽出
32.
「メソッドの抽出」 • 最もメジャーなリファクタリング手法
• コードの断片をわかりやすい名前のメソッド にする • 「重複したコード」「長すぎるメソッド」 に有効
33.
クラスの抽出
34.
「クラスの抽出」 • 本来2つのクラスでやるべきことを
1つのクラスでやっている場合 • 「巨大なクラス」に対して有効 →
35.
委譲の隠蔽
36.
「委譲の隠蔽」 • 使い手が意識するクラスを2つ→1つに
37.
他にもたくさんあります 「コードの不吉なにおい」 「リファクタリングカタログ」
でググってみよう!
38.
いつやればいいの? • 新機能追加・バグ修正・レビューのとき
• 3度目の法則 • 不吉なにおい → 1、2回はガマンして 3回目に感じたときに修正
39.
注意すること • 小さい単位で修正・テストしながら進める
• できれば単体テストコードも用意 • 機能追加(またはバグ修正)と リファクタリングは分けて作業 • 無理はしない
40.
まとめ • リファクタリングは常に行われていくもの
• 「コードの不吉なにおい」を知る • 手法は体系化されている 「リファクタリングカタログ」
41.
リファクタリングの テクニックを身につけて 幸せなプログラマーライフを!
42.
ご清聴ありがとうございました
Download