我有一堆cfc
文件(运行coldfusion8
),其中包含一个cfswitch
捆绑类似的功能(用户,搜索,...)。如何在Coldfusion中处理“无效的方法代码长度”?
有些CFC文件变得过大,所以我收到Invalid method Code length 72645
我假设说,“你的文件太大,无法解析” ..
我通常在约达到这个2000行,并认为这是...并不多。
由于我在一堆文件上碰到了这个上限,我正在考虑添加另一个功能层=从switch-statement中删除所有函数,并使用每个函数单独的cfc调用cfinvoke
。
问:
我的应用程序并不大,所以我不知道,有没有办法来规避“你 - 不能具备的,更比2000线-IN-A -cfc“的上限,如果不是,那么在应用程序中调用每个主要方法的独立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个案例,这是我使用的所有主要cfcs的平均值。
谢谢!
而不是担心编译器的上限(和2000行等,不是硬性限制,它不是那么简单),你可能更好地重新组合你的CFC和方法有点多一点。呃......“计划中”。看看子类的东西,看看你的方法是否太复杂了,等等(方法应该做一件事)。 – 2013-03-09 20:44:33
我以为我的CFC是“计划好的”:-)给我一分钟,我张贴一个简短的草图。子类化意味着什么? – frequent 2013-03-09 21:03:45
@AdamCameron:好的。我开始通过从交换机调用另一个功能层来分离我的交换机。我想这很接近子类,是吗? – frequent 2013-03-10 00:37:29