I programmatori migliori usano meno IF/SWITCH (codice di esempio)



     Ecco un esempio con le 2 implementazioni a confronto: Esempio di codice con e senza IF/SWITCH

     Ecco altri esempi qui: Codice Anti-If di esempio








Print | posted @ lunedì 30 marzo 2009 0.52

Comments on this entry:

Gravatar # re: I programmatori migliori usano meno IF/SWITCH (codice di esempio)
by Luca Minudel at 30/03/2009 0.58

@Antonio
L'esempio che hai chiesto é il primo

@Raffaele
Ecco degli esempi di codice.
In questi casi non mi sembra una "riduzione a tutti i costi" che anch'io reputo sbagliata, sono invece applicazioni di skill acquisiti

Se trovi il tempo e l'occasione di dice come F# avrebbe aiutato in questi casi sei il benvenuto visto che hai provocato la mia curiosita :)
  
Gravatar # re: I programmatori migliori usano meno IF/SWITCH (codice di esempio)
by Davide Mauri at 30/03/2009 1.42

Io ho la mia idea su come definire l'approcio di chi scrive le 57 righe di codice al posto delle ottimali 8: community.ugiss.org/.../brute-force-coding.aspx
L'ho scritta avendo in mente il codice SQL, ma direi che si può estendere a qualsiasi linguaggio.
  
Gravatar # re: I programmatori migliori usano meno IF/SWITCH (codice di esempio)
by Antonio Ganci at 30/03/2009 8.59

Bella la prima implementazione!
Migliorerei la leggibilità di questa riga di codice:
> Point moveDirection = (Point)moveCommand.Direction * Math.Sign(moveCommand.Steps);

Anzichè Point userei la classe Vector2d (o anche solo Vector ma non è chiaro che è composto da due elementi).
Diventerebbe così:

Vector2d moveDirection = Vector2d.From(moveCommand.Direction).MultiplyBy(moveCommand.Steps).Normalize();

Nel codice precedente IMHO si davano troppe cose per scontato.
Cosa ne pensi?
  
Gravatar # re: I programmatori migliori usano meno IF/SWITCH (codice di esempio)
by Luca Minudel at 30/03/2009 9.30

@Antonio

concodo - un dubbio su normalize che magari é troppo matematichese - ma giusto per dire
  
Gravatar # re: I programmatori migliori usano meno IF/SWITCH (codice di esempio)
by Luca Minudel at 30/03/2009 13.39

@Davide

"Brute Force" mi evoca l'uomo primitivo - nome azzeccato :)
  
Gravatar # re: I programmatori migliori usano meno IF/SWITCH (codice di esempio)
by Raffaele Rialdi at 30/03/2009 14.19

Come dicevo, lo switch mappa molto bene e spesso sul polimorfismo e infatti uno degli esempi è proprio quello.
L'altro esempio è un 'classico' :)
Non è purtroppo sempre così facile.

Per quanto riguarda l'esempio F#, leggi questo thread:
blogs.msdn.com/.../...e-numeri-pari-e-dispari.aspx

Anche la soluzione funzionale con C# è ovviamente 'de-iffizzata' in quanto è la logica funzionale a rendere cicli (che implicitamente includono degli if) e controlli non imperativi.

Va da se che anche in F# hai la necessità di eseguire gli if (cosa ovvia visto che le comparazioni sono una delle poche cose che una CPU sa fare). Il vantaggio è il partizionamento dei linguaggi funzionali.
  

Your comment:

Title:
Name:
Email:
Website:
 
Italic Underline Blockquote Hyperlink
 
 
Please add 7 and 6 and type the answer here: