search
LoginSignup
66

やらない理由を書いてやらない - Good Concepts in Programming -

概要

プログラミングの良い概念を理解するとプログラマーレベルが上がると考えています。
良い概念は特定のプログラミング言語に縛られないので、様々なプログラミング言語で役に立ちます。
前回はOAOO原則を紹介しました。
今回紹介する良い概念は「やらない理由を書いてやらない」です。

プログラミングの3大要素

本編に入る前に、プログラミングの3大要素について復習しましょう。
プログラミングを構成する3つの基本要素は「順次処理」、「分岐処理」、「反復処理」です。
プログラミングの3大要素だけであなたのやりたいことは基本的に実現できます(良いプログラミングであるとは限らない)。

1.順次処理

順次処理は記述した順番に従って処理を進めていくことです。

order.js
// Plan, Do, Check, Actionの順番で処理します
executePlan();
executeDo();
executeCheck();
executeAction();

2.分岐処理

分岐処理は指定した条件によって処理を枝分かれさせることです。
if文、swtich文がこれに該当します。

if.js
if (a === b) {
    // 条件に当てはまる場合に実行する処理です
} else {
    // 条件に当てはまらない場合に実行する処理です
}

3.反復処理

反復処理はある条件を満たすまで(もしくは無限に)処理を繰り返すことです。
for文、while文がこれに該当します。

loop.js
for (let i = 0; I < 10; i++) {
    // ここに繰り返したい処理を記述します
}

while (condition === true) {
    // 条件がtrueの場合、処理を繰り返します
}

やらない理由を書いてやらないとは

前置きが長くなりましたが、「やらない理由を書いてやらない」を紹介します。
先ほど分岐処理の説明をしましたが、あなたは分岐処理をスマートに使えてますか?
当たり前のように使うのであまり意識して使っていないかもしれません。

1.やる理由を書いてやる

まずはよく記述しがちな分岐処理のサンプルコードを見てみましょう。

do_something.js
function doSomething(a, b, c, d) {
    // やる条件を判定して処理を実行します
    if (a) {
        if (b && c) {
            // この関数内で実行したい処理を記述します
        } else if (b && d) {
            // この関数内で実行したい処理を記述します
        }
    }
}

やる条件を判定して処理を実行する、ごく自然なプログラミングです。
特に問題ないように見えますが、以下の問題点があります。
・if文がネストして読みにくい
・やる条件が追加になった場合、修正ミスが起こりがち
・関数内で実行したい処理を複数箇所に記述しなければならない

2.やらない理由を書いてやらない

ではどのように記述すれば良いのでしょうか?
ここで「やらない理由を書いてやらない」という概念(考え方)が役に立ちます。
サンプルコードを見てみましょう。

not_do_something.js
function doSomething(a, b, c, d) {
    // やらない条件を判定して関数を終了します
    if (!a) {
        return;
    }

    if (!(b && c)) {
        return;
    }

    if (!(b && d)) {
        return;
    }

    // やらない条件を追加すれば変更にも柔軟に対応できます
    // この関数内で実行したい処理を記述します
}

修正前のコードに比べてif文のネストがなくなり、読みやすくなりました。
また関数内で実行したい処理が1か所だけになりました。
そして実行したい処理の前にやらない条件を追加するだけで変更に対応できます。
条件文を記述して終了(return)するのは少し不自然に感じるかもしれません。
しかしプログラミングが膨大で複雑になるほどこの概念は威力を発揮します。

まとめ

今回はやらない理由を書いてやらないを紹介しました。
当たり前のように使用している分岐処理ですが、ちょっとした工夫で可読性、保守性が高くなります。
新しい知識や環境がなくてもできるので、ぜひ実践してほしいです。
やらない理由を書いてやらないを理解してプログラマーレベルが上がったと感じていただければ幸いです。

最後まで読んでいただきありがとうございます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
66