36
リファクタリング サーバ編 AWS上で構築するRESTfulアプリ勉強会 ~Web開発ワークショップ~【第10回】

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

  • Upload
    ksimoji

  • View
    554

  • Download
    0

Embed Size (px)

Citation preview

リファクタリング サーバ編

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.怠け者クラス 13.疑わしき一般化 14.一時的属性 15.メッセージの連鎖 16.仲介人 17.不適切な関係 18.クラスのインタフェース不一致 19.未熟なクラスライブラリ 20.データクラス 21.相続拒否 22.コメント

分類してみました1.激臭系 2.蓋を開けたら臭う系 3.メンドクサイ系 4.加齢臭系 5.生臭い系 6.汗臭い系 7.ウソ臭い系

ひとつだけ紹介1.激臭系

• 長すぎるメソッド •巨大なクラス •多すぎる引数 •スイッチ文

今回

「長すぎるメソッド」を

「メソッドの抽出」でリファクタリング!

概要1. リファクタリング? 2. リファクタリング手順 3. 「コードの匂い」 4. テスト

テスト

•PHPUnit •モック

ワークショップ

アップロード が臭う!

本日のメニュー1. 事前準備

•ブランチ整備 •composer設定 •phpUnitインストール •テストDBの作成

2. Lesson1 PHPUnitの設定と簡単なテスト作成 3. Lesson2 アップロード機能のテスト 4. Lesson3 アップロード機能のリファクタリング

事前準備• 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; $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関数

以下略

クライアントがアップロードを実行した際のPOSTデータを取得する

getUploadFileParams

ログイン中ユーザのIDを取得する getLoginUserId

アップロードされたファイル群を読み込んでTODOとしてDBに登録する

registerFilesAsTodos

アップロードされたファイルを1つを読み込んで配列に格納する

readUploadTodoFile

配列に格納されたTODOをひとつずつDBに登録する

registerTodos

バリデーションエラーがあった場合、内容を整形する

formatValidationErrorMessage

アップロード処理結果のメッセージをクライアント向けに整形する

editUploadResponse

メソッドの抽出

マニュアル(Qiita)

http:// goo.gl/yWZD5Iジーオーオー.ジーエル/ ワイダブリューゼットディー5アイ

はじめましょう!

リファクタリングの方法1. メソッドの抽出 2. メソッドの移動 3. オブジェクトによるデータ値の置き換え 4. 条件記述の分解 5. メソッド名の変更

等々...

「リファクタリング カタログ」 でググってみてください

おさらい

不吉な匂い1.重複したコード 2.長すぎるメソッド 3.巨大なクラス 4.多すぎる引数 5.変更の発散 6.変更の分散 7.属性、操作の横恋慕 8.データの群れ 9.基本データ型への執着 10.スイッチ文 11.パラレル継承

12.怠け者クラス 13.疑わしき一般化 14.一時的属性 15.メッセージの連鎖 16.仲介人 17.不適切な関係 18.クラスのインタフェース不一致 19.未熟なクラスライブラリ 20.データクラス 21.相続拒否 22.コメント

おさらい

分類してみました1.激臭系 2.蓋を開けたら臭う系 3.メンドクサイ系 4.加齢臭系 5.生臭い系 6.汗臭い系 7.ウソ臭い系

おさらい

ダウンロードも ちょっと臭くないか?

🍻飲みDev🍕 テーマ