[JavaScript]分割代入を使って引数が多い関数をいい感じにする

複数の引数がある関数をいい感じにしてみます。

悪いパターン

function findUsers (role, isDelete, useCache, count) {
    //何か処理
}

const users = findUsers('admin', false, false, 10);

呼び出し側だけを見ても引数の意味がわからないし、後からの変更も大変です。

よくする!

分割代入を使うことでコードの可読性があがります。
また後から引数を増やす時にも呼び出し側を意識する必要はありません。

    function findUsers ({role, isDelete, useCache, count} = {}) {
        //何か処理
    }

    const users = findUsers({
        role: 'admin',
        isDelete: false,
        useCache: false,
        count: 10,
    });

デフォルト値も設定可能です。

    function findUsers ({role, isDelete, useCache, count = 100} = {}) {
        console.log(count); // 100
    }

    const users = findUsers({
        role: 'admin',
        isDelete: false,
        useCache: false,
        //count: 10,
    });

必須パラメータを設定する。
デフォルト引数に例外を発生させる関数を設定することで必須パラメータにできます。

    const requiredParam = (param) => {
        throw new Error(`Required parameter, "${param}"`);
    };

    function findUsers ({role = requiredParam('role'), isDelete, useCache, count = 100} = {}) {
    }

    findUsers({
        //role: 'admin',
        isDelete: false,
        useCache: false,
        count: 10,
    });
Uncaught Error: Required parameter, "role"

IDE(IntelliJ)のDocもバッチリです :kissing_heart:

01.png

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.