AntonioGanci

Il blog di Antonio Ganci
posts - 201, comments - 420, trackbacks - 31

Utilizzare il concetto dell'Ortogonalità per migliorare la qualità del proprio software

orthogonal

L'Ortogonalità è un concetto critico se si vogliono produrre sistemi software che siano semplici da progettare, sviluppare, testare ed estendere.

In geometria due rette sono ortogonali se la loro intersezione forma un angolo di 90° gradi, in termini vettoriali si dice che sono indipendenti.

Nel campo informatico l'ortogonalità indica disaccoppiamento. In un software ben progettato il codice che accede al database è ortogonale alla user interface, cioè possono modificare la user interface senza dover toccare il database e viceversa. Maggiori dettagli li potete trovare nel libro The Pragmatic Programmer nel capitolo Orthogonality.

Questo concetto si può applicare a diversi livelli, tra assembly, namespace, classi, metodi, ecc.

Per tenere sotto controllo le dipendenze tra assembly utilizzo il tool NDepend il quale crea un grafico che le visualizza e fornisce alcune metriche che aiutano ad individuare le parti del nostro sistema più accoppiate. A questo link un esempio del report sul .NET framework 2.0.

A questo punto rilassatevi fate un respiro profondo e svuotate la vostra mente, sto per parlare di Java, attenzione ai cardiopatici è sconsigliato continuare la lettura della parte seguente.

In Java la direttiva import ha una funzione simile alla using del C#, ma a differenza di quest'ultima permette di specificare anche una singola classe.

Vediamo un esempio pratico:

import java.io.FileWriter;

java.io è il namespace, a differenza di .NET la coding convention suggerisce di scriverli camel case per distinguerli dal nome della classe (lo so che non vi piace, ma ve l'ho detto di non leggere), mentre FileWriter è il nome della classe che può essere utilizzata dal codice, quindi se io provassi ad usare la classe BufferedWriter del namespace java.io otterrei un errore in fase di compilazione.

Se non voglio indicare il nome la classe posso scrivere:

import java.io.*;

Se come convenzione si utilizzasse sempre il primo metodo, ecco che ho un controllo molto efficace delle dipendenze, leggendo solo la parte iniziale del file sorgente senza dover guardare i dettagli interni della classe.

Mi piacerebbe che nella prossima versione del C# venisse aggiunta la possibilità di poter scrivere qualcosa del tipo:

using System.Collections.ArrayList;

Per poter specificare al compilatore che del namespace System.Collections utilizzerò solo la classe ArrayList.

Secondo me aiuterebbe a prestare più attenzione alle dipendenze soprattutto quelle non strettamente necessarie, charamente è un'operazione piuttosto noiosa da fare manualmente, ma con tool come Resharper sarebbe molto meno oneroso.

Print | posted on giovedì 17 agosto 2006 15:28 |

Feedback

Gravatar

# re: Utilizzare il concetto dell'Ortogonalità per migliorare la qualità del proprio software

Il TDD aiuta certamente nel considerare l'ortogonalità, ma bisogna vedere a che livello si guarda questa ortogonalità.
Mi spiego meglio se ho sviluppato in TDD la logica di business non significa che questa sia ortogonale alla user interface, anche perchè quest'ultima difficilmente la si sviluppa in TDD.
Quindi ogni tecnica che esplicita la dipendenze aiuta a progettare meglio le proprie applicazioni.
17/08/2006 18:30 | Antonio Ganci
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET