Sfondo
Ho incontrato questo problema perché attualmente sono stagista presso la divisione software locale di una grande azienda. Mi è stato affidato il compito di estendere un progetto su cui hanno lavorato diversi stagisti precedenti (non collettivamente ma in modo sequenziale). Il progetto è scritto in C # ed è uno strumento relativamente semplice (base di codice di circa 10.000 righe)
Il problema
Il primo stagista ha iniziato a scrivere lo strumento utilizzando praticamente solo elenchi e ignorando il fatto che l'impostazione di strutture di dati (come gli oggetti) rende lo strumento molto più estensibile e leggibile. Gli stagisti che sono venuti dopo non si sono preoccupati di cambiarlo e invece si sono basati sullo strumento nello stesso modo. Ciò ha portato a un paio di metodi massicci (+700 linee), molte variabili globali (la maggior parte delle variabili erano globali) e un'organizzazione davvero pessima.
Il mio approccio
Ho speso innumerevoli ore nel debugger per comprendere la logica del codice e avere (per la maggior parte) un'ottima prospettiva su di esso. Ho scritto le strutture dei dati richieste e sto organizzando e riscrivendo le porzioni "black box" del codice per poter aggiungere una nuova funzionalità senza spendere +2 settimane cercando di capire cosa sta succedendo. Lo sto facendo non solo per la mia sanità mentale, ma per lo stagista che verrà dopo di me. Cerco costantemente di concentrarmi sulla leggibilità e la semplicità evitando soluzioni brevi, efficaci, ma leggermente esoteriche per un altro stagista. Sto seguendo la progettazione OOP generale e sto cercando di evitare le insidie che derivano dal credere ciecamente che un certo metodo è il metodo migliore senza ricercarlo e capire perché e come è applicato. Mi sto appoggiando pesantemente ad un approccio top-down in termini di design e di come verrà definito il flusso di esecuzione in quanto sembra essere più facile per gli altri comprendere e interiorizzare rapidamente, ma sono aperto a suggerimenti per approcci o metodologie alternativi.
La domanda
Come potrei fare per bilanciare il mio desiderio di scrivere un buon codice e scrivere codice è comprensibile a uno stagista relativamente non addestrato (l'assunto è che stanno perseguendo una laurea in informatica ma sono ancora a scuola) pur avendo buone prospettive per il futuro in termini di estensibilità?
Qualsiasi aiuto è molto apprezzato