Submit Search
Upload
今日からはじめるリファクタリング
•
12 likes
•
3,949 views
Junya Shimazu
Follow
Martin Fowlerの名著「リファクタリング- プログラムの体質改善テクニック-」より今日から実践できるリファクタリングテクニックの紹介
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 42
Download now
Download to read offline
Recommended
クラウドや多言語の環境に対応できる 新しいJava実行環境 GraalVM は、ネイティブビルドだけでなく、通常の Java VM として使うこともできます。 このたび、クラウド環境用ベンチマーク「BluePerf」などを使い、GraalVM と OpenJDK を比較したので、結果を報告します。 Japan Java User Group (JJUG) Cross Community Conference (CCC) 2021 Fall 発表資料 https://www.youtube.com/watch?v=5MtjfQfdC_g
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
2022年10月1日に開催されたXP祭り2022での講演「サービスブループリントによるシステム設計手法の紹介 」の資料です
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
Yusuke Suzuki
Developers summit 2015の20-B-5での発表資料になります。
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策について45分拡大版 #devsumi #devsumiB
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策について45分拡大版 #devsumi #devsumiB
Itsuki Kuroda
例外設計における大罪 Jun 27, 2012 @ java-ja
例外設計における大罪
例外設計における大罪
Takuto Wada
「プロダクトオーナーがユーザーストーリーマッピングを使ってPBLを作成する」というプロセスを体験するワークショップを社内で開催しました。
ユーザーストーリーマッピングを使ってプロダクトバックログを作ろう
ユーザーストーリーマッピングを使ってプロダクトバックログを作ろう
izumi ito
お世辞にも品質が良いとは言えず四苦八苦してテストしているけれど、正直なところどうテストしていいか分からない、というあなた。テストの設計だのテスト技法だのと言われてもウチの現場には関係ないや、というあなた。テストのスキルは付けたいし勉強もしてるけど仕事に役立ってないよ、というあなた。そんなあなたに、明日からちょっとずつテストの腕を上げられる方法をお見せしましょう。そして、とっても腕が上がったらどんなテストができるようになるか、をちょっとだけお見せしましょう。
ちょっと明日のテストの話をしよう
ちょっと明日のテストの話をしよう
Yasuharu Nishi
リーンコーヒーの紹介 アジェンダのないミーティング方法 参加者が集まり、アジェンダを作り、議論を始める そんなミーティングの方法の紹介
Lean coffee
Lean coffee
Takeshi Arai
デブサミ 2015 【20-C-3】ドメイン駆動設計再入門
ドメイン駆動設計再入門
ドメイン駆動設計再入門
Yukei Wachi
Recommended
クラウドや多言語の環境に対応できる 新しいJava実行環境 GraalVM は、ネイティブビルドだけでなく、通常の Java VM として使うこともできます。 このたび、クラウド環境用ベンチマーク「BluePerf」などを使い、GraalVM と OpenJDK を比較したので、結果を報告します。 Japan Java User Group (JJUG) Cross Community Conference (CCC) 2021 Fall 発表資料 https://www.youtube.com/watch?v=5MtjfQfdC_g
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
2022年10月1日に開催されたXP祭り2022での講演「サービスブループリントによるシステム設計手法の紹介 」の資料です
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
Yusuke Suzuki
Developers summit 2015の20-B-5での発表資料になります。
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策について45分拡大版 #devsumi #devsumiB
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策について45分拡大版 #devsumi #devsumiB
Itsuki Kuroda
例外設計における大罪 Jun 27, 2012 @ java-ja
例外設計における大罪
例外設計における大罪
Takuto Wada
「プロダクトオーナーがユーザーストーリーマッピングを使ってPBLを作成する」というプロセスを体験するワークショップを社内で開催しました。
ユーザーストーリーマッピングを使ってプロダクトバックログを作ろう
ユーザーストーリーマッピングを使ってプロダクトバックログを作ろう
izumi ito
お世辞にも品質が良いとは言えず四苦八苦してテストしているけれど、正直なところどうテストしていいか分からない、というあなた。テストの設計だのテスト技法だのと言われてもウチの現場には関係ないや、というあなた。テストのスキルは付けたいし勉強もしてるけど仕事に役立ってないよ、というあなた。そんなあなたに、明日からちょっとずつテストの腕を上げられる方法をお見せしましょう。そして、とっても腕が上がったらどんなテストができるようになるか、をちょっとだけお見せしましょう。
ちょっと明日のテストの話をしよう
ちょっと明日のテストの話をしよう
Yasuharu Nishi
リーンコーヒーの紹介 アジェンダのないミーティング方法 参加者が集まり、アジェンダを作り、議論を始める そんなミーティングの方法の紹介
Lean coffee
Lean coffee
Takeshi Arai
デブサミ 2015 【20-C-3】ドメイン駆動設計再入門
ドメイン駆動設計再入門
ドメイン駆動設計再入門
Yukei Wachi
開発・運用の課題とDevOps DevOpsを支える技術 DevOps実践のための課題
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
アジャイル札幌 ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
JJUG CCC 2018 Fall 登壇時の資料です。 #jjug_ccc #ccc_g1
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
DevLove関西の以下のイベントのスライドです https://devlove-kansai.doorkeeper.jp/events/75644
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
Itsuki Kuroda
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
2002年に株式会社豆蔵で行われた「豆ナイトXPスペシャル」でのプレゼン資料です
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Masashi Umezawa
PostgreSQLカンファレンス2013 LightningTalk (2013-11-13: migr8.rbの設定箇所を若干修正) (2013-11-14: SQLite3での設定等を修正、「migr8.rb new --table=users」を追加)
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
Developers Summit 2021 Summer https://event.shoeisha.jp/devsumi/20210730/session/3245/
エンジニア必見!Sreへの第一歩
エンジニア必見!Sreへの第一歩
Takuya Tezuka
しばしばQAと一括りにされる、テストエンジニアとSETとQAを整理してバランスをよくするための「QMファンネル(3D版)」について紹介しています。Scrum Fest Osaka 2021のプレゼンテーション資料です。
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
Yasuharu Nishi
GitLab Meetup Tokyo #9 LT about migrate from GitLab to GitLab.
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
富士通クラウドテクノロジーズ株式会社
Springの初心者が疑問に思ったり、おかしな使い方をしてしまいがちなところをピックアップして説明します。
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
LEAN STARTUP UPDATE 2015の資料です。 https://atnd.org/events/60368
LEANSTARTUPの現場 #leanstartup
LEANSTARTUPの現場 #leanstartup
Itsuki Kuroda
2022-03-30 Hatena Engineer Seminar #19 カクヨム編 https://hatena.connpass.com/event/241412/
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
Takafumi ONAKA
2014/06/14に行われたOSC Hokkaido 2014内で株式会社インフィニットループの佐々木が発表したセミナー、「新入社員のための大規模ゲーム開発入門 サーバサイド編」のスライド資料
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
2/28社内勉強会用
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
20191123 JJUG Serverless 時代の Java について
Serverless時代のJavaについて
Serverless時代のJavaについて
Amazon Web Services Japan
・ 2013 7/17 サイバードさんで行われた「LeanStartupNight - The LeanStartupStory」で使用したスライドです。会場提供、運営、軽食提供してくださったサイバードさん、対バン(?)張ってくれた志田さん、DevLoveメンバーのみなさん、ありがとう! ※ 素人による独学なので誤訳等々あるかもです。間違ってたら是非教えて下さい。 ※ わたしが働いているディップ株式会社ではリーンなひとを募集しています。ご興味ある方はぜひコンタクトください。 ※ DevLOVEとはDevLOVEとは、開発(Develop)を愛する人たちの集まりです。 http://www.devlove.org/
つくらない ものづくり ~明日からできるリーンスタートアップ~
つくらない ものづくり ~明日からできるリーンスタートアップ~
圭 進藤
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
Concepts and tools of logging in Java. Javaにおけるログ出力の考え方と道具について説明. CC Attribution Licenseの元に公開します.
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
レガシーコード改善勉強会(2014/9/27@ヤフーさん)の講演資料です。
レガシーコード改善のススメ
レガシーコード改善のススメ
Akira Hirasawa
プログラミングのリファクタリング初歩に関する話題です。
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
More Related Content
What's hot
開発・運用の課題とDevOps DevOpsを支える技術 DevOps実践のための課題
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
アジャイル札幌 ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
JJUG CCC 2018 Fall 登壇時の資料です。 #jjug_ccc #ccc_g1
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
DevLove関西の以下のイベントのスライドです https://devlove-kansai.doorkeeper.jp/events/75644
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
Itsuki Kuroda
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
2002年に株式会社豆蔵で行われた「豆ナイトXPスペシャル」でのプレゼン資料です
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Masashi Umezawa
PostgreSQLカンファレンス2013 LightningTalk (2013-11-13: migr8.rbの設定箇所を若干修正) (2013-11-14: SQLite3での設定等を修正、「migr8.rb new --table=users」を追加)
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
Developers Summit 2021 Summer https://event.shoeisha.jp/devsumi/20210730/session/3245/
エンジニア必見!Sreへの第一歩
エンジニア必見!Sreへの第一歩
Takuya Tezuka
しばしばQAと一括りにされる、テストエンジニアとSETとQAを整理してバランスをよくするための「QMファンネル(3D版)」について紹介しています。Scrum Fest Osaka 2021のプレゼンテーション資料です。
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
Yasuharu Nishi
GitLab Meetup Tokyo #9 LT about migrate from GitLab to GitLab.
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
富士通クラウドテクノロジーズ株式会社
Springの初心者が疑問に思ったり、おかしな使い方をしてしまいがちなところをピックアップして説明します。
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
LEAN STARTUP UPDATE 2015の資料です。 https://atnd.org/events/60368
LEANSTARTUPの現場 #leanstartup
LEANSTARTUPの現場 #leanstartup
Itsuki Kuroda
2022-03-30 Hatena Engineer Seminar #19 カクヨム編 https://hatena.connpass.com/event/241412/
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
Takafumi ONAKA
2014/06/14に行われたOSC Hokkaido 2014内で株式会社インフィニットループの佐々木が発表したセミナー、「新入社員のための大規模ゲーム開発入門 サーバサイド編」のスライド資料
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
2/28社内勉強会用
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
20191123 JJUG Serverless 時代の Java について
Serverless時代のJavaについて
Serverless時代のJavaについて
Amazon Web Services Japan
・ 2013 7/17 サイバードさんで行われた「LeanStartupNight - The LeanStartupStory」で使用したスライドです。会場提供、運営、軽食提供してくださったサイバードさん、対バン(?)張ってくれた志田さん、DevLoveメンバーのみなさん、ありがとう! ※ 素人による独学なので誤訳等々あるかもです。間違ってたら是非教えて下さい。 ※ わたしが働いているディップ株式会社ではリーンなひとを募集しています。ご興味ある方はぜひコンタクトください。 ※ DevLOVEとはDevLOVEとは、開発(Develop)を愛する人たちの集まりです。 http://www.devlove.org/
つくらない ものづくり ~明日からできるリーンスタートアップ~
つくらない ものづくり ~明日からできるリーンスタートアップ~
圭 進藤
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
Concepts and tools of logging in Java. Javaにおけるログ出力の考え方と道具について説明. CC Attribution Licenseの元に公開します.
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
What's hot
(20)
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
エンジニア必見!Sreへの第一歩
エンジニア必見!Sreへの第一歩
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
LEANSTARTUPの現場 #leanstartup
LEANSTARTUPの現場 #leanstartup
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
イベント・ソーシングを知る
イベント・ソーシングを知る
Serverless時代のJavaについて
Serverless時代のJavaについて
つくらない ものづくり ~明日からできるリーンスタートアップ~
つくらない ものづくり ~明日からできるリーンスタートアップ~
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Viewers also liked
レガシーコード改善勉強会(2014/9/27@ヤフーさん)の講演資料です。
レガシーコード改善のススメ
レガシーコード改善のススメ
Akira Hirasawa
プログラミングのリファクタリング初歩に関する話題です。
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
レガシーコード改善勉強会 in Yahoo Japan 2014.09.27 プロジェクトに対する方法論構築と、タスクマネジメントについての紹介 後半はMikado Methodの簡易紹介です。
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
レガシーコード改善勉強会で発表した継続的インテグレーションとJenkinsの発表資料です。 2014/9/27(土) 11:50~2014/9/27(土) 18:30 http://passmarket.yahoo.co.jp/event/show/detail/01pitgwzj67m.html
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
Masanori Satoh
デブサミ2015「ITエンジニアに読んでほしい!技術書・ビジネス書大賞 2015」におけるプレゼン(発表者は高尾さん)
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
Keiichiro Shikano
レガシーコード改善勉強会
レガシーコードとの付き合い方とテストでの話
レガシーコードとの付き合い方とテストでの話
H Iseri
2014/9/27 レガシーコード改善勉強会でお話をさせていただきました。 http://passmarket.yahoo.co.jp/event/show/detail/01pitgwzj67m.html
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
Masahiro Nishimi
2015/8/4 アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
Hiroyuki Ohnaka
リファクタリングしてますか?
リファクタリングの実情
リファクタリングの実情
Ryuhei Ishibashi
http://www.slideshare.net/guest7a66b8/gauche の再掲
Gaucheで本を作る
Gaucheで本を作る
Keiichiro Shikano
9/27に行われたレガシーコード改善勉強会で発表された資料です。 http://passmarket.yahoo.co.jp/event/show/detail/01pitgwzj67m.html
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
リファクタリング プログラミングの体質改善テクニック CyberX読書会(第三回)
【CyberX読書会】リファクタリング 2012/02/06
【CyberX読書会】リファクタリング 2012/02/06
Suguru Shirai
社内勉強会用に作ったスライド アジャイル用語を連呼してても、目的にリーチしてないこと多数という風刺の導入がやたらウケました。
リファクタリング?
リファクタリング?
Yoshiyuki Miyagawa
命名の話(ソースコードは読み物です)
命名の話(ソースコードは読み物です)
Akihiro Nakahara
JJUG CCC 2012 fall / 札幌Javaカンファレンス2012での発表資料です。 ソースコードは https://github.com/shuji/demo-refactering-unittest から取得してください。
テストコードのリファクタリング
テストコードのリファクタリング
Shuji Watanabe
JJUG CCC 2016 Fall
Spring超入門-Springと出会ってから1年半-
Spring超入門-Springと出会ってから1年半-
Ryosuke Uchitate
長野ソフトウェア技術者グループ「NSEG」 第2回勉強会で用いた発表資料です。 コーディングスタイルの簡単なお話を、アノト社のpenPresenter (国内未発売)を用いて発表しました。 時間の関係上「俺様スタイル」の発表はカットしたので、このスライドからも削除しています。
コーディングスタイル入門~人に伝えるプログラミング~
コーディングスタイル入門~人に伝えるプログラミング~
Hideki MACHIDA
エクストリームエンジニア5資料
エクストリームエンジニア5
エクストリームエンジニア5
T-arts
社内で実施したJUnit勉強会(ハンズオン)第一回資料 JUnitのテストクラス定義、メソッド定義、アサーションの実施方法、構造化テストなどJUnitの基本的な利用方法を学習する。
第1回JUnit勉強会ハンズオン
第1回JUnit勉強会ハンズオン
equj65
うらがみがJavaまわりのORMを知りたい会
システムアーキテクト~My batis編~
システムアーキテクト~My batis編~
Shinichi Kozake
Viewers also liked
(20)
レガシーコード改善のススメ
レガシーコード改善のススメ
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
レガシーコードとの付き合い方とテストでの話
レガシーコードとの付き合い方とテストでの話
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
リファクタリングの実情
リファクタリングの実情
Gaucheで本を作る
Gaucheで本を作る
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
【CyberX読書会】リファクタリング 2012/02/06
【CyberX読書会】リファクタリング 2012/02/06
リファクタリング?
リファクタリング?
命名の話(ソースコードは読み物です)
命名の話(ソースコードは読み物です)
テストコードのリファクタリング
テストコードのリファクタリング
Spring超入門-Springと出会ってから1年半-
Spring超入門-Springと出会ってから1年半-
コーディングスタイル入門~人に伝えるプログラミング~
コーディングスタイル入門~人に伝えるプログラミング~
エクストリームエンジニア5
エクストリームエンジニア5
第1回JUnit勉強会ハンズオン
第1回JUnit勉強会ハンズオン
システムアーキテクト~My batis編~
システムアーキテクト~My batis編~
今日からはじめるリファクタリング
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 now