>I have read in several messages, including some in reponse to my own inquiries, that use of public variables is not good practice. If so, what are the primary reasons?
There are several reasons. From the practical side, PUBLIC variables are subject to accidental changes in value as a result of accidental side effects; a PUBLIC variable is visible in any procedure or method, and with the habit of many VFP programmers to do an assignment to a variable on the fly (if it doesn't exist, VFP creates it with a scoping of PRIVATE), the value can be changed unexpectedly. You can control the scoping and visibility of things much better with LOCAL/PRIVATE variables and member properties of objects.
It's tough to track down side effects that alter PUBLICs.
From an OOP theory standpoint, PUBLIC variables are not desirable because of scoping and encapsulation issues.