たくさんのcfc
ファイル(実行coldfusion8
中)があり、それらはcfswitch
バンドルされた同様の機能(ユーザー、検索、...)で構成されています。
一部のcfcファイルが大きくなりすぎているためInvalid method Code length 72645
、「ファイルが大きすぎて解析できません」というメッセージが表示されます。
私は通常約2000行でこれに到達しており、これは...それほど多くはないと思います。
この上限を多数のファイルに適用しているので、別の関数レイヤーを追加することを検討しています= switchステートメントからすべての関数を削除し、関数cfinvoke
ごとに個別のcfcを使用して呼び出します。
質問:
私のアプリケーションはそれほど大きくないので、「2000ラインを超えるフロンを持てない」という上限を回避する方法はありますか?そうではなく、アプリケーションで呼び出されるすべてのメインメソッドに対して個別のCFC /コンポーネントを用意することは実行可能なアプローチですか?
ありがとう!
編集: re:「計画済み」:-)
現在、私のCFCは次のように構成されています。
<cfcomponent extends="controllers.main" output="false" hint="handle all user interactions">
<cfscript>
VARIABLES.Instance.Validation = {
// all user-relate form fields including validation method to call (pass = no validation)
id="spec_id"
, corp="pass"
...
};
</cfscript>
<cffunction name="Init" access="public" returntype="any" output="false" hint="Initialize form data">
<cfreturn true />
</cffunction>
<cffunction name="Defaults" access="public" returntype="struct" output="false" hint="Assign defaults">
<cfscript>
// form default values assigned to instance
var formDefaults = {
id=""
, comp=""
...
};
</cfscript>
<cfreturn formDefaults />
</cffunction>
<cffunction name="Commit" access="remote" returntype="struct" output="false" hint="Main handler">
<cfscript>
// all var declarations
var userID = "";
var strRememberMe = "";
var timestamp = now();
...
var defaultValues = THIS.Defaults();
var LOCAL = {};
structAppend(defaultValues, VARIABLES.Instance.FormData);
LOCAL.User = defaultValues;
LOCAL.User.timestamp = timestamp ;
</cfscript>
<!--- the switch --->
<cfswitch expression = #LOCAL.User.submitted_form#>
... lot of stuff ...
</cfswitch>
<cfreturn LOCAL.Response />
</cffunction>
<!--- UTILITY FUNCTIONS --->
<cffunction name="Validate" access="public" returntype="array" output="false" hint="validate form inputs">
<cfscript>
var LOCAL = {};
var double = structNew();
double.criteria = VARIABLES.Instance.Validation;
double.form = VARIABLES.Instance.FormData;
</cfscript>
<!--- Get error name and type --->
<cfinvoke component="form_validate" method="validate_fields" double="#double#" returnvariable="validation_errors"></cfinvoke>
<cfset LOCAL.ErrorMessages = validation_errors />
<cfreturn LOCAL.ErrorMessages />
</cffunction>
</cfcomponent>
今、私は多くの構造化されていないものを書いていますが、functional-cfcsに分割して、このように処理することは、私にはあまり「計画外」のようには見えませんでした。
もしそうなら、とにかくやり直さなければならないので、これを設定するためのより良い方法は何でしょうか?スイッチには約15のケースがあります。これは、私が使用しているすべての主要なcfcの平均です。
ありがとう!