[xquery-talk] Are declared variables a bad thing?

Ryan Grimm grimm at xqdev.com
Mon Jan 7 01:11:36 PST 2008

Hi Tim,

You're right, global variables are nasty things in procedural  
languages.  Those that have spent a large amount of time in perl or  
javascript (both declare variables in the global scope by default)  
know all too well the bugs that global variables can cause.  I've  
spent a good chunk of time in both of those languages so global  
variables generally frighten me.

However, in XQuery I see things a little bit differently.  Global  
variables frequently create bugs when their values are modified  
somewhere in the code.  Because you can't modify the values of  
variables in XQuery, the use of declared variables (aka global  
variables) isn't nearly as dangerous.

So in my mind it's mostly a question of style.  If you're going to  
have a number of them declared over many modules, you might want to  
consider namespacing them just to avoid collisions.


On Jan 7, 2008, at 12:40 AM, Tim Finney wrote:

> Dear XQueryers,
> This is a philosophical question.
> Once during my computer studies I was told (paraphrasing) "Global
> variables are bad. Bad, bad, BAD!"
> Why? It is bad style, making for buggy, opaque code and harder program
> maintenance.
> XQuery has the variable declaration block. Whenever I declare a  
> variable
> there, memories of the old injunction come back--"Bad, bad, BAD!" In  
> an
> effort to maintain self-respect as a programmer, I do perverse things
> like write functions to get at declared variables so that notional
> future programmers will be able to better understand my code.
> Did the Makers of XQuery forget their computer science lessons when  
> they
> came up with the variable declaration block? Is it bad style in the
> XQuery world to use declared variables directly in functions and
> queries? Is this a case of needing to forget wisdom from the  
> procedural
> world? Are declared variables a good and necessary thing in the
> functional world?
> Yours,
> Tim Finney
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk

More information about the talk mailing list