NEWS / BLOG
2022.11.04
社内勉強会の紹介:コーディング勉強会(1)
#テックネタ #プログラマー

こんにちは。プログラマーのTです。
株式会社ジーンでは、社内でいろいろな勉強会が行われています。昨今は、新型コロナウィルスの影響もあり、ほとんどはWeb会議の形式で行われています。(オンラインの方が開催も参加も手軽でいいですね!)

プログラマー勉強会で行われた内容の一部を、今後何度かにわたって紹介していこうと思います。当社がどんなことをしているのか、お伝え出来たらと思っています。


今回の勉強会
今回の勉強会は、プログラムのことを考え直す、ということで、コーディング・テストに関して全2回で行いました。
勉強会のスライドは次のような感じです。1回30ページほどのスライドで、1時間弱ほどの発表を行いました。
img_20221104_01.png
さて、その勉強会の1回目の中から、プログラムの「見やすさ」についての内容を簡単に解説していこうと思います。

よろしくお願いします。


コードの見やすさ
「見やすい」プログラムを書きましょう、というのはよく言われることです。では、プログラムの「見やすさ」、というのは、いったいどういうことでしょうか。
次のコードを見てください。
img_20221104_02.png
例(1)と例(2)は同じプログラムです。明らかに例(1)のほうが見やすいですが、動作は全く変わりません。

当たり前なのですが、プログラムの見やすさの対象は人です。
このプログラムを書いた後、コードを読むことになる人、例えば、共同で開発する人、デバッグするときにコードを確認する人、未来の自分などをさします。
また、コードはコンピュータに動作を指示するためのものでもあります。しかし、コードは最終的に機械語になるため、コードの書式がどうなっていても、コンピュータには関係がありません。コードの動作はコンピュータのため、書式は人が理解しやすくするためにあるわけです。

コードにおける書式は、以下のようなものがあります。
• 空白・インデント・タブ・改行
• 名前(命名)
• コメント

画面の制約
人が見るコードは、ディスプレイやウィンドウ、ファイルといった枠で区切られており、同時に見える範囲はとても狭いものです。ですので、次のようなプログラムはコーディングスタイルや言語にかかわらず、見やすさを減らしてしまします。

例)ブロックが大きすぎる
img_20221104_03.png
ifやswitchなどの制御文のブロックが、画面内におさまらないほど大きいプログラムは、見やすさに問題があります。このようなプログラムでは、elseでの処理内容が正しいのかどうかを把握するのに、if文との対応をスクロールして確認する必要があるなど、確認の手間が多くなります。
また、for, while文も同様で、continue や break など、制御を行うものが画面外にでてしまうほどブロックが大きい場合、ループ全体の動作を把握するのが難しくなります。
ネストの深さがそのまま見やすさを損なうわけではありませんが、ブロックが長くなることで構造が把握しにくくなります。

関係性のつかみやすさ
人がコードを読むとき、関係のないコードが連続すると、頭の中の整理が難しくなります。例えば、変数の宣言と使用箇所がコード内で分断されていると、どこで、何の型で宣言されたのか、今入っている値は何かなどを把握するのに、手間がかかることになります。

例) ローカル変数の宣言や代入が、使用場所から遠くにある
img_20221104_04.png
また、ローカル変数を使いまわすような実装を行ってしまうと、すべての代入箇所を確認しなければ、今どんな値が入っているかがわからなくなってしまいます。そのようなプログラムは避けたほうが良いでしょう。

これらの問題の対策
これらの対策として、まず、関係のあるものを近くします。変数も使用する直前に宣言し、スコープができるだけ短くなるようにします。それから、まとまった内容を必要に応じて関数として切り出します。
img_20221104_05.png
このような操作を行うことで、関数やブロックなどの処理単位が、極端に大きくなることなく、見やすいプログラムを書くことができます。常に関係のある単位を意識してコーディングを行うと、プログラミングの上達につながります。

おわりに
さてここまで、プログラムの見やすさについて、主にブロックのサイズや構造などについて見てきました。リストに挙げて今回触れなかった命名等については、次回以降に触れていこうと思います。

以上で今回の解説は終わりです。
ありがとうございました。