Thread Rating:
  • 389 Vote(s) - 2.89 Average
  • 1
  • 2
  • 3
  • 4
  • 5
引数の定義はキーワードor位置 どちらがよい?
09-05-2013, 04:33 PM,
#1
引数の定義はキーワードor位置 どちらがよい?
引数の渡し方に関して、Curlでは位置引数と、キーワード引数の2種類ありますが、
ソースの可読性を考えると、複数の引数を渡す場合には、キーワード引数のほうが優れていると思っています。
キーワード自体が、その変数の意味をあらわしてくれるからです。

たとえば、花嫁と花婿を渡すと結婚する、というプロシージャを考えたとき、

Code:
{define-proc {marry1 bride:String, groom:String}:void}

位置引数(marry1 プロシージャ)だと、プログラマは、花嫁と花婿の順番を間違えやすいと思います。
(日本語だと「新郎・新婦」で順番が逆)

Code:
{define-proc {marry2 bride:#String = null, groom:#String = null}:void
    {if bride == null or groom == null then
        {error "花嫁(bride)と、花婿(groom)はどちらもnullを許可しません"}
    }
}

しかし、だからといって、キーワード引数(marry2 プロシージャ)にしてしまうと、
順番の間違いやすさがなくなるかわりに、初期値の指定が必要になります。
ここでは、花嫁、花婿が最初から決まっている、というのもおかしな話なので、 null を初期値にしましたが、
どちらかが不在のまま結婚はできないので、プロシージャのなかで null 判断をしています。

Code:
{define-proc {marry3
                 bride:String = {uninitialized-value-for-type String},
                 groom:String =  {uninitialized-value-for-type String}
             }:void
}
Nullable でない型を指定しようとすると、uninitialized-value-for-type を使う方法があると思いますが、
これも、結局は、初期化されないままの値が渡される可能性はあるので、
marry2 プロシージャ と同じ問題は残っています。

複数の引数を定義するとき、どのような実装がわかりやすいのでしょうか。
よいアイディアをお持ちの方がいらっしゃれば、アドバイスください。


Messages In This Thread
引数の定義はキーワードor位置 どちらがよい? - by umemura - 09-05-2013, 04:33 PM
Forum Jump:


Users browsing this thread:
5 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('963')