【プログラミング勉強法】他人のプログラムの読み方のコツ!

プログラミング

こんにちは!zhackです。

プログラミングを始めてから現在で9年目に突入しました。

過去を振り返ったときに、一番勉強になったなぁと思うのは、学生時代に先輩の書いたプログラムを引き継いだときでした。

それまで他人のプログラムを読むということをあまりしていなかったため、理解するのに非常に苦労した思い出があります 笑

しかし、一方でこのときに学んだプログラムの読み方は、実装する際にも役に立つと感じています。

そこでどのように読めば身につくのか、個人的な経験も踏まえてまとめみようと思います。

読み方の手順

私が他人の書いたプログラムを読む時にしていることは、以下の4つです。

  1. InputとOutput、プログラムで最初に実行される箇所を確認
  2. InputからOutputまでの処理の流れを考える/聞く
  3. 処理の流れをブロックごとにわける
  4. 分けたブロックごとに、プログラムのどの部分に該当するのかを探す

基本的に、この流れで私は他人のプログラムを理解しています。

では、書く手順について、詳細に説明していきます。

InputとOutput、 プログラムで最初に実行される箇所を確認

これは、プログラムを理解する上でまず最初にやるべきことだと思います。

プログラムを読む際、全体の流れをくみ取ることが重要です。

そのきっかけとなる、最初の一歩がどこなのか、まずはそれを判断しましょう。

これをやることで、どこから読めば良いのか、どこから入力データの変化を追えば良いのかがわかります。

ただ、プログラムにはいろんなプログラムがあります。
main関数から順に実行されていくプログラムと、イベント駆動型のプログラムです。

一部例外はありますが、C言語やpython等はmain関数から順に実行されていくプログラムになります。

また、ブラウザ上で動くJavaScriptは
「ボタンが押されたら関数を実行」
「ページが読み込まれた関数を実行」
というように、何かイベントが起きた際に動きます。
これはイベント駆動型にあたります。

実際にプログラムを読む際は、そのプログラムがどちらにあたるのか、意識したうえで、プログラムの起点がどこになるか判断したほうが良いでしょう。

InputからOutputまでの処理の流れを考える/聞く

これは、簡単に言うと予習をするという意味です。

自分の現在もつ知識の中でどのような処理を行えば、InputからOutputまでの処理が実現できるか考えましょう。

そして、一通り考えた後、可能であれば、開発者からどのような処理を行なっているのか処理の概要を聞きましょう。

概要を聞くことは必須ではありませんが、他人の開発物を引き継ぐ際は何かしら説明をしていただける機会はあると思うので、その時にメモ等をとって後で見返すことのできるようにしておくと良いと思います。

処理の流れをブロックごとにわける

ここでは、先ほどの手順で考えた概要について、ブロック分けを行いましょう。

実際に自分がプログラムを書く場合、こういう風にブロックをわけ、ステップを踏んで処理を進めるなぁということを考えます。

その粒度は人それぞれだと思います。

カレーを作るレシピについて、
「野菜を切って、煮て、ルーを入れて完成」
と考える人もいれば

「じゃがいもは皮を剥いて芽を取る。人参は、、、」
というように細かく考える人もいるでしょう。

プログラムについても同様で、どのような粒度で分けるかは人それぞれです。

プログラムをただ理解することが目的であれば、粗く分けても良いでしょう。

ここで重要なことは、最初から正解する必要はないということです。

とにかく考えることが重要なので、間違えていてもよいので考えましょう。

分けたブロックごとに、プログラムのどの部分に該当するのかを探す

ここで、先ほどの手順で分けたブロックが、プログラムではどこに当てはまるのか照らし合わせていきます。

重要なことは、プログラムを読み込むのではなく、照らし合わせるということです。

プログラムを理解するにあたって、重要なことは、「どこでどのような目的の処理が行われているか」です。

深く読み込むのは全体をざっくりと理解した後にしましょう。
理解がしやすくなります。

メリットとデメリット

この読み方によるメリットとデメリットを考えてみました。

[メリット]
・全体のプログラムの理解が容易にできる。
・処理を分割する力がつく。また他者の分割の観点も身につく。
・プログラムを実際に書くときに、どのように書くと可読性が高くなるかわかる。

[デメリット]
・全体の理解で満足してしまい、詳細な箇所を見落としやすい
・全体を読んだ後に、各処理を詳細に読む流れになるため、読み返しが必要

デメリットについて意識しながら、詳細な箇所を見落とさないように読み進めることで、
効率的にプログラムが読めると思います。

さいごに

今回の記事の読み方は9年目に突入した今でも実践している読み方になります。

9年目に入っていても、いまだに「そんな実装方法があったのか!」と勉強になることも多いです。

練習問題として、私の記事の中にもプログラムを掲載している記事もございますので、よければ試してみてください。

【画像処理】Go言語で二値化処理!【サンプルプログラムあり】
こんにちは!zhackです。 先日、以下の画像処理に関する記事を掲載いたしました。 今回は、それを実際にプログラムで再現してみました。 利用したプログラム言語は、現在勉強中のGo言語です! 画像処理業界ではおなじ...

皆さんも、ぜひ試してみてください。

ではでは!

コメント

タイトルとURLをコピーしました