Soumettre la recherche
Mettre en ligne
レビューで保守性のためにした コメントをふりかえってみた
•
0 j'aime
•
385 vues
Takhisa Hirokawa
Suivre
2021年12月1日ラクス様主催のコードレビュー LT会でLTしたときの資料です。
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 18
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
PHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングmini
Takhisa Hirokawa
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
開発現場で使えるかもしれないGroovy
開発現場で使えるかもしれないGroovy
zgmf_mbfp03
Tddのすゝめ
Tddのすゝめ
将 高野
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
disc99_
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
Recommandé
PHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングmini
Takhisa Hirokawa
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
開発現場で使えるかもしれないGroovy
開発現場で使えるかもしれないGroovy
zgmf_mbfp03
Tddのすゝめ
Tddのすゝめ
将 高野
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
disc99_
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
Kei Sawada
技術書へのいざない
技術書へのいざない
Go Sueyoshi (a.k.a sue445)
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
yy yank
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
Uehara Junji
C#で速度を極めるいろは
C#で速度を極めるいろは
Core Concept Technologies
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
Yuta Nagamiya
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait
Uehara Junji
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
Riverpodでテストを書こう
Riverpodでテストを書こう
Shinnosuke Tokuda
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
Takuto Wada
ペアプログラミング ホントのところ
ペアプログラミング ホントのところ
Takuto Wada
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
Yuuki Takezawa
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
kyon mm
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目
Nomo Kiyoshi
The History of Groovy #GroovyBase
The History of Groovy #GroovyBase
kyon mm
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会lt
torutk
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
Shinnosuke Tokuda
簡単!Groovy入門
簡単!Groovy入門
Lee Choong Geun
Laravel shibuya 3 Laravel Beginner IRT
Laravel shibuya 3 Laravel Beginner IRT
Obata Masaki
プログラミング勉強会 その0
プログラミング勉強会 その0
Hirokazu Fukami
Contenu connexe
Tendances
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
Kei Sawada
技術書へのいざない
技術書へのいざない
Go Sueyoshi (a.k.a sue445)
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
yy yank
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
Uehara Junji
C#で速度を極めるいろは
C#で速度を極めるいろは
Core Concept Technologies
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
Yuta Nagamiya
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait
Uehara Junji
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
Riverpodでテストを書こう
Riverpodでテストを書こう
Shinnosuke Tokuda
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
Takuto Wada
ペアプログラミング ホントのところ
ペアプログラミング ホントのところ
Takuto Wada
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
Yuuki Takezawa
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
kyon mm
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目
Nomo Kiyoshi
The History of Groovy #GroovyBase
The History of Groovy #GroovyBase
kyon mm
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会lt
torutk
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
Shinnosuke Tokuda
簡単!Groovy入門
簡単!Groovy入門
Lee Choong Geun
Tendances
(20)
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
技術書へのいざない
技術書へのいざない
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
C#で速度を極めるいろは
C#で速度を極めるいろは
Laravelのパッケージのテストに便利なパッケージ
Laravelのパッケージのテストに便利なパッケージ
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Riverpodでテストを書こう
Riverpodでテストを書こう
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
ペアプログラミング ホントのところ
ペアプログラミング ホントのところ
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Node塾 講義その6 テスト駆動java script 読書会 1回目
Node塾 講義その6 テスト駆動java script 読書会 1回目
The History of Groovy #GroovyBase
The History of Groovy #GroovyBase
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会lt
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
簡単!Groovy入門
簡単!Groovy入門
Similaire à レビューで保守性のためにした コメントをふりかえってみた
Laravel shibuya 3 Laravel Beginner IRT
Laravel shibuya 3 Laravel Beginner IRT
Obata Masaki
プログラミング勉強会 その0
プログラミング勉強会 その0
Hirokazu Fukami
Inside frogc in Dart
Inside frogc in Dart
Goro Fuji
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Yuuki Takezawa
20120706-readablecode
20120706-readablecode
Masanori Kado
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
taskie
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
Yuta Ohashi
Scala Daysに行ってみて
Scala Daysに行ってみて
Kota Mizushima
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes
Masayuki KaToH
minneで学ぶクラウド脳
minneで学ぶクラウド脳
Uchio Kondo
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
nomlab
Docker friendlyPHP / Laravel
Docker friendlyPHP / Laravel
Kentarou Takeda
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
Hiro Yoshioka
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
RFC: "var" Deprecation
RFC: "var" Deprecation
y-uti
フロントエンド開発入門(React).pdf
フロントエンド開発入門(React).pdf
KSato2
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
Similaire à レビューで保守性のためにした コメントをふりかえってみた
(20)
Laravel shibuya 3 Laravel Beginner IRT
Laravel shibuya 3 Laravel Beginner IRT
プログラミング勉強会 その0
プログラミング勉強会 その0
Inside frogc in Dart
Inside frogc in Dart
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )
20120706-readablecode
20120706-readablecode
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
Scala Daysに行ってみて
Scala Daysに行ってみて
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes
minneで学ぶクラウド脳
minneで学ぶクラウド脳
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
Docker friendlyPHP / Laravel
Docker friendlyPHP / Laravel
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
Programming camp 2008, Codereading
Programming camp 2008, Codereading
RFC: "var" Deprecation
RFC: "var" Deprecation
フロントエンド開発入門(React).pdf
フロントエンド開発入門(React).pdf
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
今日から始めるLaravel
今日から始めるLaravel
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
レビューで保守性のためにした コメントをふりかえってみた
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); } クラスごとで行う処理が明確になり、 機能を変更する時の見通しが立ちやすい!
15.
16.
保守性に関する指摘は、 個人の好みが反映されやすいところもあります。 たがいを尊重するきもちも忘れずにレビューをしましょうね♪
17.
保守性に関する指摘は、 個人の好みが反映されやすいところもあります。 たがいを尊重するきもちも忘れずにレビューをしましょうね♪
18.
本日もありがとうございました 12/17(水)PHP8.1をもっと語り合うPHP TechCafe でお会いしましょう!
Télécharger maintenant