Programmazione generale
Questa sezione comprende i post di programmazione "per sè"

Mi riallaccio al post di Raffaele inerente l'idea che chi dice no per principio ad Internet Explorer 7 sia ignorante riguardo(vale a dire, non sia a conoscenza di) la struttura componentizzata di Internet Explorer e di tutte le "cose" che IE fa. E' ciò assolutamente vero? E' solo questa l'unica possibile spiegazione? Non credo proprio, e spiego subito perché. Raffaele stesso parla del più grande limite di Windows, cioè che molte sue parti sono basate proprio su Internet Explorer. Perché è un limite? Molto semplicemente, perché se c'è un errore nel browser, questo si propaga a tutto il sistema ed a tutte...

Le eccezioni vanno sempre gestite? Secondo me, non sempre. Il perché è presto detto: Perché non tutti i progetti sono uguali: un progetto che deve essere usato da un programmatore, per esempio, potrebbe non gestire alcune eccezioni, o semplicemente mostrare un messaggio di avvenuta eccezione Perché finché si è in fase di sviluppo o test, si potrebbero non considerare casi "specifici" oppure non accorgersi di certi errori finché non è troppo tardi(penso ad esempio ai casi non troppo comuni ma nemmeno da probabilità 1 su 1 miliardo ) Cosa fare...

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...

Cos'è la programmazione difensiva? E' una tecnica che rende i programmi più facili da scrivere e mantenere. Tanto per fare un esempio, uno stupidissimo programma in Pascal. Program Programma; procedure ReadString(Label : String;var S : String); begin write(Label+': '); readln(S); end; procedure GetFirstName(var S: String); begin ReadString('First name',S); end; procedure GetLastName(var S : String); begin ReadString('Last name',S); end; var FName,LName : String; begin GetFirstName(FName); GetLastName(LName); write('First name is '''+FName+' '' and Last name is '''+LName+''''); end. Ecco, questo programma illustra bene quello che intendo. Anzitutto, c'è una procedura(per i ragazzi abituati al C: una void function) che prende due parametri: una etichetta di tipo stringa che rappresenta il messaggio...

Sto valutando oggi(e nei prossimi giorni) una serie di OPF. Cosa è un OPF e a cosa serve? E' uno strumento in grado di mappare le classi business sul database senza dover scrivere query, codice di collegamento, e tutte queste cose qui che sono sinceramente abbastanza noiose. concentrandosi sulle caratteristiche dell'applicazione. Serve dunque a semplificare lo sviluppo... ma siamo sicuri? Il problema principale di questo genere di strumenti, infatti, è proprio questo: la quantità di codice da scrivere, in molti casi si sposta da quanto detto prima ad altri ambiti, come la mappatura delle classi ad esempio. Voi li usate gli OPF? Se si, quali? Aggiornamento: pare...