Somebody (Peter Bell, I think?) has a comprehensive solution involving lists
of properties where on a per-property basis you can define whether it is
gettable or settable for each access type (i.e. public, private, package),
and on a per-class basis you define whether properties are addable and what
happens when a non-existent property is accessed.  This is non-trivial and
gets around the infinitely mutable object problem, and the
self-documentation issue.

The naked get(key, value), set(key, value) (maybe simplified for use as an
example?) is really just a way to expose the variables scope to the world.
I wouldn't want to do that in most cases, and if I was really doing a quick
and dirty hack I'd just use the "this" scope and save myself the trouble of
even writing the generic get/set.

Jaime Metcher


> -----Original Message-----
> From: Ian Skinner [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, 10 July 2007 6:25 AM
> To: CF-Talk
> Subject: Re: Init method and getters / setters in cfc
>
>
> I would add your component is now completely mutable.  A developer can
> add any data they want which may or may not be a big deal depending on
> ones thinking on such things and what the component is meant to do.
>
> An example that shows this code is going to accept any and all input
> such as this.
> aObj.set("myOwnSillyvar","Some really bad data")
>
> Ian
>
>
> Ben Nadel wrote:
> > Chris,
> >
> > While I don't know what is *right*, here are the arguments that I have
> > heard against the generic getter/setter:
> >
> > * The CFC is not self documenting. Looking at its functions does not
> > give you any insight into what it can set/get.
> > * Not clear on what should be returned if an invalid "get" is requested.
> > * It makes extending a component more difficult because the parent
> > component now has to be smarter about where it looks for its data.
> >
> > Take that with a grain of salt ;)
> >
> >
> > ......................
> > Ben Nadel
> > Certified Advanced ColdFusion MX7 Developer www.bennadel.com
> >
> > Need ColdFusion Help?
> > www.bennadel.com/ask-ben/
> >
> > -----Original Message-----
> > From: Peterson, Chris [mailto:[EMAIL PROTECTED]
> > Sent: Monday, July 09, 2007 3:52 PM
> > To: CF-Talk
> > Subject: Init method and getters / setters in cfc
> >
> > A lot of cfc's using init and 'good' OO practices have functions like
> > getDSN(), setDSN('Blah') littered throughout. Can I ask any guru out
> > there why you wouldn't use simple get('keyname') and
> > set('keyname','keyvalue') like the following?
> >
> >     <cffunction name="get" access="public" output="no"
> > returntype="any">
> >             <cfargument name="name" required="true" type="string">
> >             <cfreturn evaluate('variables.' & arguments.name) />
> >     </cffunction>
> >
> >     <cffunction name="set" access="public" output="no"
> > returntype="void">
> >             <cfargument name="name" required="true" type="string">
> >             <cfargument name="value" required="true" type="any">
> >             <cfset variables[arguments.name] = arguments.value />
> >     </cffunction>
> >
> > Then instead of littering your cfc with numerous getters / setter, you
> > have 2 methods that should be able to handle simple or complex values
> > without any problems with much less code.
> >
> >
> > Chris Peterson
> > Gainey IT
> > Adobe Certified Advanced Coldfusion Developer
> >
> >
>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Deploy Web Applications Quickly across the enterprise with ColdFusion MX7 & 
Flex 2
Free Trial 
http://www.adobe.com/products/coldfusion/flex2/?sdid=RVJU

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:283335
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

Reply via email to