2017-04-26 14 views
0

私はcffunctionに3つ以上の引数を持たせるべきだと言われました。この関数を書く良い方法はありますか?すべての引数は前のウィンドウで可能なフィルタで、where句で結果をフィルタリングするために使用されます。coldfusion関数の引数

<cffunction name="Example" access="remote" returntype="query"> 
    <cfargument name="keyword" type="string"> 
    <cfargument name="office" type="numeric"> 
    <cfargument name="builder" type="numeric"> 
    <cfargument name="sup" type="numeric"> 
    <cfargument name="mgr" type="numeric"> 
+4

1)それは 2を必要とするよう機能ができるだけ多くの引数を持つことができる)ことが3 便利です場合は、デフォルト値を持つことができます)あなたが効果的にすることができ、構造体や配列で必要なだけ多くの引数を渡してください 4.同じ引数を何度も何度も繰り返していると、オブジェクトがより適切である可能性があります。 5.)この3つの引数ルールの引用がありますか? –

+0

Jamesさん、ありがとう、私は昨年のcfsummitでそれを聞いた。私はそれがクリーンなコードのセッションにあったと思う。それが唯一の理由かどうかは分からなかった。すべての引数はURL変数なので、関数にURL構造体を渡すことができると思います。試してみよう。 –

+1

@kevinfreese私はクリーンなコードに関して同じことを聞いたことがあります。しかし、私が理解しているように、それは1)多くの議論を取っている機能があまりにも多すぎるかもしれないということともっと関係があります。複数の小さな関数にリファクタリングすることはできますか? 2)引数が少ない関数の流れに従う方が簡単です。 – Shawn

答えて

2

あなたの疑問を持っているコードは、この提案よりも優れている:

<cfargument type="struct"> 

理由は、構造体が何かを含めることができるということで、機能が本当に必要なものに限定されるものではありません。問題の関数の場合、実際には1つの文字列と4つの数字が必要です。

つまり、あなたの関数にURLなどの構造体を引き渡すことができます。それは、この単純な問題です:

myQuery = Example(argumentCollection = url);