>>I think I would use:
>>
>>
>>
do case
>> case not this.HaveCar()
>> case not this.HaveLicense()
>> case this.isDrunk()
>> case this.isTired()
>> case this.getCar().getTank().isEmpty()
>> otherwise
>> lCanDrive=.t.
>>endcase
>>
>>I guess there as many ways as programmers <g>
>
>Not that many ways. I think I side with you that IsDrunk(), IsTired(), and so on are better ways.
I actually never use this approach :).
It's only that I liked it when I saw it in YAG's code, and thought that if I ever needed something like that, I'd probably go that way. It just happened that I didn't need it, and that the framework (i.e. my boss) prefers separate IFs - in case someone else needs to read my code. So in my current style, the above would be:
l=.t.
l= l and this.HaveCar()
l= l and this.HaveLicense()
...
if not l
endif
return l
I know, this relies on VFP not executing any code past the point where l becomes .f., but I think the fears that this may change are unbased. The short logic hasn't changed since 1988, then why should it ever change?