Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
リファクタリング
サーバ編
AWS上で構築するRESTfulアプリ勉強会
~Web開発ワークショップ~【第10回】
概要
概要
1. リファクタリング?
2. リファクタリング手順
3. 「コードの匂い」
4. テスト
概要
1. リファクタリング?
2. リファクタリング手順
3. 「コードの匂い」
4. テスト
リファクタリング
=プログラムの動作を
変えずに内部構造を改
善する
リファクタリングの方法
1. メソッドの抽出
2.メソッドの移動
3.オブジェクトによるデータ値の置き換え
4.条件記述の分解
5.メソッド名の変更
等々...
「リファクタリング カタログ」
でググってみてください
概要
1. リファクタリング?
2. リファクタリング手順
3. 「コードの匂い」
4. テスト
リファクタリングの手順
1. リファクタリングすべきか判断する。
2. テストがあるか?なければ書く。
3. リファクタリングする
4. テストする
5. 1に戻る
「5. 1に戻る」、重要!
概要
1. リファクタリング?
2. リファクタリング手順
3. 「コードの匂い」
4. テスト
コードの匂い
リファクタリングすべきコードは
「匂う」
不吉な匂い
1.重複したコード
2.長すぎるメソッド
3.巨大なクラス
4.多すぎる引数
5.変更の発散
6.変更の分散
7.属性、操作の横恋慕
8.データの群れ
9.基本データ型への執着
10.スイッチ文
11.パラレル継承
12.怠け者クラ...
分類してみました
1.激臭系
2.蓋を開けたら臭う系
3.メンドクサイ系
4.加齢臭系
5.生臭い系
6.汗臭い系
7.ウソ臭い系
ひとつだけ紹介
1.激臭系
• 長すぎるメソッド
•巨大なクラス
•多すぎる引数
•スイッチ文
今回
「長すぎるメソッド」
を
「メソッドの抽出」
でリファクタリング!
概要
1. リファクタリング?
2. リファクタリング手順
3. 「コードの匂い」
4. テスト
テスト
• PHPUnit
• モック
ワークショップ
アップロード
が臭う!
本日のメニュー
1. 事前準備
•ブランチ整備
•composer設定
•phpUnitインストール
•テストDBの作成
2. Lesson1 PHPUnitの設定と簡単なテスト作成
3. Lesson2 アップロード機能のテスト
4. Les...
事前準備
• gitのブランチを整える
• 前回、前々回不参加の方は
テーブル追加、列追加する
gitのブランチを整える
■masterブランチを前回の内容
を終えた状態にする
■masterブランチを元に、今回
の作業用である、
「vol/10」ブランチを作成する
人によって手順が違い
ます!(重要)
■前回の内容を途中までやった方
■前回の内容を完了した方
■今回から参加の方
gitのブランチを整える
http://
goo.gl/WEHXqX
ジーオーオー.ジーエル/
ダブリューイーエイチエックスキューエックス
ここに詳しく
書いております!
今回のマニュアルにリンクがあります。
※後ほど説明
第5回と第6回に不参加の方は
テーブル追加、列追加をする
•composer設定
•phpUnitインストール
•テストDBの作成
Qiitaの投稿で詳しく!
各Lessonについては
Qiitaの投稿で詳しく!
PHPUnit
テスト失敗時(赤)
PHPUnit
テスト成功時(緑)
RED
GREEN
Refactor
のリズム
public function upload() {
$files = $this->getUploadFileParams();
$owner = $this->Auth->user()['id'];
$numTodos = 0;
$error...
クライアントがアップロードを実行した際のPOST
データを取得する
getUploadFileParams
ログイン中ユーザのIDを取得する getLoginUserId
アップロードされたファイル群を読み込んでTODO
としてDBに登録する
...
マニュアル(Qiita)
http://
goo.gl/yWZD5I
ジーオーオー.ジーエル/
ワイダブリューゼットディー5アイ
はじめましょう!
リファクタリングの方法
1. メソッドの抽出
2. メソッドの移動
3. オブジェクトによるデータ値の置き換え
4. 条件記述の分解
5. メソッド名の変更
等々...
「リファクタリング カタログ」
でググってみてください
おさらい
不吉な匂い
1.重複したコード
2.長すぎるメソッド
3.巨大なクラス
4.多すぎる引数
5.変更の発散
6.変更の分散
7.属性、操作の横恋慕
8.データの群れ
9.基本データ型への執着
10.スイッチ文
11.パラレル継承
12.怠け者クラ...
分類してみました
1.激臭系
2.蓋を開けたら臭う系
3.メンドクサイ系
4.加齢臭系
5.生臭い系
6.汗臭い系
7.ウソ臭い系
おさらい
ダウンロードも
ちょっと臭くないか?
🍻飲みDev🍕 テーマ
Upcoming SlideShare
Loading in …5
×

第10回rest勉強会 リファクタリング(サーバ編)編

710 views

Published on

2015/10/23に行われたAWS上で構築するRESTfulアプリ勉強会~Web開発ワークショップ~【第10回】で使用した資料です。

Published in: Software
  • Be the first to comment

第10回rest勉強会 リファクタリング(サーバ編)編

  1. 1. リファクタリング サーバ編 AWS上で構築するRESTfulアプリ勉強会 ~Web開発ワークショップ~【第10回】
  2. 2. 概要
  3. 3. 概要 1. リファクタリング? 2. リファクタリング手順 3. 「コードの匂い」 4. テスト
  4. 4. 概要 1. リファクタリング? 2. リファクタリング手順 3. 「コードの匂い」 4. テスト
  5. 5. リファクタリング =プログラムの動作を 変えずに内部構造を改 善する
  6. 6. リファクタリングの方法 1. メソッドの抽出 2.メソッドの移動 3.オブジェクトによるデータ値の置き換え 4.条件記述の分解 5.メソッド名の変更 等々... 「リファクタリング カタログ」 でググってみてください
  7. 7. 概要 1. リファクタリング? 2. リファクタリング手順 3. 「コードの匂い」 4. テスト
  8. 8. リファクタリングの手順 1. リファクタリングすべきか判断する。 2. テストがあるか?なければ書く。 3. リファクタリングする 4. テストする 5. 1に戻る 「5. 1に戻る」、重要!
  9. 9. 概要 1. リファクタリング? 2. リファクタリング手順 3. 「コードの匂い」 4. テスト
  10. 10. コードの匂い リファクタリングすべきコードは 「匂う」
  11. 11. 不吉な匂い 1.重複したコード 2.長すぎるメソッド 3.巨大なクラス 4.多すぎる引数 5.変更の発散 6.変更の分散 7.属性、操作の横恋慕 8.データの群れ 9.基本データ型への執着 10.スイッチ文 11.パラレル継承 12.怠け者クラス 13.疑わしき一般化 14.一時的属性 15.メッセージの連鎖 16.仲介人 17.不適切な関係 18.クラスのインタフェース不一致 19.未熟なクラスライブラリ 20.データクラス 21.相続拒否 22.コメント
  12. 12. 分類してみました 1.激臭系 2.蓋を開けたら臭う系 3.メンドクサイ系 4.加齢臭系 5.生臭い系 6.汗臭い系 7.ウソ臭い系
  13. 13. ひとつだけ紹介 1.激臭系 • 長すぎるメソッド •巨大なクラス •多すぎる引数 •スイッチ文
  14. 14. 今回 「長すぎるメソッド」 を 「メソッドの抽出」 でリファクタリング!
  15. 15. 概要 1. リファクタリング? 2. リファクタリング手順 3. 「コードの匂い」 4. テスト
  16. 16. テスト • PHPUnit • モック
  17. 17. ワークショップ
  18. 18. アップロード が臭う!
  19. 19. 本日のメニュー 1. 事前準備 •ブランチ整備 •composer設定 •phpUnitインストール •テストDBの作成 2. Lesson1 PHPUnitの設定と簡単なテスト作成 3. Lesson2 アップロード機能のテスト 4. Lesson3 アップロード機能のリファクタリング
  20. 20. 事前準備 • gitのブランチを整える • 前回、前々回不参加の方は テーブル追加、列追加する
  21. 21. gitのブランチを整える ■masterブランチを前回の内容 を終えた状態にする ■masterブランチを元に、今回 の作業用である、 「vol/10」ブランチを作成する
  22. 22. 人によって手順が違い ます!(重要) ■前回の内容を途中までやった方 ■前回の内容を完了した方 ■今回から参加の方 gitのブランチを整える
  23. 23. http:// goo.gl/WEHXqX ジーオーオー.ジーエル/ ダブリューイーエイチエックスキューエックス ここに詳しく 書いております!
  24. 24. 今回のマニュアルにリンクがあります。 ※後ほど説明 第5回と第6回に不参加の方は テーブル追加、列追加をする
  25. 25. •composer設定 •phpUnitインストール •テストDBの作成 Qiitaの投稿で詳しく!
  26. 26. 各Lessonについては Qiitaの投稿で詳しく!
  27. 27. PHPUnit テスト失敗時(赤)
  28. 28. PHPUnit テスト成功時(緑)
  29. 29. RED GREEN Refactor のリズム
  30. 30. public function upload() { $files = $this->getUploadFileParams(); $owner = $this->Auth->user()['id']; $numTodos = 0; $errors = array (); foreach ( $files as $file ) { $fileName = $file['name']; $filePath = $file['tmp_name']; $todos = file($filePath, FILE_IGNORE_NEW_LINES ¦ FILE_SKIP_EMPTY_LINES); $assignee = $owner; $lineNo = 1; foreach ( $todos as $todo ) { $data = array (); $data['todo'] = $todo; $data['status'] = 0; $data['owner'] = $owner; $data['assignee'] = $assignee; $res = $this->TodoList->save($data); 修正前のupload関数 以下略
  31. 31. クライアントがアップロードを実行した際のPOST データを取得する getUploadFileParams ログイン中ユーザのIDを取得する getLoginUserId アップロードされたファイル群を読み込んでTODO としてDBに登録する registerFilesAsTodos アップロードされたファイルを1つを読み込んで配 列に格納する readUploadTodoFile 配列に格納されたTODOをひとつずつDBに登録す る registerTodos バリデーションエラーがあった場合、内容を整形す る formatValidationErrorMessage アップロード処理結果のメッセージをクライアント 向けに整形する editUploadResponse メソッドの抽出
  32. 32. マニュアル(Qiita) http:// goo.gl/yWZD5I ジーオーオー.ジーエル/ ワイダブリューゼットディー5アイ はじめましょう!
  33. 33. リファクタリングの方法 1. メソッドの抽出 2. メソッドの移動 3. オブジェクトによるデータ値の置き換え 4. 条件記述の分解 5. メソッド名の変更 等々... 「リファクタリング カタログ」 でググってみてください おさらい
  34. 34. 不吉な匂い 1.重複したコード 2.長すぎるメソッド 3.巨大なクラス 4.多すぎる引数 5.変更の発散 6.変更の分散 7.属性、操作の横恋慕 8.データの群れ 9.基本データ型への執着 10.スイッチ文 11.パラレル継承 12.怠け者クラス 13.疑わしき一般化 14.一時的属性 15.メッセージの連鎖 16.仲介人 17.不適切な関係 18.クラスのインタフェース不一致 19.未熟なクラスライブラリ 20.データクラス 21.相続拒否 22.コメント おさらい
  35. 35. 分類してみました 1.激臭系 2.蓋を開けたら臭う系 3.メンドクサイ系 4.加齢臭系 5.生臭い系 6.汗臭い系 7.ウソ臭い系 おさらい
  36. 36. ダウンロードも ちょっと臭くないか? 🍻飲みDev🍕 テーマ

×