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
Takhisa Hirokawa
PDF, PPTX
394 views
レビューで保守性のためにした コメントをふりかえってみた
2021年12月1日ラクス様主催のコードレビュー LT会でLTしたときの資料です。
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 18
2
/ 18
3
/ 18
4
/ 18
5
/ 18
6
/ 18
7
/ 18
8
/ 18
9
/ 18
10
/ 18
11
/ 18
12
/ 18
13
/ 18
14
/ 18
15
/ 18
16
/ 18
17
/ 18
18
/ 18
More Related Content
PDF
PHPerのためのpostgresqlチューニングmini
by
Takhisa Hirokawa
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
JavaのテストGroovyでいいのではないかという話
by
disc99_
PDF
Groovy Bootcamp 2015 by JGGUG
by
Uehara Junji
PDF
Tddのすゝめ
by
将 高野
PDF
Kink: プロトタイプベースの俺々 JVM 言語
by
Taku Miyakawa
PPTX
開発現場で使えるかもしれないGroovy
by
zgmf_mbfp03
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
by
Y Watanabe
PHPerのためのpostgresqlチューニングmini
by
Takhisa Hirokawa
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
JavaのテストGroovyでいいのではないかという話
by
disc99_
Groovy Bootcamp 2015 by JGGUG
by
Uehara Junji
Tddのすゝめ
by
将 高野
Kink: プロトタイプベースの俺々 JVM 言語
by
Taku Miyakawa
開発現場で使えるかもしれないGroovy
by
zgmf_mbfp03
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
by
Y Watanabe
What's hot
PDF
ECMAScript没proposal追悼式
by
京大 マイコンクラブ
PDF
TDD のこころ @ OSH2014
by
Takuto Wada
PDF
Jvm言語とJava、切っても切れないその関係
by
yy yank
PDF
ペアプログラミング ホントのところ
by
Takuto Wada
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
by
Yasuharu Nakano
PDF
Riverpodでテストを書こう
by
Shinnosuke Tokuda
PDF
簡単!Groovy入門
by
Lee Choong Geun
PDF
Java SE 9の紹介: モジュール・システムを中心に
by
Taku Miyakawa
PDF
hooks riverpod + state notifier + freezed でのドメイン駆動設計
by
Shinnosuke Tokuda
PDF
Java one 2013 sf 報告会lt
by
torutk
PPTX
C#で速度を極めるいろは
by
Core Concept Technologies
PDF
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
by
Kei Sawada
PDF
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
by
Yuuki Takezawa
PDF
Node塾 講義その6 テスト駆動java script 読書会 1回目
by
Nomo Kiyoshi
PDF
Groovy Shell Scripting 2015
by
Uehara Junji
PDF
Laravelのパッケージのテストに便利なパッケージ
by
Yuta Nagamiya
PDF
Introduce Groovy 2.3 trait
by
Uehara Junji
PDF
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
by
kyon mm
PDF
The History of Groovy #GroovyBase
by
kyon mm
PDF
技術書へのいざない
by
Go Sueyoshi (a.k.a sue445)
ECMAScript没proposal追悼式
by
京大 マイコンクラブ
TDD のこころ @ OSH2014
by
Takuto Wada
Jvm言語とJava、切っても切れないその関係
by
yy yank
ペアプログラミング ホントのところ
by
Takuto Wada
Java開発の強力な相棒として今すぐ使えるGroovy
by
Yasuharu Nakano
Riverpodでテストを書こう
by
Shinnosuke Tokuda
簡単!Groovy入門
by
Lee Choong Geun
Java SE 9の紹介: モジュール・システムを中心に
by
Taku Miyakawa
hooks riverpod + state notifier + freezed でのドメイン駆動設計
by
Shinnosuke Tokuda
Java one 2013 sf 報告会lt
by
torutk
C#で速度を極めるいろは
by
Core Concept Technologies
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
by
Kei Sawada
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
by
Yuuki Takezawa
Node塾 講義その6 テスト駆動java script 読書会 1回目
by
Nomo Kiyoshi
Groovy Shell Scripting 2015
by
Uehara Junji
Laravelのパッケージのテストに便利なパッケージ
by
Yuta Nagamiya
Introduce Groovy 2.3 trait
by
Uehara Junji
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
by
kyon mm
The History of Groovy #GroovyBase
by
kyon mm
技術書へのいざない
by
Go Sueyoshi (a.k.a sue445)
Recently uploaded
PPTX
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
by
Yoshiki Shibukawa
PDF
20251122_OWASPNagoya_takei_ITU-T,X.1060,security
by
OWASP Nagoya
PDF
Gluesync:RDBMS、NoSQL,データレイク間のリアルタイム・データレプリケーション
by
株式会社クライム
PDF
最高峰のストレージとバックアップ:ARTESCA+Veeam:統合型ソフトウェア
by
株式会社クライム
PDF
N2WS Backup & Recovery と Veeam Backup for AWS
by
株式会社クライム
PDF
Veeam&WasabiでトリプルV: クラウドへのランサムウエア対策の決定コンビ
by
株式会社クライム
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
by
Yoshiki Shibukawa
20251122_OWASPNagoya_takei_ITU-T,X.1060,security
by
OWASP Nagoya
Gluesync:RDBMS、NoSQL,データレイク間のリアルタイム・データレプリケーション
by
株式会社クライム
最高峰のストレージとバックアップ:ARTESCA+Veeam:統合型ソフトウェア
by
株式会社クライム
N2WS Backup & Recovery と Veeam Backup for AWS
by
株式会社クライム
Veeam&WasabiでトリプルV: クラウドへのランサムウエア対策の決定コンビ
by
株式会社クライム
レビューで保守性のためにした コメントをふりかえってみた
1.
レビューで保守性のためにした コメントをふりかえってみた 2021/12/1 株式会社ラクスさま主催 エンジニアの勉強法ハックLT- vol.6 hiro(@etBeEP5e7dwmw7P)
2.
廣川 高久 hiro(@etBeEP5e7dwmw7P) 技術スタック Laravel,vue.js,postgresql 最近取り組んでいること ・月1回 LT発表 ・テストコード(コードカバレッジ、laravel
dusk導入) ・ノボロックウォーク21(ボルダリング) ・Go
3.
保守性とは? メンテナンスのしやすさ (英: Maintainability)
4.
保守性がないとどうなるの? どこになにが書いてあるのかわからない ☠ コードが古文書みたいで読むのに時間がか かる☠ 追加開発したらバグが発生した ☠ 後々コード見る開発者
(未来の自分)が地獄を見ます☠
5.
①名前が変数・処理の内容を表している ②FW・言語が提供する機能の使用 ③1つの処理でやってることがハッキリしている 保守性の高いコードの具体例
6.
ここからは Laravelのコードを例に、 具体例をいくつか紹介していきたいと思います!
7.
Point1. 名前が変数・処理の内容を表している ☠チェックした結果が int?
bool? 取得したデータ? function checkActivePost(int $product_id) { return Post::where('id', $product_id)->where(‘active’, true)->exists(); } function searchByUserId(int $user_id) { return Post::where('user_id', $user_id)->get(); } ☠戻り値が array? colletion?
8.
Point1. 名前が変数・処理の内容を表している ☠チェックした結果が int?
bool? 取得したデータ? function checkActivePost(int $product_id) { return Post::where('id', $product_id)->where(‘active’, true)->exists(); } function searchByUserId(int $user_id) { return Post::where('user_id', $user_id)->get(); } ☠戻り値が array? colletion?
9.
Point1. 名前と型・処理内容の一致 function searchByUserId(int
$user_id) { return Post::where('user_id', $user_id)->get(); } function getByUserId(int $product_id) { return Post::where('user_id', $user_id)->get(); } get()を使ったメソッドということがわかる!
10.
Point1. 名前と型・処理内容の一致 function checkActivePost(int
$product_id) { return Post::where('id', $product_id)->where(‘active’, true)->exists(); } function isActive(int $product_id) { return Product::where('id', $product_id)->where(‘active’, true)->exists(); } 結果がbool値であることが直感的にわかる
11.
Point2. FW・言語が提供する機能の使用 戻り値が array?
colletion(ラッパークラス)? わからない。。。 $review = Review::where($request->product_id) ->where($request->user_id) ->find(); if (is_null($review)) { Review::create($request->validated()); } else { $review::update($request->validated()); } ユーザーがある商品のレビューをしたことがあれば更新、なければ新規登録 意味はわかるが、処理が冗長
12.
Point2. FW・言語が提供する機能の使用 戻り値が array?
colletion(ラッパークラス)? わからない。。。 $review = Review::updateOrCreate( [ 'product_id', $request->product_id, 'user_id', $request->user_id ], [ 'title', $request->title, 'body', $request->body ] ); FWが提供するメソッドを使っているので、何をしているかが簡単にわかる
13.
Point3. 処理が分割されている public function
show(Request $request) { // 1.入力値のバリデーション $validator = Validator::make($request->all(), [ 'post_id' => 'required|integer|exists:posts.id|' ]); // 2.商品情報の取得 $post = Post::find($request->post_id); // 3.ユーザーのアクセス権限チェック if (! Gate::allows('show-post', $post)) { abort(403); } // 4.表示用に情報を整形 $post->stockStatus(); } いろいろな処理を1つのメソッドに集約している
14.
Point3. 処理内容がクラスの責務で分割されている public function
show(ShowRequest $request) { // 入力値のバリデーション・認証は ShowRequestで済 // 情報の整形はResourcesで行う return Post::find($request->post_id); } クラスごとで行う処理が明確になり、 機能を変更する時の見通しが立ちやすい!
16.
保守性に関する指摘は、 個人の好みが反映されやすいところもあります。 たがいを尊重するきもちも忘れずにレビューをしましょうね♪
17.
保守性に関する指摘は、 個人の好みが反映されやすいところもあります。 たがいを尊重するきもちも忘れずにレビューをしましょうね♪
18.
本日もありがとうございました 12/17(水)PHP8.1をもっと語り合うPHP TechCafe でお会いしましょう!
Download