I don't see anything wrong with creating global variables for the purpose of offering default values. Only if it's a value that needs careful preservation or should be saved from session to session, it would be preferrable to save it somewhere (e.g. in a dictionary or a system var - or perhaps, for cross-session use, in the registry).
I'd just add that if you want to use global variables, its a good idea to use informal namespaces. The name of your routine is a good choice for the informal namespace.
For example, say you have a routine called "MYTWEEK". This routine asks for user input , and you want to store it in a global variable named *AREA*. Obviously, being somewhat generic, you might have problems with other routines also trying to use a global variable named *AREA*. A good way to prevent this is to name your global variable *MYTWEEK:AREA*. A different program named FUNKYTOWN might also use a similar global variable, but would instead call it *FUNKYTOWN:AREA*.
This is called using an "informal namespace". It is called "informal" because the use of the namespace is not parsed or enforced by the Lisp interpreter in any way. The colon in the variable name is not any sort of special syntax, it is treated just like any other letter. But chances of having a global variable named *MYTWEEK:AREA* in two different programs are slim indeed; much slimer than two programs both trying to use the global variable *AREA*.
At one point, I also posted
this rough guideline about various ways to store user data in programs.