>I'm not sure which is better in terms of memory management. In terms of OOP, neither is appropriate IMO. You're trying to emulate the old dBASE procedure library. The correct way to do this IMO is to build the class library into your application and then instantiate objects and call methods as needed.
>
>If you really want SET PROCEDURE behavior, that's still available to you, no need to use a class or object at all.
Yes and no. The only wrong thing about this is the name (and implied purpose), "Common". Describes the availability and not what does it do.
But other than that, if these things were logically grouped into classes, that's the commonly used singleton pattern.
And the answer to Dmitri: you can actually do both:
oapp.newobject("oThing", "mythingclass","mythingclass.prg")
public oThing
oThing=oApp.oThing
Just watch it when you release them - release the public variable before you release oApp.