ホームお問い合わせプロフィール未経験→就職転職合格率年収の相場ブラック企業判別定時帰りする方法

きれいなソースコードを書くために意識すべきこと

2015年3月21日に投稿 → に更新 能力開発 アフィリエイトリンクを含みます

「メンテナンス性を上げるためにきれいなソースコードを書きたい」
「優れたプログラマーは書くコードがきれいって言うけど」

プログラムを書くなら、きれいに書きたいですよね。

私はこれまでに15年以上プログラムを書き続けてきましたが、「きれいなソースコードを書くこと」は常に重要な課題でした。

試行錯誤する中で見えてきた「きれいなソースコードを書くためのポイント」を紹介します。

書き方のルールを作り守る

きれいなソースコードの特徴の一つは「一定のルールで書かれている」ということです。

書き方が統一されていないコードは美しくありません。

書き方が一定のルールに統一されていても、そのルールが美しくなければ意味がありません。

つまりは「美しい書き方のルールを作り、守る」ことが大切なんです。

では、どんなルールがいいかを考えてみましょう。

名前の付け方

変数、関数(メソッド)、クラス名などの命名規則を決めます。

全て英単語にするとか、単語を短く短縮する時のルールも決めます。

単語の切れ目の表現

大きく分けて2つの表現方法があります。

スネークケース

単語と単語の間を_(アンダーバー)で区切る方法です。

var user_name = "foo";
function get_user_name() {
	return user_name;
}

キャメルケース

単語の頭文字だけ大文字にして連ねる方法です。

var userName = "foo";
function getUserName() {
	return userName;
}

基本は使用する言語に合わせる

単語の区切り方は使用するプログラミング言語に合わせればいいと思います。
Java、JavaScriptならキャメルケース、Rubyならスネークケースとなります。

キャメルケースの方が文字数が少なくできるけど…?

API通信に使うJSONのプロパティ名はキャメルケースにした方がアンダーバー(_)がない分、文字数が少なくて済むので、通信料を減らせて良いと思います(微々たる量ですが)。

モジュール分割のルール

大きなプログラムを作る場合、一つのファイルに全てを書いていては、プログラムの理解が困難です。

大きいプログラムは理解しやすい大きさに分割すべきです。

そのためには分割のルールが必要です。

かんたんなものだと、「一つの関数(メソッド)は100行以内にする」というものがあります。処理によっては一つの関数が1000行あってもいい場合があるかもしれませんが、一定のルールを設けることでコードの読みやすさの底上げができます。

この他にモジュール化するレベルを合わせるという方法があります。

かんたんに言うと関数に切り分けるレベルを合わせるんです。

for (var i=0; i < 10; i++) {
	console.log("Good Morning");
}

for (var i=0; i < 10; i++) {
	console.log("Hello");
}

for (var i=0; i < 10; i++) {
	console.log("Good Night");
}

というコードを分割する際に

for (var i=0; i < 10; i++) {
	console.log("Good Morning");
}

sayHello();

for (var i=0; i < 10; i++) {
	console.log("Good Night");
}

function sayHello() {
	for (var i=0; i < 10; i++) {
		console.log("Hello");
	}
}

としてしまうとHelloと出力する処理だけ関数に分割していて他とレベルがあっていません。

分割レベルを合わせると以下のようになります。

sayGoodMorning();
sayHello();
sayGoodEvening();

function sayGoodMorning() {
	for (var i=0; i < 10; i++) {
		console.log("Good Morning");
	}
}
function sayHello() {
	for (var i=0; i < 10; i++) {
		console.log("Hello");
	}
}
function sayGoodNight() {
	for (var i=0; i < 10; i++) {
		console.log("Good Night");
	}
}

ソフトウェアに合ったルールを考えよう

コードの書き方のルールに絶対的な正解はありません。プロダクトの数だけ正解があります。

それぞれのプロダクトに合ったルールで書けば良いと思います!