PRIVATE pcSetTalk pcSetTalk = SET("TALK") SET TALK ON IF Condition REPLACE FIELD WITH VALUE IN TABLE FOR CONDITION ELSE REPLACE FIELD WITH VALUE IN TABLE FOR OTHERCONDITION ENDIF SET TALK &pcSetTalk RETURNIf I returned inside the IF, I'd never get the SET TALK back to the previous setting, or I'd have to remember to set it when I returned.
PRIVATE pcSetTalk pcSetTalk = SET("TALK") SET TALK ON IF Condition REPLACE FIELD WITH VALUE IN TABLE FOR CONDITION RETURN CLEANUP() ELSE REPLACE FIELD WITH VALUE IN TABLE FOR OTHERCONDITION ENDIF DO SOMETHINGELSE RETURN CLEANUP() FUNCTION CLEANUP SET TALK &pcSetTalk ENDFUNCHere's what I do.
LOCAL llOK IF VARTYPE(m.tcParm1)="C" IF SOMETHING LOCAL m.loSetTalk m.loSetTalk = CreateObject("SETTALK") SET TALK ON REPLACE FIELD WITH "VALUE" FOR Condition = .T. RELEASE m.loSetTalk m.llOK = .T. ELSE llOK = .F. ENDIF ENDIF RETURN m.llOKAnything known to cause a failure will be handled right up front. This leaves the meat of the problem clearer.
LPARAMETERS tcParm1 IF VARTYPE(m.tcParm1)#"C" RETURN .F. ENDIF IF NOT SOMETHING RETURN .F. ENDIF LOCAL llOK llOK = .T. LOCAL m.loSetTalk m.loSetTalk = CreateObject("SETTALK") SET TALK ON REPLACE FIELD WITH "VALUE" FOR Condition = .T. RELEASE m.loSetTalk RETURN m.llOK>Continuing PeterDeV's quest towards a set of 'excellent coding standards'...