LoginSignup
2
1

More than 5 years have passed since last update.

JavaScriptのメソッド定義する時に引数どうしようか悩んだ話

Posted at

JavaScriptのメソッド定義する時に引数どうしようか悩んだ話

ライブラリを作成しようとしている人の参考になれば。。。

案1: 1オブジェクトにまとめてしまう

paramsで渡された内容を元に、HTTPリクエストを行うメソッドの例

sendRequest(params) //url, method, headerなどが全部入り
  .then((res)=>{})
  .catch((err)=>{});
  • メリット
    • メソッド呼び出しもとは、すっきり書ける
    • 仕様が変わっても、呼び出しもとを変更をせずに済むかも
  • デメリット
    • sendRequestの必須パラメータがすぐ分からない
    • パラメータが設定されているかメソッド内で調べるのが大変

案2: 全パラメータをそれぞれ引数にしてしまう

案1と同じく、引数をもとにHTTPリクエストを行うメソッドの例

sendRequest(url = "", method = "GET", header = {}, query = {}, body = {})
  .then((res)=>{})
  .catch((err)=>{});
  • メリット
  • デメリット
    • 省略可能なパラメーターもちゃんとnullとかを設定しないといけない
      • 上の例だと、GETメソッドでリクエストするのにbodyパラメータも必要になるという感じ

案3: (たぶんベストプラクティス)必須パラメータ + オプションのオブジェクト

sendRequest(url, method, opts = {}) //optsにheader, query, bodyを入れる
  .then((res)=>{})
  .catch((err)=>{});
  • メリット
    • 案2よりすっきり呼び出せる
      • オプションパラメータは全部or一部を省略できる
      • ここでもデフォルトパラメータを使うとちょっと楽になれる
  • デメリット
    • オプションパラメーターの存在確認とかが必要

その他

2
1
0

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
  3. You can use dark theme
What you can do with signing up
2
1