[C/C++] switch文のインデントの付け方

switch文のインデントってどうしてますか?

よく教本ではcaseにインデント付けていますよね。

switch(data){
	case 0:
		break;
	case 1:
		break;
	default:
		break;
}

大体この書き方で解説しているものが多いと思うんですけど、自分も最初は教本に習ってこの書き方をしていましたが、switchの閉じカッコでインデントが2つ下がるのが凄く違和感ありました。

それで、caseってgoto文のラベルに似ていませんか?

ラベルってインデント付けないですよね。↓こんな風に

int Func(int *data)
{
	if(data == NULL){
		goto L_ERROR;
	}
	(*data)++;
	return 0;
	
L_ERROR:
	return 1;
}

switch文からcaseにジャンプするわけですから、解釈としてはswitch文に限定されたローカルラベルなんですよね。

そう考えるとcaseのインデントをswitch文に合わせた方が自然に見えませんか?

switch(data){
case 0:
	break;
case 1:
	break;
default:
	break;
}

switch文のインデントは今までのプログラマー人生で何度か書き方が変わりましたが、最終的にこれに落ち着きました。

この書き方がスタンダードになれば良いのにな!!

このような細かな点も含めて、プログラムの可読性はとても重要です。
プログラミングにおいて、「数か月後の自分は他人」という格言があります。
実際に私も職場でソースコードを見て、「これ誰が書いたんだ?汚いし冗長だなぁ」とか思っていたら過去の自分が書いたコードでした。職場の皆さんの誰かだと疑ってしまいました。ごめんなさい。笑
「今自分が書いているから分かる」のと、「誰が見ても分かりやすい」は全然違います。
読みやすい、分かりやすいコードを書くように、普段から意識していきましょう。

C言語やjavaなどの入門書を読み終えて、基本を習得した後に、是非「リーダブルコード」を読んでみてください。可読性に関して、3年ぐらいかけて培われることが、まとめられていておススメの書籍です。

コメント