C言語やJava、PHP、JavaScriptなど、
if ( a==0 ) {
などのような条件文の書き方をするプログラミング言語があります。
このif文の中括弧ですが、改行して書く人と改行せずに書く人がいます。
それぞれの書き方で動作に違いがないことを説明した後、それぞれの書き方についてのメリットとデメリット、中括弧を改行する方法と中括弧を改行しない方法のどちらを採用するべきかを説明します。
今回説明に使うソース
今回はHTMLとJavaScriptで以下のように書いたソースを使用します。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="text" id="number" onchange="oddOrEven();"/>
</body>
<script type="text/javascript">
//奇数偶数判定を中括弧改行で書いたもの
function oddOrEven() {
//テキストボックスの値を取得
var value = document.getElementById("number").value;
//中括弧を改行する
if (value % 2 === 0)
{
//偶数であれば偶数と表示
console.log("偶数");
}
else
{
//奇数であれば奇数と表示
console.log("奇数");
}
};
//中括弧改行を改行なしで書いたもの
function oddOrEven2() {
//テキストボックスの値を取得
var value = document.getElementById("number").value;
//中括弧を改行しない
if (value % 2 === 0) {
//偶数であれば偶数と表示
console.log("偶数");
} else {
//奇数であれば奇数と表示
console.log("奇数");
}
};
</script>
</html>
このソースはテキストボックスに入力した数値を2で除算して余りが1であれば奇数、余りが0であれば偶数と判断する単純なプログラムになっています。
if文の中括弧を改行する場合
if文の中括弧を改行するソースは上記ソースのうちの次の部分になります。
function oddOrEven() {
//テキストボックスの値を取得
var value = document.getElementById("number").value;
//中括弧を改行する
if (value % 2 === 0)
{
//偶数であれば偶数と表示
console.log("偶数");
}
else
{
//奇数であれば奇数と表示
console.log("奇数");
}
};
コードの以下の部分はそのままにして、奇数を入力した場合と偶数で入力した場合のコンソールログの様子を見てみましょう。
<input type="text" id="number" onchange="oddOrEven();"/>
3を入力すると奇数、8を入力すると偶数が表示され、中括弧を改行した場合は正しく動作しています。
if文の中括弧を改行しない場合
if文の中括弧を改行しないソースは上記ソースのうちの次の部分になります。
//中括弧改行を改行なしで書いたもの
function oddOrEven2() {
//テキストボックスの値を取得
var value = document.getElementById("number").value;
//中括弧を改行しない
if (value % 2 === 0) {
//偶数であれば偶数と表示
console.log("偶数");
} else {
//奇数であれば奇数と表示
console.log("奇数");
}
};
コードを以下のように変えて、動作を見ることにします。
<input type="text" id="number" onchange="oddOrEven2();"/>
こちらも3を入力すると奇数、8を入力すると偶数が表示され、中括弧を改行した場合は正しく動作しています。
つまり、if文の中括弧を改行してもしなくても条件文としての動作に影響はありません。
if文の中括弧を改行するメリットとデメリット
ではif文の中括弧を改行するメリットとデメリットを説明します。
if文の中括弧を改行するメリットは中括弧でインデントを認識する人にとって読みやすいソースになることです。
中括弧がインデントと同じ位置にあるので、どこからどこまでの中括弧が条件文やループ文のソースになっているのかが一目でわかります。
デメリットとしては中括弧を改行しない書き方に慣れている人には、行数が多く、冗長なソースに見えてしまうことです。
if文の中括弧を改行しないメリットとデメリット
if文の中括弧を改行しないメリットはソースのコードの行数を少なく抑えられることです。
中括弧ごとに改行するソースよりも行数が少なく、慣れている人にとってはこちらの方がソースを追いやすくなります。
逆にデメリットは、複雑なif文であればどこまでが条件式なのか分からないことです。
例えば以下のソースをご覧ください。
if ( a == 0 ||
b == 0 ||
( c == 0 && d == 1 ) ||
( c == 1 && d == 0 ) ||
( e == 0 && f == 0) {
a = a + 1;
b = b + 1;
c = c + 1;
}
このソースではまだましかもしれませんが、ぱっと見てどこまでがif文で、どこまでが処理内容なのか、分かりにくい書き方になります。
以下のQiitaの記事では恐ろしいif文が出て来ます。
https://qiita.com/screwyscrew/items/c8d4870fc444376c163d
この記事で出てくるようなif文を書く人はいないと思いますが、中括弧を改行しないデメリットが露骨に出ています。
この場合はそもそもif文の条件式の書き方に問題があるとも言えますが、条件式が複雑になると、どこまで条件式なのか見にくくなることは意識した方がよさそうです。
結論
if文の中括弧を改行するかどうかの結論ですが、処理に影響しないのでどちらで書いても問題はありません。
自分のような古い技術者はif文の中括弧を改行することを好む人もいたのですが、最近の技術者はif文の中括弧を改行しないことが普通になっている人も多いです。
個人でコーディングをする場合はどちらでも問題ないのですが、チームでの開発やソースの改修の場合は多数派のコードや既存のコードに合わせた方が良いでしょう。
また、コーディング規則で書き方が定められている場合は必ずその書き方に従ってください。
現在ではif文の中括弧を改行しない書き方が増えているため、中括弧を改行しない書き方を覚えておいた方が無難と言えるでしょう。
古い書き方を捨てて流行に乗るのも技術者として必要な事ですね。
今回の記事はここまでになります。
また次回の記事でお会いしましょう。