Hi Arnon ---
>Naming conventions additions
>
>Object properties also follow the same rule you specified for fields (i.e no scoping)
>
>array's have an a instead of type (as in laMyArray)
>
I forgot to include that one but that's also my way to approach arrays. Sometimes, if I am not going to have PUBLIC variables, I'll leave out the scoping in the variable name, ie., aMyArray and not laMyArray. On the other hand, I will 99.9% of the time follow a "table.column" field convention, always scoping the field.
>
>if there is a good chance that sub-classes will need to add code to a method
>I add a PreMethod method that is called before the method is executed
>as in :
>
>PROCEDURE SomeMethod
> LOCAL llContinue
> llContinue=this.PreSomeMethod()
> if llContinue
> * code
> endif
>ENDPROC
>
>this way the subclass can do some more process and also override the default action
>
I do something similar to this. In my Save methods (usually scoped to form class) for saving table data I always add a call to a method I generally call "LocalValidate". It defaults to "RETURN (.T.)" at the parent class but can be used in each instance for data validation and return a logical. The results are handled by superclass code.
>
>I try to have properties that affect the object state protected (or HIDDEN) and handle them via SET and GET methods (in VFP6 I am moving this to ACCESS and ASSIGN methods)
>
I haven't developed an ACCESS and ASSIGN strategy yet. Can you post some examples of how you've put them to realworld use when you do?
------------------------------------------------
John Koziol, ex-MVP, ex-MS, ex-FoxTeam. Just call me "X"
"When the going gets weird, the weird turn pro" - Hunter Thompson (Gonzo) RIP 2/19/05