Day 4・関数と部品化
なぜ部品化するのか
コードを小さな部品に分ける理由は3つ。重複を消す・名前で意図を伝える・テストしやすくする。
大きな1枚岩より、小さな部品の集まり
料理の全工程を1本の長い手順書にベタ書きすると、読むのも直すのも大変です。でも「だしを取る」「野菜を切る」といった作業ごとに小さなカードに分けておけば、必要なカードだけ差し替えたり使い回したりできます。これが部品化(モジュール化)の発想です。
たとえるなら
部品化はレゴブロックです。1つの巨大な塊で作った家は、形を変えるとき全部壊すしかない。でも小さなブロックの組み合わせなら、屋根だけ・壁だけを付け替えられます。プログラムも同じで、小さな [[functioclienrequest の集まりにしておくと直しやすくなります。
部品化する3つの理由
- 重複をなくす: 同じ処理を1か所にまとめれば、直すときも1か所で済む
- 名前で意図を伝える: 『税込み価格を計算する』という名前があれば、中を読まなくても役割が分かる
- テストしやすい: 小さな部品なら『これは正しく動く?』を1つずつ確かめられる
なぜ重複が敵なのか
同じコードが3か所にコピペされていると、仕様変更のとき3か所すべてを直す必要があります。1か所直し忘れるだけでバグ([[debu用語]の対象)になります。部品にまとめておけば、直す場所は常に1つです。
巨大な1つの関数
何でも詰め込むと、どこで何をしているか読めない
処理する():
...100行の計算とか表示とか保存とか全部...役割ごとに分けた関数
名前を読むだけで流れが分かる
税込み価格を計算する(...)
合計を表示する(...)
注文を保存する(...)良い関数名は「動詞 + 目的語」で、何をするかがひと目で分かるものです。名前は未来の自分と仲間への手紙。名前だけで意図が伝われば、中身を読む回数がぐっと減ります。
AIにはこう頼む
「この長い処理を、役割ごとに小さな関数に分けて。それぞれ何をする関数か分かる名前をつけて」。分割の観点を指定すると、読みやすい部品に整理してくれます。
分けすぎにも注意
細かく分けるのは良いことですが、1行ごとに関数を作ると逆に追いかけにくくなります。『1つの関数は1つの仕事』を目安に、意味のあるまとまりで分けましょう。迷ったらAIに『これは分けすぎ?ちょうどいい?』と聞いてみるのも手です。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
同じ処理を3か所にコピペしていることの問題点として、最も正しいのはどれ?
コードを小さな部品(関数)に分けると、どんな良いことがあるか説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。