見出し画像

散らかったソースコードを整理する 誰でもできる改善ポイント3パターン

仕事でメンバーのソースコードをレビューしていると、しばしば登場してくる散らかったソースコード。特に間違っているわけではないので正常に動作しますが、これらを放置しておくと、後々、保守のタイミングで工数がとられてしまうので、初めの段階できれいにしておくことがベターかと思われます。今回はそんな間違ってはいないけどもっとこうした方が良いよねっていうソースコードを紹介します^^

■正しく意味のあるコメント残す

仕事でソースコードを読んでいると下記のようなコメントによく遭遇します。
① コメントで書いていることとソースコードでやっていることが一致していない。

// 野菜の値段を表示する
int age = 30;

System.out.println(age);


② ソースコードでやっていることがそのままコメントに書かれている。

// 変数ageに30を代入する
int age = 30;

// ageの値を表示する
System.out.println(age);


⓵が作りこまれる原因としては既存コードのコピペによるものが大半なイメージです。既存コードの流用は悪いことではないですが、きちんと理解したうえで利用して、コメントもきちんと直してもらいたいものです。
②はソースコードを見れば分かることなので、あえてコメントを書く必要はないと思います。「きちんとコメント書いて」とか抽象的な教えが多いためだと思いますが、無意味にコメントを書いてもソースコードの可読性が落ちるんじゃないでしょうか。

リファクタしたソースコードは下記のとおりです。実際このくらいならコメント不要かもしれません。

// 年齢を表示する
int age = 30;

System.out.println(age);


■条件は日本語にして不自然にならない順番で書く

これはたまに遭遇するものですが、if文の条件は「可変値 比較(=など) 固定値」にすると分かりやすくなります。一時期、固定値を前に持ってくる書き方が流行ったことがあったのでそれが原因かと思われます。ちなみに固定値を前に持ってくる書き方のメリットはNullPointerExceptionが発生しないということだと思います。私は可読性が良い方がよりメリットが大きいと考えているので「可変値 比較(=など) 固定値」の順番で書くようにしています。

// 赤点のボーダーライン
int THRESHOLD_SCORE = 50;

int aKunScore = 40;
int bKunScore = 70;

if(THRESHOLD_SCORE > aKunScore) {
    // 50点がAくんの点数より大きい場合 <= 分かりにくい
}
if(bKunScore < THRESHOLD_SCORE) {
	// Bくんの点数が50点より小さい場合 <= 分かりやすい
}

■インデントを揃える

何を焦っているのか、インデントが揃っていないソースコードにもよく遭遇します。インデントが揃っていないと可読性が落ちてしまいます。またEclipseでの話ですが、フォーマットしたいソースドラッグして選択状態で「Ctrl+Shift+F」でもソースがきれいになります。

	/**
	 * 悪い例
	 */
	public static void badCode() {
		List<String> vegetableList = new ArrayList<String>();
		    vegetableList.add("お芋ちゃん");
		vegetableList.add("キャベツちゃん");

			vegetableList.add("長ネギちゃん");

			    for(String vegetable : vegetableList) {
			System.out.println(vegetable);
		}
	}

	/**
	 * 良い例
	 */
	public static void goodCode() {
		List<String> vegetableList = new ArrayList<String>();
		vegetableList.add("お芋ちゃん");
		vegetableList.add("キャベツちゃん");
		vegetableList.add("長ネギちゃん");

		for(String vegetable : vegetableList) {
			System.out.println(vegetable);
		}
	}

■まとめ

皆さん、どうでしたか?
そんなに難しいことは言っていなかったですよね。チョット意識するだけで格段に読みやすいコードを書けるようになったかと思います^^

これからも「誰でも簡単にスグ実行できる」そんな記事を書いていきますので、どうぞこれからも応援よろしくお願いします!

ではまた(^_^)ノシ

記事を書く合間のコーヒー代、待ってます!(*´ー`*)