0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

処理は追えるのにメソッドの中身が分からない人へ | コード理解で詰まる原因と対策

0
Posted at

はじめに

・処理の流れは追えるのに、途中で止まってしまう人へ


コードを追っていて、

👉 処理の流れはなんとなく分かる


でも、

👉 この中で何をしているのか分からない


こんな状態になったことはありませんか?


例えば、

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回やれば終わりではありません


これを繰り返していくことで、

・フォルダ構成
・処理の配置
・データの流れ


👉 全体像が少しずつ見えてきます


そして、

👉 最初から目的の場所に辿り着けるようになります


最初は、

👉 「分かる場所から辿る」
👉 「データを見る」


これを繰り返すことが大切です


👉 この積み重ねが

👉 「なんとなく分かる」から
👉 「ちゃんと分かる」へ

変わっていきます

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?