Alexander Rabtchevich wrote:
>       Raphaël, could you please explain me (I'm new to scheme) in a few 
> words, why the global variables are poor style coding?

Global variables can lead to bugs if not used carefully. The use of global 
variables in Script-Fu is particularly bad since all scripts are read in to a 
single namespace. A global variable defined in one file can be altered by code 
in another file without the need to use a Scheme equivalent of a C extern 
declaration. Everything will seem ok until you add another script file from 
somewhere that happens to use a global variable with the same name as a global 
defined in another file.

Problems can also arise when two files have global functions with the same 
name but different behaviour. This sort of problem has been seen even amongst 
the scripts shipped with GIMP. It is why you now see the use of locally 
defined functions rather than global ones in most scripts. For an example, 
look at the alien-glow-arrow.scm file.

> But the inability to use global 
> variables along with scheme syntaxes leads to a good deal of parentheses 
> which could be a problem to a programmer.

When you understand the syntax of the language, the use of local variables 
instead of global doesn't have any significant impact on the number of 
parentheses in a script.

If someone is afraid of the parentheses they shouldn't be trying to use 
Scheme. :-) More likely the fear of parentheses is caused by badly formatting 
the Scheme code (ie. lack of whitespace). Always putting the closing brackets 
for statements at the end of a single line leads to wasting a lot of time 
counting brackets.


Kevin.           |"What are we going to do today, Borg?"
Owner of Elecraft K2 #2172      |"Same thing we always do, Pinkutus:
                                 |  Try to assimilate the world!"
#include <disclaimer/favourite> |              -Pinkutus & the Borg
Gimp-developer mailing list

Reply via email to