たくさんの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の平均です。
ありがとう!