The long answer on when to use a function vs command
Thomas McGrath III
3mcgrath at adelphia.net
Wed Mar 15 10:13:01 EST 2006
Ken, Jac, Andre, and Phil,
In the past I have only used functions for mathematical equations and
not much else. I tend to use commands(handlers) for everything.
I didn't know about the 'send in time' issue with functions, thanks
Andre.
I didn't think about the noun usage which seems sound.
I usually considered functions to be small little things but am not
sure if that is fair or right.
I am curious as to any other unique aspects that could affect a
decision on which to use in different situations.
Functions are normally used with a 'put' or 'get' -- Is this true?
Commands are normally used alone (with/without a parameter) but not
usually with a get or put -- Is this true?
Is one more friendly with a lot of parameters? -- enough params that
you would need a switch/case
If you have a function to get some info on an object like:
put getObjInfo("objName") into field "Info"
Would you use a command to set that info like: -- or should this be a
function too? -- (ignore the cust prop aspect for now)
setObjInfo "Fun"
or
getObjVis() -- function
setObjVis true -- command
getObjPosition() -- function
setObjPosition 34,5 -- command
Is get and set a good indicator of wether they should be functions or
commands?
Thanks
Tom
On Mar 15, 2006, at 1:39 AM, Phil Davis wrote:
> Hi Tom,
>
> Here are some simple ways I figure out whether to use a command or
> a function in a given situation.
>
> A function name can naturally take on the role of a noun in a
> sentence. Or in RunRev terms, it can naturally fill the role of a
> containerName. A good function name can really improve the
> readability of the code in those places where it is used.
>
> put selectedTunes() into fld "tuneList"
> put cardObjectIDs("firstCard") into tObjectList
> if errorCount() > 3 then...
>
> In each of the above cases, a function name takes the place of a
> subprocess that is probably secondary to the purpose of the calling
> handler. That secondary code is moved to a place of its own, where
> it can be appreciated for its value instead of cursed as a
> distraction, as it might be if it were coded inline. Without
> functions, code would be a lot harder to read.
>
>
> A command name can be a short imperative sentence without the spaces:
>
> refreshMembersList
> closeCurrentScreen
> startMotor
> moveRobotArm "left",5 -- this one has 2 parameters
>
> If at a given spot in your code, you can describe what needs to be
> done in a short sentence like the ones above, a command will
> probably serve well in that spot.
More information about the use-livecode
mailing list