Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

一筆書きのコードに対するコメント #20

Closed
shimamorieiki opened this issue Aug 19, 2021 · 0 comments
Closed

一筆書きのコードに対するコメント #20

shimamorieiki opened this issue Aug 19, 2021 · 0 comments

Comments

@shimamorieiki
Copy link
Owner

一筆書きのコード について

過去に携わった案件のローカルな表現なので、一般的ではないはず。意味合いは、一つの関数に必要な処理が詰め込まれている状態で、関数やクラスを使って処理を分割していない状態を指します。作り始めた頃は行数が少ないので問題がないのですが、繰り返し仕様追加が行われると、 分岐と繰り返しが複雑に絡み合って修正が困難になります。

複雑度を表す 循環的複雑度 という考え方があるので、参考にしてください。

LotteryControllerにある関数の複雑度を下げるための着目点は下の3点です。

ソースコードにある空行の後にあるインラインコメント
早期リターン
「DBやパラメターからの入力」 、 「加工と処理」 、 「レスポンスやDBへの出力」 の3段階に分離する
1つ目は、処理の塊の境目は空行で区切られているので、区切りごとに処理を分けられます。DBの検索ならモデルのクラスに検索処理を実装します。レスポンスなら レスポンスマクロ が使えます。

2つ目は、途中で処理を継続できないと判断した時点で 処理を終わらせます。具体的には
https://github.com/shimamorieiki/remoteMaster/blob/feature/user/app/Http/Controllers/LotteryController.php#L39

if ($min_number == PHP_INT_MAX) {
で return response()->json( ... レスポンスを返します。また、returnするので、 このif文から else を削除することで「該当者がある場合」ということを意識してコードを読む必要がないので、読む人が楽になります。

3つ目は、処理の再利用性や共通化を意識すると、自ずと別れていくと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant