Quando eseguo il design per un compito, continuo a combattere questa sensazione fastidiosa che, a parte il fatto di essere una struttura generale, alla fine sarà più o meno ignorata. Ti darò un esempio:
Stavo scrivendo un frontend per un dispositivo che ha operazioni di lettura / scrittura. Aveva perfettamente senso nel diagramma di classe per dargli una funzione di lettura e scrittura. Tuttavia, quando si è trattato di scriverli realmente, mi sono reso conto che erano letteralmente la stessa funzione con una sola riga di codice modificata (chiamata di funzione di lettura e scrittura), quindi per evitare la duplicazione del codice ho finito per implementare una funzione do_io con un parametro che distingue tra operazioni. Addio design originale.
Questo non è un cambiamento terribilmente dirompente, ma succede spesso e può accadere anche in parti più critiche del programma, quindi non posso fare a meno di chiedermi se c'è un punto per disegnare più dettagli di uno schema generale, a almeno quando si tratta dell'architettura del programma (ovviamente quando si specifica un'API si deve scrivere tutto fuori).
Questo potrebbe essere solo il risultato della mia inesperienza nel fare design, ma d'altra parte abbiamo metodologie agili che dicono "rinunciamo a pianificare molto più avanti, tutto cambierà comunque tra qualche giorno", che è spesso come mi sento.
Quindi, come esattamente dovrei "usare" il design?