Javaの基本文法を覚えた後は、「プログラムを動かす」だけではなく、「読みやすく、保守しやすいコードを書く」ことが重要になります。
本記事では、Javaのコーディングスキルをレベルアップするために意識したいポイントを紹介します。
1. 変数名を分かりやすくする
まず意識したいのが変数名です。
例えば、以下のようなコードがあります。
int a = 20;
int b = 30;
int c = a + b;
このコードでも動作しますが、それぞれの変数が何を表しているのか分かりません。
次のようにすると、意味が分かりやすくなります。
int price = 20;
int quantity = 30;
int totalPrice = price * quantity;
変数名を見るだけで、何の値なのか判断できます。
ポイント
a、bなど意味のない名前を避ける- 変数の役割が分かる名前にする
- 略しすぎない
コードは自分だけでなく、他の開発者も読むことを意識することが重要です。
2. メソッドを適切な大きさにする
一つのメソッドに大量の処理を書くと、コードが読みにくくなります。
例えば、
public void process() {
// ユーザー情報を取得
// 入力値をチェック
// 金額を計算
// データベースに登録
// メールを送信
}
このような処理は、それぞれの役割ごとにメソッドへ分けることができます。
public void process() {
User user = getUser();
validate(user);
int price = calculatePrice(user);
save(user, price);
sendMail(user);
}
メソッドを分けることで、処理の流れが分かりやすくなります。
3. if文を深くしすぎない
条件分岐が何重にもなると、コードが読みにくくなります。
例えば、
if (user != null) {
if (user.isEnabled()) {
if (user.getAge() >= 20) {
// 処理
}
}
}
このような場合は、早めに処理を終了させる方法があります。
if (user == null) {
return;
}
if (!user.isEnabled()) {
return;
}
if (user.getAge() < 20) {
return;
}
// 処理
このようにすると、メインとなる処理が見つけやすくなります。
4. 重複したコードを減らす
同じ処理を何度も記述すると、修正が必要になったときに問題になります。
例えば、
System.out.println("処理を開始します");
を複数箇所に記述していると、メッセージを変更するときにすべて修正する必要があります。
共通処理としてまとめることで、修正箇所を減らせます。
private void printStartMessage() {
System.out.println("処理を開始します");
}
同じ処理が複数箇所に存在していないか確認することが重要です。
5. 適切な型を使用する
Javaにはさまざまなデータ型があります。
例えば金額を扱う場合、
double price = 100.5;
とすることもできますが、金額計算では誤差が問題になる場合があります。
そのため、用途によってはBigDecimalを使用します。
BigDecimal price = new BigDecimal("100.50");
「とりあえずintやdoubleを使う」のではなく、データの性質に合った型を選択することが重要です。
6. ListやMapを使い分ける
複数のデータを扱う場合は、コレクションを適切に使い分けます。
例えば、順番にデータを管理する場合はListを使用します。
List<String> names = new ArrayList<>();
names.add("田中");
names.add("佐藤");
names.add("鈴木");
キーと値を関連付けて管理する場合はMapが適しています。
Map<Integer, String> users = new HashMap<>();
users.put(1, "田中");
users.put(2, "佐藤");
データの特徴に合わせてコレクションを選択することが、きれいなコードにつながります。
7. Stream APIを使ってみる
Javaに慣れてきたら、Stream APIも覚えておくと便利です。
例えば、20歳以上のユーザーを取得する処理です。
List<User> users = ...;
List<User> adults = users.stream()
.filter(user -> user.getAge() >= 20)
.toList();
従来のfor文でも同じ処理はできます。
List<User> adults = new ArrayList<>();
for (User user : users) {
if (user.getAge() >= 20) {
adults.add(user);
}
}
Stream APIを使用すると、データを「どのように処理するか」を簡潔に表現できます。
ただし、無理にStream APIを使用する必要はありません。
読みやすさを優先して、for文と使い分けることが重要です。
8. Optionalを理解する
Javaではnullによるエラーを防ぐことも重要です。
例えば、
User user = findUser();
System.out.println(user.getName());
findUser()がnullを返す可能性がある場合、NullPointerExceptionが発生する可能性があります。
Optionalを使用すると、値が存在しないケースを明示できます。
Optional<User> user = findUser();
user.ifPresent(u -> System.out.println(u.getName()));
ただし、すべてのnullをOptionalに置き換えればよいわけではありません。
Optionalの目的を理解したうえで使用することが大切です。
9. 例外処理を適切に行う
例外が発生する可能性がある処理では、適切な例外処理を行います。
例えば、
try {
readFile();
} catch (IOException e) {
e.printStackTrace();
}
単純に例外を表示するだけではなく、状況に応じてログを出力したり、呼び出し元へ例外を伝えたりします。
また、
catch (Exception e)
のようにすべての例外を一括して捕捉するのではなく、必要な例外を適切に扱うことも重要です。
10. 「動くコード」から「読みやすいコード」へ
Javaのコーディングスキルを高めるためには、単純に文法を覚えるだけでは不十分です。
例えば、次のようなコードがあったとします。
if (age >= 20 && status == 1 && point > 1000) {
// 処理
}
この条件が何を意味するのか分かりにくい場合があります。
そこで、意味のある変数に分けます。
boolean isAdult = age >= 20;
boolean isActive = status == 1;
boolean hasEnoughPoint = point > 1000;
if (isAdult && isActive && hasEnoughPoint) {
// 処理
}
コードの行数は増えていますが、条件の意味は分かりやすくなっています。
「短いコード=良いコード」ではありません。
他の人が読んだときに理解しやすいコードを書くことが重要です。
Javaのコーディングスキルを上げる練習方法
実際にスキルを上げるには、コードを書いた後に見直すことが効果的です。
以下のような点を確認します。
チェックポイント
- 変数名は分かりやすいか
- 一つのメソッドに処理を詰め込みすぎていないか
- 同じ処理を何度も書いていないか
- if文が深くなっていないか
- 適切なデータ型を使用しているか
- ListやMapを適切に使い分けているか
- 例外処理は適切か
- 他の人が読んでも処理内容を理解できるか
最初から完璧なコードを書く必要はありません。
コードを書いた後に「もっと読みやすくできないか」と考えて修正することを繰り返すことで、コーディングスキルを高めることができます。
まとめ
Javaのコーディングスキルをレベルアップするためには、文法を覚えるだけでなく、読みやすさ・保守性・再利用性を意識することが重要です。
「動けばよい」という段階から一歩進み、**「他の人が読みやすく、後から修正しやすいコード」**を意識することが、Javaのコーディングスキルを高めるポイントです。
ここまで読んでいただき、ありがとうございます。もしこの記事の技術や考え方に少しでも興味を持っていただけたら、ネクストのエンジニアと気軽に話してみませんか。
- 選考ではありません
- 履歴書不要
- 技術の話が中心
- 所要時間30分程度
- オンラインOK