Here is a summary from a few previous emails:

1.  Define properties(variables) as instance.X to prevent any outside view
or editing of them.

2.  Use "getX" methods to allow outside viewing, and "setX" methods to set
the variable.

3.  Define non-property variables used with each method through (cfset var
a="tmpVariable"> to prevent accidental overriding of variable used
elsewhere.

4.  Use <cfproperties> and Hints within <cffunction> and <cfargument> to
document your cfc.

Andy

-----Original Message-----
From: Ian Skinner [mailto:[EMAIL PROTECTED]
Sent: Tuesday, June 10, 2003 12:25 PM
To: CF-Talk
Subject: CFC Newbie Discussion.


I'm experimenting with my first CFC.  I've written these simple example
files.

*** test.cfc ***
<cfcomponent displayname="My First CFC" hint="A trial CFC">
        <cfset this.X = 10>
        <cfset this.Y = 15>

        <cfset A = 5>
        <cfset B = 3>

        <cffunction name="multiplyXY" access="public" returntype="numeric">
                <cfset myResult = this.X * this.Y>
                <cfreturn myResult>
        </cffunction>

        <cffunction name="multiplyAB" access="public" returntype="numeric">
                <cfset myResult = A * B>
                <cfreturn myResult>
        </cffunction>
</cfcomponent>
*** end ***

*** test.cfm ***
<cfobject name="testObj" component="test">
<cfdump var="#testObj#">

<cfset this.X = 12>
<cfset this.Y = 24>

<cfset A = 21>
<cfset B = 32>

<cfinvoke component="#testObj#" method="multiplyXY" returnvariable="joe"/>
<cfinvoke component="#testObj#" method="multiplyAB" returnvariable="sam"/>

<cfinvoke component="test" method="multiplyXY" returnvariable="joe2"/>
<cfinvoke component="test" method="multiplyAB" returnvariable="sam2"/>

<cfoutput>
        #testObj.X# * #testObj.Y# = #joe#<br>
        #testObj.X# * #testObj.Y# = #testObj.multiplyXY()#<br>
        #this.X# * #this.Y# = #this.X * this.Y#<br>
        <br>
        #sam#<br>
        #testObj.multiplyAB()#<br>
        #A * B#<br>
        <br>
        #joe2#<br>
        #sam2#<br>
</cfoutput>
*** end ***

What I would like to discuss is the performance differences between the
various component methods I've tested here.

In the CFC code, the X and Y variables are in the "this" scope and the A and
B variables are in the default "variable" scope.  What are the differences
between these practices other then the X and Y are available as properties
of an object (obj.X and obj.Y).

Then in the CFM code I accessed the component a couple different ways.  I
first used a <cfobject> tag to "instantiate" an instance of the component as
a object variable "testObj".  I then accessed the methods of that instance
with a <cfinvoke> on testObj and directly [testObj.method()].  Finally I
just accessed the methods of the component directly with <cfinvoke>.

I would like to discuss the pros and cons of these different practices and
when one might be better then another.  Also, I remember reading about some
kind of scope bug involving CFC's, but since I wasn't really familiar with
CFC's at the time, I really didn't understand what I was reading.  What
would this be about?

Thank You

--------------
Ian Skinner
Web Programmer
BloodSource
Sacramento, CA


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
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
                                

Reply via email to