はじめに
私は会社の新人研修で、コードが全く読めずにとても悩みました。そもそも「文章を読む」という基本的なことができていませんでした。しかし、研修中に当時の講師と一緒に「一つ一つコードを音読する練習」を続けることで、少しずつわかるようになりました。コードも少しずつ書けるようになりました。初めは焦らず目の前のことを順番にクリアにしていくといいと思います。
目的
- コードを見たときに拒絶反応を起こさない
- プログラミングの問題を見た時に、お手上げの状態をなくす
- エラー文にも物怖じしない
実践した2つのこと
1. 一つ一つコードを音読する
まずは、コードを音読しよう。
int total = price * quantity;
上記であれば、「int型の変数totalに変数priceと変数quantityを書けたものを代入する」みたいな感じです。
次に、mainメソッドの中のコードを1つずつ音読しよう。
public class Main {
public Static void main(String[] args) {
Dog john = new Dog();
john.name = "John";
Dog paul = john;
paul.name = "Paul";
john.walk();
paul.walk();
}
}
Dog john = new Dog();
→Dog型の変数johnにDogクラスのインスタンスを代入する。
john.name = "John";
→Dog型の変数johnのフィールドnameにString型johnを代入する。
Dog paul = john;
→Dog型の変数paulにDog型の変数johnを代入する。
paul.name = "Paul";
→Dog型の変数paulのフィールドnameにString型Paulを代入する。
john.walk();
→Dog型の変数johnに対してWalkメソッドを呼び出す。
オブジェクト指向を学びだすあたりから、「クラス」や「コンストラクタ」「メソッド」「フィールド」などの多くの単語が出てきます。基本構文(if文、for文)以降の学習で私は詰まっていました。コード1文なにしているのかなどをまずは理解していくと頭が整理されてクリアになっていくと思います。
2. フローチャートに落とす
研修の講師や会社の部長に言われたことが、「最初のうちはコードをフローチャートにする練習をすると良い」です。フローチャートにすることでコードを見た時に頭の中で処理を組み立てて理解することができます。
下記コードをフローチャートにしてみよう。
int[] nums = {40, 84, 10, 37, 24, 3, 58, 29, 76, 55};
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums.length - i - 1; j++) {
if (nums[j] > nums[j + 1]) {
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
こんな感じで自分なりにフローチャートを書いて、頭の中を整理するといいかも。
コードを見てまずわからなかったら、手を動かしてフローチャートを書いてみよう。
そうすると、どんな処理が書いてるか理解できたりや、機能を実装する際にフローチャートを書いて頭が整理される。
まとめ
特に、実践①のコードを音読することをお勧めする。自分のやったこと、書いたコードをクリアに説明できるように時間をかけて言語化してみることが大事だと思います。自分で理解できていると思っていても、実はできていないことのほうが多いことあるので、時間をかけて理解しましょう。そして、単に「理解できた」だけでなくて「相手に説明できるかどうか?」まで考えてみるのもいいのかもしれないです。