2016-11-02 14 views
2

質問がありますcfargumentです。 .cfcを呼び出すときにパラメータを送信している場合は、最初にそれを引数として定義すると効果がありますか?オプション引数の処理:CFArgumentとisDefined

<cffunction name="someFunction" ....> 
    <cfargument name="myArg" required="no"> 

引数を定義せずに関数内でIsDefined()を使用することはできますか?

<cffunction name="someFunction" ....> 
    ... 
    <cfif isDefined("arguments.myArg")> 
     do something 
    </cfif> 

私はそれらを試してみて、どちらも機能することを知っています。しかし、引数の定義とisDefined()の使用の違いは何ですか?それは効率に影響を及ぼしますか?

+0

@KevinB。 –

+2

@ KevinBのコメントは答えのパスです。 –

+1

@DanBracuk * gong "Ohmmmmmmmm" –

答えて

8

効率についてではなく、ドキュメントに関するものです。私の会社のコーディング標準文書cfargumentのexceprtがあります。

ColdFusion関数でcfargumentタグを使用して、次の属性が必要です。

  • 名前
  • タイプ
  • 必要
  • ヒント

ColdFusionがいる必要はありません。 cfargumentタグを使用しますが、検証(型の安全)を提供し、追加のドキュメントとして機能します従って、あなたの関数が期待する名前のついた引数ごとに常にcfargumentタグを与えてください。

ルール:

  1. 引数の名前は、データ型(ハンガリー記法を避ける)を前に付けする必要はありません。
  2. cfarkumentタグには必ずtype属性を指定してください。 type="any"を使用しないようにしてください。
  3. 引数が必要な場合は、required="true"を指定しますが、default属性値は指定しないでください。
  4. 引数が不要な場合は、required="false"を指定し、defaultの属性値を指定します。
  5. 不要な引数が指定されているかどうかを検出する必要がある場合は、defaultを指定しないで、structKeyExists(arguments,"ARGNAME")を関数本体に使用してください(defaultを指定すると、呼び出し元は引数と同じデフォルト値を指定します)。
  6. 関数に引数として渡される変数を参照する場合、常に引数スコープを参照します。 (foo、参照arguments.fooを参照しないでください)
  7. 関数に渡された引数の値を操作しないでください。 CFはいくつかの可変データ型を参照番号で渡します。関数内で行われる操作は、呼び出されたレベルで変数の値を変更します。conflictsを避けるために引数structを関数のローカル変数にコピーし、必要に応じて関数ローカル変数を操作します。
  8. 最初に関数に渡されなかった引数structにキーを追加しないでください。新しいキーを追加すると、デバッグが非常に困難になる可能性があります。代わりに、競合を回避し、その構造体に新しいキーを追加するために、複写を使用して、引数structを新しい関数ローカル変数にコピーします。私の質問はありません

HTH

+1

これは、SOのcoldfusionのドキュメントページに大きな助けになるでしょう。http://stackoverflow.com/documentation/coldfusion/topics – beloitdavisja

+1

会社のガイドラインを判断していませんが、ルール#7は大量のデータで大きなオーバーヘッドを引き起こす可能性があります。提供された議論が実際に使われているものについて考えるべきです。それに応じてドキュメント化されている場合、参照によって(非決定的な機能を持つ)要素を渡すことには何も問題はありません。 「常に重複する議論の範囲」のような一般的な強制は、ある日に逆行するかもしれない。 – Alex

+0

#7は、引数の値を操作したいという状況にあるだけです.WHENは、参照(例えば、構造体)によって渡されます。私たちは、複数のレベルのコードレビュー、パフォーマンスレビュー、およびあなたが記述したような問題を捉える複数の環境を持っています。それでも、潜在的な危険を一掃する価値があります。 –

関連する問題