Upload
ksimoji
View
554
Download
0
Embed Size (px)
Citation preview
リファクタリングの方法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. 事前準備
•ブランチ整備 •composer設定 •phpUnitインストール •テストDBの作成
2. Lesson1 PHPUnitの設定と簡単なテスト作成 3. Lesson2 アップロード機能のテスト 4. Lesson3 アップロード機能のリファクタリング
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
メソッドの抽出
リファクタリングの方法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.コメント
おさらい