in reply to Re: Avoiding global object handle
in thread Avoiding global object handle

Accessing the global handle through a subroutine makes it much harder to accidentally clobber it. (Further, it makes clear to anyone reading your code that $handle has a well-defined value that doesn't change, which is kind of nice for maintenance programmers.)

In general, I'm a big fan of wrapping related scope-specific variables in a singleton class, just because it makes domain control so much easier. This works best in very specific cases, where you don't see much potential for partial code reuse, because you're coupling all the code that depends on the singleton. It becomes correspondingly harder to pull out individual functions from that scope and use them elsewhere, because you have to pull out the singleton as well (which probably doesn't fit your new problem perfectly). In Biker's situation, this might be a good fit.

--
:wq

Replies are listed 'Best First'.
Re: (FoxUni) Re(2): Avoiding global object handle
by Anonymous Monk on Mar 26, 2002 at 17:56 UTC
    I'm speaking, of course, of when it's best fit to use a variable/subroutine instead of some other technique.

    Accessing the global handle through a subroutine makes it much harder to accidentally clobber it.

    True. I didn't think of that, especially since he uses it as foo()->bar, and it's hard to modify it that way. I don't think there's a high risk of accidently modifying this particular variable, but I see your objection.

    (Further, it makes clear to anyone reading your code that $handle has a well-defined value that doesn't change, which is kind of nice for maintenance programmers.)

    By convention you name those variables in upper-case, so in this case it would be $HANDLE instead. There should be no larger question marks regarding that issue.

    I think that the small risk of clobbering the variable is out-matched by the warning feature of variables. It helps to keep code clean, and that is something maintainers also appreciate. I hate seeing unused subs/variables just because the author was too afraid/paranoid to remove them.

    Cheers,
    -Anomo