Fetter, Brad wrote: > Oliver, > > What area of CF did you find frustrating? What kind of project?
First the kind of project: The project is a Quality Assurance system (bug tracking, development requests, yadda yadda yadda) for which we are using CFCs extensively, hence a lot of my discontent comes from dealing CFCs. This project is 'my baby', as it were, and will remain so for the rest of my stay at this company. It will be extended to well beyond the current spec therefore I will have to use CF a lot. The choice of language was not left to me so I have not looked forward to developing the system, which only serves to exacerbate the annoyances experienced with the language. Now the areas. It's a long set of areas, so you may wish to skim or avoid them at all. Once again I state that this is my own personal opinion derived from many long hours of CF. If you disagree but can find no constructive comment, please abstain from commenting. If you have a suggestion that may help me, please make it. If you can help solve one or more of my problems it makes my time with CF more pleasurable, tolerable and makes me less likely to consider putting my hands through a cheese grater. Problem Areas: Object orientation (or lack thereof) and the implementation of it in CF, performance of CFCs (found it can take 3ms to call a method!), functions, general CFML syntax, lack of commands that are in CFML that aren't in CFScript, sessions doing weird things (may be my fault), lack of control (see the 'control freak'). Errrm, what else... Ah, if you put an object into the SESSION variable it not only stores the data, but the methods associated with it as well. Therefore change the class and it doesn't change in memory. If I could work out how to serialize the data at the end of a request I'd do that, but I've no idea. Instantiating an object can take ages. If CFMODULE'ing a template that includes, say common.cfm, and the CFMODULE'ing template also includes the same file and in that file are funcitons, then a 'function cannot be declared twice' error is raised and I can find no way around it. Oh, there are no equivalents to C's "#include" nor PHP's "Define()". CFSWITCH can only take constants in it's cfcase's, therefore as you can apparently define nothing how done one test for return values from a CFC? By hard coding the values (though perhaps I should return strings for error codes). Errm, CFCASE's cannot fall through to the next CFCASE and therefore not the the DEFAULTCASE but you can do it in CFSCRIPT. One cannot 'break out' of CFSCRIPT to CFML in the middle of a control block (i.e. if(){</cfscript><!--- Blah ---><cfscript>}else{}). No constructors, no true private/protected variables, CF compiles the CFC not to a class by to a series of .class files, one for each method, no getter/setter, you cannot define a method as fully as you can in CFML. Oh, and you cannot call a parent method without creating an instance of the parent class, copying over the relevant properties and then calling the method on the parent instance and then copying back the properties. output="false" from a calling function applies to the called function even if the called function does output="true". One may say that as CFCs are a new feature then it should be understandable that they are not well implemented and I did hope that with 6.1 it would be somewhat solved. Nope. Being a PHP-head, I say that objects were well implemented from 4.0 (though I would love being able to raise exceptions like you can in CFC, oh hold on, that's in PHP 5). -- Oliver Tupman Key Systems Geotechnical ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4 Subscription: http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4 FAQ: http://www.thenetprofits.co.uk/coldfusion/faq Signup for the Fusion Authority news alert and keep up with the latest news in ColdFusion and related topics. http://www.fusionauthority.com/signup.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4