Superare la manutenzione di un pacchetto software

1

Recentemente sto usando un pacchetto software che sembra abbastanza utile, ma che non capisco come funzioni internamente.

Questo pacchetto contiene software generato da diversi dottorandi e docenti di un'università tra diversi anni, che si riflette nello stile del codice. Ci sono diversi articoli relativi a pezzi di questo software, che ho letto ma, ancora, non sono sicuro di averli capiti correttamente.

Ho deciso di guardare all'interno del codice sorgente per capire cosa e come funziona:
Il pacchetto manca di test, a volte ci sono funzioni definite che il linguaggio di programmazione ha già implementato (è R se questo è importante), o due funzioni con funzionalità di sovrapposizione, diversi modi di notifica all'utente (usa message , cat o write ) e funziona con 30 parametri. Ho trovato anche alcuni errori nelle funzioni (usando un nome di variabile che è lo stesso di un nome di funzione di base invece di un nome di variabile definito all'interno della funzione). O definisce una nuova classe ma non definisce i metodi per tale classe, rendendo così molte righe di codice duplicate.

Ho continuato a cercare di capire il pacchetto e migliorare la sua coerenza, ho iniziato unificando lo stile e aggiungendo test (la prima volta utilizzando i test), ma poiché non sono sicuro dell'output atteso, sto solo testando i risultati dà per ogni opzione, o per la struttura. Dopo un po 'di tempo vorrei iniziare a modificare alcune funzioni e verificare con il test già scritto che non si rompono.

Che altro dovrei fare per migliorare il pacchetto e la mia comprensione di esso? Come posso migliorare in modo efficace la mia comprensione del pacchetto?

    
posta llrs 11.12.2016 - 12:14
fonte

1 risposta

3

La missione

Hai un bel pacchetto software creato da persone diverse, per un periodo più lungo (in cui il linguaggio R si è evoluto, introducendo funzioni che dovevano essere inizialmente programmate da zero) e che ovviamente non segue il principio di codice pulito.

Quindi si è tentati di ridefinirlo e di armonizzare lo stile del codice.

La sfida

Non comprendi pienamente come funziona.

Non puoi non riuscire a prevedere i risultati attesi, dato che non sei completamente padrone del soggetto.

Il consiglio

Sembra molto ambizioso iniziare immediatamente con un importante refactoring in queste condizioni.

In primo luogo dovresti iniziare in modo più modesto, aumentando la tua comprensione. Quindi inizia a creare una suite di test affidabile per il software e i suoi componenti principali, senza toccare l'interno.

Esegui il codice con la tua suite e verifica eventuali errori nella suite di test per capire se si tratta di un problema nella tua suite, nei dati di test o nel codice corrente.

Una volta che sei lì, puoi prendere in considerazione l'avvio del refactoring, testando sempre le modifiche con la tua ampia suite di test. Quindi almeno puoi verificare che non stai rompendo (cioè producendo risultati diversi) il codice funzionante.

Cogli l'opportunità di aggiungere più test unitari durante il refactoring, per evitare che il tuo successore si troverà nello stesso tuo caso.

    
risposta data 11.12.2016 - 16:42
fonte

Leggi altre domande sui tag