Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Junya Shimazu
PDF, PPTX
3,986 views
今日からはじめるリファクタリング
Martin Fowlerの名著「リファクタリング- プログラムの体質改善テクニック-」より今日から実践できるリファクタリングテクニックの紹介
Engineering
◦
Read more
12
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 42
2
/ 42
3
/ 42
4
/ 42
5
/ 42
6
/ 42
7
/ 42
8
/ 42
9
/ 42
10
/ 42
11
/ 42
12
/ 42
13
/ 42
14
/ 42
15
/ 42
16
/ 42
17
/ 42
18
/ 42
19
/ 42
20
/ 42
21
/ 42
22
/ 42
23
/ 42
24
/ 42
25
/ 42
26
/ 42
27
/ 42
28
/ 42
29
/ 42
30
/ 42
31
/ 42
32
/ 42
33
/ 42
34
/ 42
35
/ 42
36
/ 42
37
/ 42
38
/ 42
39
/ 42
40
/ 42
41
/ 42
42
/ 42
More Related Content
PDF
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
by
Yoshiki Hayama
PDF
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
PDF
Riderはいいぞ!
by
UnityTechnologiesJapan002
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PDF
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
by
SEGADevTech
PPTX
テストコードの DRY と DAMP
by
Yusuke Kagata
「UXデザインとは」からはじめる「本流」のUXデザインはじめの一歩 | UXデザイン基礎セミナー 第1回
by
Yoshiki Hayama
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
マイクロにしすぎた結果がこれだよ!
by
mosa siru
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
Riderはいいぞ!
by
UnityTechnologiesJapan002
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
by
SEGADevTech
テストコードの DRY と DAMP
by
Yusuke Kagata
What's hot
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
PDF
研究効率化Tips Ver.2
by
cvpaper. challenge
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
by
Shuto Suzuki
PDF
CI/CDツール比較してみた
by
Shoya Kai
PDF
SQLアンチパターン~スパゲッティクエリ
by
Itabashi Masayuki
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
PDF
言語資源と付き合う
by
Yuya Unno
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PDF
俺のインセプションデッキ【Remaster版】
by
Takao Oyobe
PPTX
【DL輪読会】TrOCR: Transformer-based Optical Character Recognition with Pre-traine...
by
Deep Learning JP
PPTX
C# コンパイラーの書き換え作業の話
by
信之 岩永
PDF
Pythonによる黒魔術入門
by
大樹 小倉
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
形態素解析の過去・現在・未来
by
Preferred Networks
PPTX
PHP と SAPI と ZendEngine3 と
by
do_aki
PPTX
【Unity道場スペシャル 2017札幌】カッコいい文字を使おう、そうtext meshならね
by
Unity Technologies Japan K.K.
PPTX
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
by
NTT DATA Technology & Innovation
PPT
メタプログラミングって何だろう
by
Kota Mizushima
PPTX
トランザクションの設計と進化
by
Kumazaki Hiroki
PDF
組織にテストを書く文化を根付かせる戦略と戦術
by
Takuto Wada
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
研究効率化Tips Ver.2
by
cvpaper. challenge
Cognitive Complexity でコードの複雑さを定量的に計測しよう
by
Shuto Suzuki
CI/CDツール比較してみた
by
Shoya Kai
SQLアンチパターン~スパゲッティクエリ
by
Itabashi Masayuki
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
言語資源と付き合う
by
Yuya Unno
オブジェクト指向できていますか?
by
Moriharu Ohzu
俺のインセプションデッキ【Remaster版】
by
Takao Oyobe
【DL輪読会】TrOCR: Transformer-based Optical Character Recognition with Pre-traine...
by
Deep Learning JP
C# コンパイラーの書き換え作業の話
by
信之 岩永
Pythonによる黒魔術入門
by
大樹 小倉
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
形態素解析の過去・現在・未来
by
Preferred Networks
PHP と SAPI と ZendEngine3 と
by
do_aki
【Unity道場スペシャル 2017札幌】カッコいい文字を使おう、そうtext meshならね
by
Unity Technologies Japan K.K.
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
by
NTT DATA Technology & Innovation
メタプログラミングって何だろう
by
Kota Mizushima
トランザクションの設計と進化
by
Kumazaki Hiroki
組織にテストを書く文化を根付かせる戦略と戦術
by
Takuto Wada
Viewers also liked
PDF
プログラムの処方箋~健康なコードと病んだコード
by
Shigenori Sagawa
PDF
テストとリファクタリングに関する深い方法論 #wewlc_jp
by
kyon mm
PPTX
レガシーコード改善のススメ
by
Akira Hirasawa
PDF
第1回JUnit勉強会ハンズオン
by
equj65
PDF
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
by
Yahoo!デベロッパーネットワーク
PPTX
Spring超入門-Springと出会ってから1年半-
by
Ryosuke Uchitate
PDF
システムアーキテクト~My batis編~
by
Shinichi Kozake
PDF
レガシーコードとの付き合い方とテストでの話
by
H Iseri
PDF
コーディングスタイル入門~人に伝えるプログラミング~
by
Hideki MACHIDA
PDF
Gaucheで本を作る
by
Keiichiro Shikano
PDF
納品のない受託開発を支える レガシーコードを作らない仕組み
by
Masahiro Nishimi
PDF
命名の話(ソースコードは読み物です)
by
Akihiro Nakahara
PDF
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
by
Hiroyuki Ohnaka
KEY
テストコードのリファクタリング
by
Shuji Watanabe
PDF
エクストリームエンジニア5
by
T-arts
PDF
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
by
Keiichiro Shikano
PDF
リファクタリング?
by
Yoshiyuki Miyagawa
PDF
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
by
Masanori Satoh
PDF
リファクタリングの実情
by
Ryuhei Ishibashi
PPT
【CyberX読書会】リファクタリング 2012/02/06
by
Suguru Shirai
プログラムの処方箋~健康なコードと病んだコード
by
Shigenori Sagawa
テストとリファクタリングに関する深い方法論 #wewlc_jp
by
kyon mm
レガシーコード改善のススメ
by
Akira Hirasawa
第1回JUnit勉強会ハンズオン
by
equj65
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
by
Yahoo!デベロッパーネットワーク
Spring超入門-Springと出会ってから1年半-
by
Ryosuke Uchitate
システムアーキテクト~My batis編~
by
Shinichi Kozake
レガシーコードとの付き合い方とテストでの話
by
H Iseri
コーディングスタイル入門~人に伝えるプログラミング~
by
Hideki MACHIDA
Gaucheで本を作る
by
Keiichiro Shikano
納品のない受託開発を支える レガシーコードを作らない仕組み
by
Masahiro Nishimi
命名の話(ソースコードは読み物です)
by
Akihiro Nakahara
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
by
Hiroyuki Ohnaka
テストコードのリファクタリング
by
Shuji Watanabe
エクストリームエンジニア5
by
T-arts
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
by
Keiichiro Shikano
リファクタリング?
by
Yoshiyuki Miyagawa
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
by
Masanori Satoh
リファクタリングの実情
by
Ryuhei Ishibashi
【CyberX読書会】リファクタリング 2012/02/06
by
Suguru Shirai
Similar to 今日からはじめるリファクタリング
PPTX
僕たちがすべきことはリファクタリングなのか
by
Ito Takumi
PDF
デザインパターンを用いたリファクタリング
by
kei takakuda
PDF
2019年度 若手技術者向け講座 リファクタリング
by
keki3
PPT
Mizukiryu refactering-20110821
by
Mizuki Yamanaka
PDF
Refactoring
by
Akinori IKEDA
PDF
第10回rest勉強会 リファクタリング(サーバ編)編
by
ksimoji
PDF
App codeでリファクタリング
by
semnil
KEY
111030 ksworks-lifehack-refactoring
by
Ken AKASHI
PDF
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
by
Kamiya Toshihiro
PDF
第11回rest勉強会 リファクタリング(クライアント編)
by
ksimoji
僕たちがすべきことはリファクタリングなのか
by
Ito Takumi
デザインパターンを用いたリファクタリング
by
kei takakuda
2019年度 若手技術者向け講座 リファクタリング
by
keki3
Mizukiryu refactering-20110821
by
Mizuki Yamanaka
Refactoring
by
Akinori IKEDA
第10回rest勉強会 リファクタリング(サーバ編)編
by
ksimoji
App codeでリファクタリング
by
semnil
111030 ksworks-lifehack-refactoring
by
Ken AKASHI
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
by
Kamiya Toshihiro
第11回rest勉強会 リファクタリング(クライアント編)
by
ksimoji
今日からはじめるリファクタリング
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