readable codecapter7

12
制御フローを読みやすく するために リーダブルコード 第7章読書メモ 同期との勉強会用

Upload: curemlky

Post on 17-Feb-2017

25 views

Category:

Science


1 download

TRANSCRIPT

Page 1: Readable codecapter7

制御フローを読みやすくするために

リーダブルコード 第7章読書メモ 同期との勉強会用

Page 2: Readable codecapter7

制御フローとは通常ソースコードは上から下へ読まれていくもの

ただし、ifやswitchなどの条件分岐や、forやforeach, whileなどのループがあると処理の一部が飛ばされたり、一定の間ループしたりと流れが少し変わる

少しならいい。ただ、それが多用されると時に大変読みにくいコードになってしまう

Page 3: Readable codecapter7
Page 4: Readable codecapter7

ね、こういうの嫌でしょ

Page 5: Readable codecapter7

制御フローを書く上で気をつけられること

❶条件式の並び順に気を使う(引数、ブロック)

❷三項演算子を使う時に考えること

❸do/whileはできるだけ避ける

❹条件に該当しないものは、早く返す

❺ネストを浅くするやり方

Page 6: Readable codecapter7

❶条件式の並び順に気を使う

引数の並び順

右:調査対象 左:比較対象

なぜなら、英語は重要なものが先にくるから例) you are older than your sister.

Page 7: Readable codecapter7

❷条件式の並び順に気を使うとりわけif/elseブロックの並び順について

基本的に、条件は否定よりも肯定を使う

単純な条件を先に書く(elseの存在がわかりやすくなる)

関心を引く条件、目立つ条件を先に書く

とはいえcase by case

Page 8: Readable codecapter7

❸三項演算子を使う時に考えられること

三項演算子条件 ? true : false ;

if文が一行に収まる。が、分かりにくい

三項演算子は、それによって簡潔になる時だけ使うように

行数を短くすることよりも、他人が理解し易い方が大事!

Page 9: Readable codecapter7

do/whileはできるだけ避けるdo {式} while (条件) ループ

再実行するための条件が下にあるため、コードを2回読む手間

だいたいwhileループで普通に書けるから、わざわざdo while 使う必要ない

doの中にcontinueがあると余計に紛らわしくなる!

ソースはリーダブルコードp90,91を参照

Page 10: Readable codecapter7

該当しないものは早く返す

単純な処理はコードの上部で早めにreturnしてあげる。

「ガード節」を使っていきましょう

Page 11: Readable codecapter7

ネストを浅くするやり方

ネストが増える仕組み (p94参照)

for()の時はcontinueする

Page 12: Readable codecapter7

ネストしているとコードを追うのに集中力が必要になってくる。

そうなると「で、結局この処理何がしたいんだっけ」と高レベルの流れを見失ってしまう

実行の流れを追えるような書き方をしましょう