Un'altra tecnica molto comoda quando si parla di
"defensive programming" è la cosiddetta "programmazione funzionale".
Vediamo lo stesso programma di prima, però adattato a questa nuova
tecnica.
Program Programma;
const ErrEmptyStrValue = 1;
function ReadString(Label : String;var S : String;var ErrOut: Integer) :
Boolean;begin write(Label+': '); readln(S);
Result := S <> ''; if Not Result
then ErrOut :=
ErrEmptyStrValue;end;function GetFirstName(var S: String;var
ErrOut : Integer);begin Result := ReadString('First
name',S,ErrOut);end;procedure GetLastName(var S : String;var ErrOut:
Integer);begin Result := ReadString('Last
name',S,ErrOut);end;var FName,LName :
String; ErrorOut : Integer;
begin if GetFirstName(FName,ErrorOut) then
begin if GetLastName(LName,ErrorOut)
then begin
write('First name is '''+FName+' '' and Last name is
'''+LName+''''); end;
end;end.
Qui...