SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
ガード節を使おう
脳に優しい!
/ 2401
こんなコード書いてませんか?
/ 2402
/ 24
このコードを見た人は
03
/ 2404
死にます
/ 2405
こちらのコードはどうでしょう?
/ 2406
/ 2407
脳に優しい!
/ 2408
分かりやすい
優れたコード
脳に優しい
ひと目で理解できるコードの方が優れている。
/ 2409
ガード節を使おう!
/ 2410
ガード節とは
• 対象外の処理を省くコードを、関数等の先頭に
まとめる方法。
• ネストが浅くなり、例外処理と通常処理が分離
されるので何をするコードか分かりやすい。
/ 2411
ガード節の方法
• if 文の条件式を反転し、処理を外に出すだけ!
return や continue / break 等で処理を止める。
• メソッド・関数やループの先頭に例外処理を
まとめる。
/ 24
実際にガード節にしてみよう!
12 / 24
/ 2413
修正前
修正後
/ 2414
修正前
修正後ネストが深い
横に長いので見にくい 脳が拒否反応を起こす
/ 2415
修正前
修正後例外処理と通常処理が混ざっている
知りたい情報が直ぐに見つからない
/ 2416
修正前
修正後
ネストが深い 例外処理と通常処理が混ざっている
コードを理解するのに時間がかかる
/ 2417
修正前
修正後
/ 2418
修正前
修正後
ネストが浅い
条件式が縦に並ぶので見やすい 脳に優しい!
/ 2419
修正前
修正後
例外処理と通常処理が分離されている
各処理が強調され、処理の場所が分かりやすい
/ 2420
修正前
修正後
ネストが浅い 例外処理と通常処理が分離されている
一瞬でコードが理解できる
/ 2421
/ 2422
/ 2423
注意点
• ガード節は「めったに起きないが、起きた時には、
何もしないで出ていく」ことを伝えます。
• if - then - else は「両方が等しく起こり得る、等しく
重要である」ことを伝えます。
リファクタリング―プログラムの体質改善テクニックより
/ 2424
まとめ

Mais conteúdo relacionado

Mais procurados

「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 

Mais procurados (20)

こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
CRDT in 15 minutes
CRDT in 15 minutesCRDT in 15 minutes
CRDT in 15 minutes
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
 
実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
 

ガード節を使おう