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
keki3
PDF, PPTX
78 views
2019年度 若手技術者向け講座 リファクタリング
2019年度 若手技術者向け講座 リファクタリング
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 32
2
/ 32
3
/ 32
4
/ 32
5
/ 32
6
/ 32
7
/ 32
8
/ 32
9
/ 32
10
/ 32
11
/ 32
12
/ 32
13
/ 32
14
/ 32
15
/ 32
16
/ 32
17
/ 32
18
/ 32
19
/ 32
20
/ 32
21
/ 32
22
/ 32
23
/ 32
24
/ 32
25
/ 32
26
/ 32
27
/ 32
28
/ 32
29
/ 32
30
/ 32
31
/ 32
32
/ 32
More Related Content
PDF
2018年度 若手技術者向け講座 リファクタリング
by
keki3
PPTX
リファクタリングのすゝめ
by
ngs
PDF
今日からはじめるリファクタリング
by
Junya Shimazu
PDF
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
by
Keiichiro Shikano
PDF
第10回rest勉強会 リファクタリング(サーバ編)編
by
ksimoji
PPT
【CyberX読書会】リファクタリング 2012/02/06
by
Suguru Shirai
PDF
App codeでリファクタリング
by
semnil
KEY
111030 ksworks-lifehack-refactoring
by
Ken AKASHI
2018年度 若手技術者向け講座 リファクタリング
by
keki3
リファクタリングのすゝめ
by
ngs
今日からはじめるリファクタリング
by
Junya Shimazu
『新装版リファクタリング ―既存のコードを安全に改善する―』 のここがすごい
by
Keiichiro Shikano
第10回rest勉強会 リファクタリング(サーバ編)編
by
ksimoji
【CyberX読書会】リファクタリング 2012/02/06
by
Suguru Shirai
App codeでリファクタリング
by
semnil
111030 ksworks-lifehack-refactoring
by
Ken AKASHI
Similar to 2019年度 若手技術者向け講座 リファクタリング
PDF
デザインパターンを用いたリファクタリング
by
kei takakuda
PPTX
良いコードとは
by
Nobuyuki Matsui
PPTX
可読性について リーダブルコード part1(表面上の改善)
by
tak
PDF
大きな泥のカタマリを相手にするためのアジャイルと努力と苦労 by Joe Yoder (XP祭り2014)
by
Yasui Tsutomu
PDF
Processing
by
Akifumi Nambu
PDF
エクストリームエンジニア5
by
T-arts
PPT
Mizukiryu refactering-20110821
by
Mizuki Yamanaka
PPT
レガシーコード読書会 20120618
by
Suguru Shirai
PDF
第11回rest勉強会 リファクタリング(クライアント編)
by
ksimoji
PDF
Refactoring
by
Akinori IKEDA
PDF
20120706-readablecode
by
Masanori Kado
PDF
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
by
Kamiya Toshihiro
デザインパターンを用いたリファクタリング
by
kei takakuda
良いコードとは
by
Nobuyuki Matsui
可読性について リーダブルコード part1(表面上の改善)
by
tak
大きな泥のカタマリを相手にするためのアジャイルと努力と苦労 by Joe Yoder (XP祭り2014)
by
Yasui Tsutomu
Processing
by
Akifumi Nambu
エクストリームエンジニア5
by
T-arts
Mizukiryu refactering-20110821
by
Mizuki Yamanaka
レガシーコード読書会 20120618
by
Suguru Shirai
第11回rest勉強会 リファクタリング(クライアント編)
by
ksimoji
Refactoring
by
Akinori IKEDA
20120706-readablecode
by
Masanori Kado
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
by
Kamiya Toshihiro
More from keki3
PDF
2019年度 若手技術者向け講座 DBMSの機能
by
keki3
PDF
2019 若手技術者向け講座 DB設計
by
keki3
PDF
2019年度 若手技術者向け講座 デザインパターン 演習問題
by
keki3
PDF
Introduction to programming
by
keki3
PDF
2019年度 若手技術者向け講座 実行計画
by
keki3
PDF
2019年度 若手技術者向け講座 NoSQL
by
keki3
PDF
2019年度若手技術者向け講座 実践SQL
by
keki3
PDF
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
by
keki3
PDF
2019年度 若手技術者向け講座 UML
by
keki3
PDF
2018年度 若手技術者向け講座 デザインパターン
by
keki3
PDF
2019年度 若手技術者向け講座 オブジェクト指向
by
keki3
PDF
2019年度若手技術者向け講座 インデックス
by
keki3
PDF
Wakatemukekouza2019 web
by
keki3
PDF
2018年度 若手技術者向け講座 オブジェクト指向01
by
keki3
PDF
2019年度 若手技術者向け講座 SQL演習
by
keki3
PDF
Computer terminology
by
keki3
PDF
2019 若手技術者向け講座 DBMSの機能 演習問題
by
keki3
PDF
2018年度 若手技術者向け講座 UML
by
keki3
PDF
2019年度 若手技術者向け講座 デザインパターン
by
keki3
PDF
2018年度 若手技術者向け講座 DB設計・正規化
by
keki3
2019年度 若手技術者向け講座 DBMSの機能
by
keki3
2019 若手技術者向け講座 DB設計
by
keki3
2019年度 若手技術者向け講座 デザインパターン 演習問題
by
keki3
Introduction to programming
by
keki3
2019年度 若手技術者向け講座 実行計画
by
keki3
2019年度 若手技術者向け講座 NoSQL
by
keki3
2019年度若手技術者向け講座 実践SQL
by
keki3
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
by
keki3
2019年度 若手技術者向け講座 UML
by
keki3
2018年度 若手技術者向け講座 デザインパターン
by
keki3
2019年度 若手技術者向け講座 オブジェクト指向
by
keki3
2019年度若手技術者向け講座 インデックス
by
keki3
Wakatemukekouza2019 web
by
keki3
2018年度 若手技術者向け講座 オブジェクト指向01
by
keki3
2019年度 若手技術者向け講座 SQL演習
by
keki3
Computer terminology
by
keki3
2019 若手技術者向け講座 DBMSの機能 演習問題
by
keki3
2018年度 若手技術者向け講座 UML
by
keki3
2019年度 若手技術者向け講座 デザインパターン
by
keki3
2018年度 若手技術者向け講座 DB設計・正規化
by
keki3
Recently uploaded
PDF
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PDF
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
2019年度 若手技術者向け講座 リファクタリング
1.
1 リファクタリング
2.
概要 リファクタリングとは何かを学習します。 2
3.
目次 リファクタリングとは 可読性の高いコードの書き方
リファクタリング 3
4.
リファクタリングとは 4
5.
リファクタリングとは リファクタリングとは • 外から見た振る舞いを変えずに、中身のソースコードを修正すること。 •
リファクタリングの目的のほとんどは、可読性の悪いコードをきれいに 整えること。 • 実行結果は変わらないが、可読性が上がるようにソースコードをいい感 じに最適化しましょう!というのがリファクタリング。 7
6.
そもそもの話 そもそも 現状動いてるシステムに対して 可読性の低いソースコードは修正した方が良いのか? 8
7.
そもそもの話 どんなに汚いコードでも 動いているコードは修正せずに そっとしておこう… というのがというのが一般的に正しいとされていた。 (一昔前の話) 9
8.
そもそもの話 ところが いや、外から見た動作を変更せずに、 コードを洗練させていこう!! という考え方出てきた。 10
9.
そもそもの話 それが 「リファクタリング」 という手法 11
10.
可読性の高い コードの書き方 12
11.
可読性の高いコードを書く そもそも プログラムを作るとき、 最初から可読性の高いコードを書けるのであれば、 リファクタリングは不要です。 リファクタリングの手法を知る前に まずは可読性の高いコードを書くための考え方を身につけましょう。 13
12.
可読性の高いコードを書く コードは必ず変更される • プログラミングのソースコードは一度書いたらもう終わりということは ほとんどありません。 •
必ず変更されると心得ておきましょう。 • そのため、変更に強いコードを書くことを意識する必要があります。 14
13.
可読性の高いコードを書く コードは読まれる時間の方が長い • ソースコードは、一般的に書いている時間よりも読まれる時間の方が長 いです。 •
そのため、プログラミングをするときは「書きやすさ」よりも「読みや すさ」を優先する必要があります。 15
14.
可読性の高いコードを書く KISSの原則 • Keep
It Simple, Stupid.または Keep It Short and Simple. の略です。 • 直訳すると「シンプルにしておけ、愚か者よ」。または「簡潔かつ単純 にしておけ」。 • 「将来に備えて」などと考えて本当は必要のない余計なコードを書いて しまうと、コードはどんどん複雑になっていきます。 • 余計なことはせず、シンプルなコードを保つように心掛けましょう。 16
15.
可読性の高いコードを書く DRY原則 • Don't
Repeat Yourself. の略で、直訳すると「繰り返してはいけない。」 • コードをコピペして重複させないようにしましょうということです。 • 重複は、バグ修正、機能追加の際のリスクになります。 • 処理だけでなく、定数やリテラルも重複しないように注意しましょう。 • また、コードをそのまま説明しているコメントも重複と同じです。 17
16.
可読性の高いコードを書く 名前重要 • プログラミングは、コードの命名が最重要課題だとも言われています。 •
変数名、メソッド名、クラス名、などプログラミングでは必ず名前を付 ける場面が多くあります。 • 名前が適切かどうかを常に意識してプログラムを書くことを心がけま しょう。 18
17.
可読性の高いコードを書く コメントの書き方 • コメントの目的は、書き手の意図を知らせること。 •
読み手がコードの理解に役に立つことを書く。 • コードからすぐにわかることは、コメントには書かない。 19
18.
可読性の高いコードを書く コメントを多く書かない理由 • コードが修正されたときに、コメントも同時に修正されるとは限らない。 •
コードを読めばわかること、特に処理の説明などはコメントには書かな いようにする。 20
19.
可読性の高いコードを書く メソッドの行数 • 一つのメソッドは何行以内に収めたほうが良いか? •
Java 1.6 の標準パッケージで4000のメソッドを調べたところ 9割のメソッドは20行以下とこのこと。 • 一概には言えないが、20行というのが一つの目安になる。 21
20.
可読性の高いコードを書く 優れたプログラマーになるために • プログラマーとして身に付けて おきたい考え方が多く載っています。 22
21.
可読性の高いコードを書く 変数名の付け方 • この本が参考になります。 •
変数名など、名前を付けるのが苦手 だと感じる方は一読してみましょう。 23
22.
可読性の高いコードを書く まとめ • ソースコードは、読まれる時間が長く、必ず変更されるものと心得る。 •
重複を排除して読みやすいソースコードを書く。そして余計なソースは 記述しない。 • 分かりやすい名前をつける。 • コメントは必要最低限にする。 24
23.
リファクタリング 25
24.
リファクタリングの定義 リファクタリングの定義 • リファクタリングの定義は「外部から見たプログラムの振る舞いを変え ずに、プログラムの内部構造を改善すること」 •
バグを修正することはリファクタリングとはなりません。 • また、機能の追加もリファクタリングには含まれません。 リファクタリングをすると、結果的にバグ修正や機能追加が行いや すくなる。これがリファクタリングの目的 26
25.
リファクタリングの注意点 リファクタリングの注意点 • リファクタリングと機能追加を同時に行ってはいけない。 •
テストが用意されているか確認する。 • できるかぎり頻繁にテストを行う。 • 作業を小さな単位にまとめて、慎重に作業を行う。 27
26.
リファクタリングの対象 リファクタリングの対象 • 二重化しているコードを発見した(DRY原則に反している) •
関係ないもの同士が影響し合っている。 • 時代遅れの技術が使われている。 • パフォーマンスが悪い 28
27.
リファクタリングの対象 不吉な匂い 「Java言語で学ぶリファクタリング入門」の中で紹介されているものです。 • コードが重複している •
メソッドが長すぎる • クラスの持つフィールドやメソッドが多すぎる • メソッドの引数が多すぎる • 仕様変更の修正箇所があちこちに散らばっている • あるクラスを修正すると、他のクラスも修正しなければならない • 他のクラスの中身をいじっているクラスがある • まとめて扱うべきデータが1つのクラスにまとまっていない • クラスを使わず、int型のような基本データ型ばかり使っている • switch文やif文を使って振る舞いを分けている • サブクラスを作ると、別のところにもサブクラスを作らなければならな い 29
28.
リファクタリングの対象 不吉な匂い • クラスが大して仕事をしていない •
拡張するだろうと期待して、クラスが一般化しすぎている • 一時的にしか使わないフィールドがある • メソッド呼び出しの連鎖が多すぎる • 委譲ばかりしていて、自分では仕事をしていないクラスがある • 必要のない双方向リンクや、IS-A関係の成り立たない継承がある • クラスのインターフェースが不適切 • 既存のクラスライブラリが使いにくい • フィールドとアクセッサしかもっていないクラスがある • 継承しているメソッドなのに、それを呼ぶと問題が起きる • コードの不備を補うために、詳しいコメントがある 30
29.
リファクタリングの対象 不吉な匂い 全部で22個が紹介されています。かなりたくさんありますが、 ざっくりまとめると • 理解しにくい •
修正しにくい • 拡張しにくい と感じる部分がリファクタリングの対象になります。 31
30.
リファクタリングの手順 リファクタリングの手順 1. テストを実施してテストを通ることを確認 テストが用意されていない場合は、テストの作成から行う。 テストがないコードに関しては、リファクタリングはするべきではない。 2.
コードの修正を実施 3. テストを実施してテストが通ることを確認 4. 2と3の手順を繰り返す。 たくさんのコードを一気に修正しないように注意する。 リファクタリングは「小さな修正 ⇒ テスト」のサイクルを多く繰り返し、 少しずつ実施していく。 32
31.
まとめ 56
32.
全体のまとめ リファクタリングは必ずしも実施したほうが良いわけではありま せん。状況に応じて適切な判断を下しましょう。 リファクタリングの必要がない、読みやすい、かつ拡張しやすい コードを書けるように心がけましょう。
時間と心に余裕があればリファクタリング積極的にリファクタリ ングしていきましょう。 リファクタリングは繰り返しテストしながら小さく進めましょう。 57
Download