プログラムを書くことに上達するために、プログラムを読むことは大切です。プログラムを読むことによって次のことを学ぶきっかけになるからです。
その言語におけるアルゴリズムや典型的な処理の記述方法
その言語でのライブラリやフレームワークの使い方
その言語での標準的な命名規約やコーディングルールなど
プログラムには二種類の読者がいます。コンピュータと人間です。
プログラミング言語の文法を学べば、原理的には動くプログラムを作ることはできます。これはコンピュータという読者が理解できるプログラムを書けるようになるという意味です。
でも文法を学ぶだけでは、人間という読者が理解できるプログラムを書くことは難しいでしょう。それは日本語のような自然言語の類推で「文法に合致しているけれど、普通はそんな言い方をしない」というケースを想像すればわかるでしょう。その言語を使って他の人たちがどのようにコミュニケートしているかに慣れないことには、スムーズに理解できるプログラムを書くことは難しいのです。
* * *
ただし、プログラムを読めばいいというものではありません。漫然と読むのではなく、しっかりと考えて読まなければ、プログラムの上達にはつながっていかないでしょう。具体的には、読みながら次のようなことを考えるのです。
プログラムのここの部分ではどんな処理をしているのだろうか。どのような書き方でその処理を実現しているだろうか。コーナーケースのチェックや、例外のチェックや、メモリの使い方や、スピードや、将来の拡張などに関してどのような配慮をして書かれているだろうか。自分だったらどう書くだろうか。
自力で実装している部分と、ライブラリを使っている部分をどのように使い分けているだろうか。使っているフレームワークに従った処理はどこの部分だろうか。フレームワークに依存しない部分はどこだろうか。自分だったらどう書くだろうか。
関数名、変数名、パッケージ名などの「名前」はどのように書いているだろうか。それはプログラムの理解しやすさにどのくらい貢献しているだろうか。大文字小文字の使い方、インデントの深さ、コメントの付け方などはどうだろうか。自分だったらどう書くだろうか。
プログラムを読むときに限らない話ですが「なぜ?」という問いを忘れないことは大切だと思います。プログラムを読んでいて、自分と異なる書き方をしている部分があったら「このように書いているのはなぜだろうか」のように理由を問うのです。
「どのようなプログラムを読めばいいか」については、自身の知識や技能に応じて変化してくると思います。たとえば、あるプログラミング言語を学び始めたばかりの人と、文法は一通り理解しているけれどまとまったプログラムを書いたことがない人と、小さなアプリは作ったことがあるけれど大規模なサービスを作ったことが無い人などでは、それぞれ読むべきプログラムは変わりそうです。
最低限の基準としては、
処理内容が理解できるもの
広く使われているもの
変な書き方をしていないもの
ということになると思いますが「変な書き方」に関しては判断が難しいかもしれません。
以上、思い付くまま書きました。何かの参考になればうれしいです。
* * *
関連するかもしれない読み物をリンクします。
◆プログラムの実装をスピードアップしたい
https://mm.hyuki.net/n/n616029b9d89a
◆プログラムのエラーを見つけるコツ