Sono state poste molte domande sulla natura dell'elegante codice e design, ma l'ipotesi sottostante sembra essere che l'eleganza è una buona cosa . Pertanto è accettabile o addirittura desiderabile fare uno sforzo in più per creare soluzioni eleganti.
Ma ne vale davvero la pena?
Non sto chiedendo cosa sia elegante; né sto chiedendo del buon codice. Presumo che "lo sai quando lo vedi", e può anche essere vagamente caratterizzato dalla verifica che non è rimasto nulla da togliere, nel senso che il modello mentale che hai nella tua mente è espresso direttamente e non oscurato nel lingua di tua scelta (linguaggio di programmazione, progettazione orientata agli oggetti, schema relazionale, ecc.), senza distrazioni.
Tuttavia, un corollario ad esso è che l'eleganza è sempre relativa (e in un certo senso soggettiva); dipende da cosa pensi che sia il problema e come dovrebbe essere la soluzione. Il problema, naturalmente, è che il dominio del problema e la sua comprensione di esso cambiano costantemente (in aggiunta, la tua conoscenza del linguaggio / dei modelli / degli strumenti di programmazione si sviluppa, ma non è ciò di cui sono principalmente preoccupato).
Questo implica che per mantenere il tuo design elegante, devi ripensarlo costantemente man mano che il problema / il suo sviluppo si evolve. In pratica, fare ciò comporterebbe un refactoring quasi infinito.
Inoltre, sostengo anche che, sforzandosi di sviluppare soluzioni eleganti, la manutenibilità necessariamente soffre. Le soluzioni più eleganti sono le più strettamente collegate al dominio del problema, perché se non lo fossero, allora ci sarebbe qualcosa da togliere, quindi non sarebbero più eleganti. Se c'è qualcosa di abbondante nella tua soluzione, allora puoi semplificarlo e renderlo più elegante rimuovendo quella parte abbondante, vero?
Ma poi, a volte, quando hai un design davvero elegante e devi implementare un cambiamento, devi prima "svitare" la tua soluzione, solo per essere in grado di fare un imprevisto (come la maggior parte di loro) cambiare affatto. Tuttavia, il principio aperto / chiuso afferma che ciò non dovrebbe essere necessario. Quindi, un'altra formulazione più concreta della domanda è:
In una certa misura, non sono l'eleganza e il principio di apertura / chiusura in contrasto tra loro?
Che ne pensi?