switch-caseのcaseはインデントする派?しない派?
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年ぐらいかけて培われることが、まとめられていておススメの書籍です。
◆ 初学者向けの入門書
C++の機能をわかりやすく、丁寧に解説している良書です。
◆ 中級者向けの書籍
C++の開発者が書いた本なので、C++11までの仕様が網羅的に書かれています。
◆ 上級者向けの書籍
C++を効率的かつ正確に使用するための最適解とガイドラインを示してくれる良書です。
各章は、特定のテクニックやアプローチに関する詳細な説明と例を含んでおり、プログラマがより良いコードを書くために一役買ってくれます。
コメント