はじめに
・処理の流れは追えるのに、途中で止まってしまう人へ
コードを追っていて、
👉 処理の流れはなんとなく分かる
でも、
👉 この中で何をしているのか分からない
こんな状態になったことはありませんか?
例えば、
var result = service.Execute(data);
👉 「何か処理してるのは分かる」
でも
👉 Executeの中で何をしているのか分からない
👉 だから手が止まる
※この記事でいう「メソッド」は、処理のまとまり(関数や処理単位)のことを指しています
よくある状態
こういうとき、多くの人はこうなります。
・とりあえず中身を開く
・さらに別のメソッドに飛ぶ
・また別のクラスへ
👉 気づいたら
👉 何を理解しようとしていたのか分からなくなる
👉 これも一種の“迷子”です
なぜ分からなくなるのか
原因はシンプルです。
👉 処理だけを見ているから
多くの人は、
👉 「このメソッドは何をしているのか?」
と考えます
👉 でもこれだけでは分かりません
「要件や設計が分からないから?」と思う人へ
ここで、こう思った方もいるかもしれません
--
👉 「要件が分かってないからでは?」
👉 「設計を理解していないからでは?」
これは、
👉 半分正しくて、半分違います
コードが理解できない原因は、大きく3つあります
・要件が分かっていない(なぜその処理をするのか)
・データが分かっていない(何がどう変わるのか)
・設計が分かっていない(どこで何をしているのか)
このうち、
要件や設計は確かに重要ですが、
👉 ドキュメントや経験に依存することが多く、
すぐに理解できるものではありません
一方で、
👉 データの動きはコードから追うことができます
つまり、
👉 「意味が分からない」と感じたときにまずやるべきことは
👉 データを見ることです
飛べば分かるのでは?
ここでこう思うかもしれません
👉 「メソッドの中に飛べば分かるのでは?」
確かに、
👉 処理の流れは分かるようになります
でも、
👉 それだけでは意味は分かりません
具体例(ここがポイント)
例えば、
var rate = GetRate(user);
👉 「何か計算しているのは分かる」
中を見ると、
return user.Level == 3 ? 0.8 : 1.0;
👉 コードは読めます
でも、
・Level=3って何?
・なぜ0.8になる?
👉 意味は分かりません
では、どうすればいいか?
👉 見るべきは「処理」ではなく「データ」です
例えば、
・user.Level はいくつなのか?
・Level=3 はどういう状態なのか?
・rate は最終的にいくつになるのか?
👉 つまり
👉 どんな値が入ってきて、どう変わるのかを見る
これを整理すると、
👉 見るべきポイントは3つです
👉 入力 → 変化 → 出力
シンプルな例で確認
public int Calculate(int price)
{
return price * 1.1;
}
👉 入力:price
👉 変化:1.1倍
👉 出力:結果
👉 この見方で、すべてのコードは理解できます
なぜこれで分かるのか
👉 コードはすべて
👉 データを加工しているだけ
👉 だから
👉 データを見れば意味が分かる
よくある詰まりポイント
■ 抽象化された処理
service.Execute(data);
👉 中身が隠れている
■ 条件分岐
if (CheckCondition(user))
👉 判断基準が分からない
■ 非同期処理
await repository.SaveAsync(entity);
👉 どこでどう処理されているか分からない
👉 これらすべて
👉 データを見ていないことが原因
解決方法
👉 これだけです
Step① 入力を見る
👉 何が渡ってきているか
Step② 変化を見る
👉 値がどう変わるか
Step③ 出力を見る
👉 何が返るか
👉 この3つで理解できます
まとめ
👉 メソッドの中身が分からない原因は
👉 処理だけ見ていること
👉 解決はこれ
👉 データを見る
✔ 1つだけ覚えるなら
👉 「入力 → 変化 → 出力」
おわりに
今回の内容は、
👉 「流れは追えるけど理解できない人」向けでした
もし、
・どこから見ればいいか分からない
・処理を追っていて迷子になる
・仕様書とコードが繋がらない
といった段階でつまずいている場合は、
👉 まずは以下の記事から読むと理解しやすくなります
■ シリーズ記事
新人・初級PGが最初につまずくポイント5選
なぜ仕様書とコードは繋がらないのか
仕様書は読めるのにコードにできない人へ
ソースは読めるのに処理が追えないのはなぜ?
どのソースを見ればいいか分からない人へ
■ 最後に
ここまで紹介した方法は、
👉 1回やれば終わりではありません
これを繰り返していくことで、
・フォルダ構成
・処理の配置
・データの流れ
👉 全体像が少しずつ見えてきます
そして、
👉 最初から目的の場所に辿り着けるようになります
最初は、
👉 「分かる場所から辿る」
👉 「データを見る」
これを繰り返すことが大切です
👉 この積み重ねが
👉 「なんとなく分かる」から
👉 「ちゃんと分かる」へ
変わっていきます