プログラミング教室ITWORKSのayakaです。
プログラムを組むこと自体は小学生くらいから行っていましたが、アプリケーションの精度を上げて製品レベルで書けるようになったのはつい最近であまりにも時間がかかりすぎました
これから開発を始める学生や初心者プログラマーに向けて、効率的なプログラミング学習方法をまとめたいと思います。また、これから学習する方々が「意図した動作ができた」にとどまらず、自作したアプリケーションの精度を上げるきっかけになればうれしいです。
一つのプログラミング言語を深く学習する
COBOLやC言語が出始めた頃と違い、現在はプログラミング言語が数多くあります。プログラミングを学習する上では専攻する言語をまず一つ決めてその言語による開発を繰り返すことが大切です。もちろんアプリケーションを作る上で複数の言語を使用することは多々ありますが、自分の基礎となる言語を決めてその言語を使った開発を数多く行うことをおすすめします。初めから様々な言語に触れて学習するのは各言語がもつ記述作法に振り回されがちです。
プログラミング言語は数多くありますが、元をただせばすべて同じ機械を動かすために作られたものです。一つのプログラミング言語を深く学習する事で各言語の記述作法に振り回されず他のプログラミング言語の取得も容易になります。
コメントを記述する
私もそうでしたがプログラミング初心者であればあるほどコメントを疎かにしがちです。"理解する"よりも"動作する"に重きを置いてしまうためです。しかし実際には"動作する"事は大して重要な事ではありません。なぜ動作したのか?自身が書いたプログラムが"最適解"なのかそれが説明できるかが大切です。
###一行一行コメントを記述する
こう書くと玄人さんにはコメントも精査しろと言われそうですが、初心者に限って、なぜこの場所にこの記述をしたのかについてコメントをなるべく詳細に書くべきです。曖昧な理由(なんとなくやネットの記事で書いてあったから等)で記述している箇所を発見し、見直すという事が必ず必要です。
public class HelloWorld {
public static void main(String[] args) {
//コンソールに出力する
System.out.println("Hello World");
}
}
初心者に限り上記のようなコメントでは少ないです。
私がレビュアーであれば下記のような質問をします。
- mainのメソッドの仕様書の定義は?
- argsで受け取る内容は何か?
- 何故新規のメソッドを作らすmainで実行しているのか?
- staticで実行する意味があるのか?
コメントを書く事で曖昧にしている箇所を発見することができます。
また加えて下記のような質問もします。
- このクラスは何をするためのクラスなのか?
クラスの役割をコメントで書くと同時に自分が決められる名称に理由をつけることも大切です。コメントをつけると同時に名称に関しても見直してみてください。
最小を考える
自分で書いたプログラムが"最適"であるかを判断するのは非常に難しい事です。
初心者であればなおさら難しいですし、意図した動きが出来てしまうとそのプログラムの考察をやめてしまうことが多々あります。
ですが、今一度"そのプログラムが最小であるか?"という観点で考察してみてください。冗長なプログラムはバグを生むことになり改変も困難です。
- 重複を無くす(メソッド化する)
- 処理自体がいるか検討する
- 複数の処理をするメソッドをなくす
上記を守り、クラス毎の役割を明確にすることが大切です。そうすることで他のアプリケーションで再利用可能なクラスができ、自己資産を増やすことに繋がります。また処理を単体で実行できるとテストを容易にできます。
#まとめ
今回は自己開発したアプリケーションの精度を上げるために効果的な学習方法として下記3つの方法を紹介しました。あなたのアプリケーションや学習方法を見直すきっかけになったら幸いです。
- 一つのプログラミング言語を深く学習する
- コメントを記述する
- 最小を考える