Non scrivo davvero grandi progetti. Non sto gestendo un enorme database o gestendo milioni di righe di codice.
Il mio codice è principalmente roba di tipo "scripting" - cose per testare funzioni matematiche o per simulare qualcosa - "programmazione scientifica". I programmi più lunghi su cui ho lavorato fino a questo punto sono circa duecento righe di codice e la maggior parte dei programmi su cui lavoro sono circa 150.
Anche il mio codice è una schifezza. Me ne sono reso conto l'altro giorno mentre cercavo di trovare un file che ho scritto qualche tempo fa, ma che probabilmente ho sovrascritto e che non uso il controllo della versione, il che probabilmente sta facendo rabbrividire un gran numero di voi per la mia stupidità.
Lo stile del mio codice è contorto ed è pieno di commenti obsoleti che notano modi alternativi per fare qualcosa o con righe di codice copiate. Mentre i nomi delle variabili iniziano sempre molto bene e descrittivi, quando aggiungo o cambio cose come per esempio, qualcosa di nuovo che qualcuno vuole testato, il codice viene sovrapposto e sovrascritto e perché sento che questa cosa dovrebbe essere testata rapidamente ora che ho un framework, comincio a usare nomi di variabili scadenti e il file va al piatto.
Nel progetto a cui sto lavorando ora, sono nella fase in cui tutto questo sta tornando per mordermi in grande stile. Ma il problema è (a parte l'utilizzo del controllo versione e la creazione di un nuovo file per ogni nuova iterazione e la registrazione di tutto in un file di testo da qualche parte, il che probabilmente aiuterà drammaticamente la situazione) Non so davvero come procedere con il miglioramento il mio attuale stile di programmazione.
Il test unitario è necessario per scrivere piccoli pezzi di codice? Che ne dici di OOP? Quali tipi di approcci sono utili per scrivere rapidamente codice pulito e buono quando si fa "programmazione scientifica" anziché lavorare su progetti più grandi?
Faccio queste domande perché spesso la programmazione stessa non è super complessa. È più sulla matematica o sulla scienza che sto testando o facendo ricerche con la programmazione. Ad esempio, è necessaria una classe quando due variabili e una funzione potrebbero probabilmente occuparsene? (Considera che queste sono anche situazioni in cui si preferisce che la velocità del programma sia più rapida - quando stai eseguendo più di 25.000.000 di passi temporali di una simulazione, vorrai che lo sia.)
Forse questo è troppo ampio e, in tal caso, mi scuso, ma guardando i libri di programmazione, sembrano spesso essere indirizzati a progetti più grandi. Il mio codice non ha bisogno di OOP, ed è già piuttosto breve quindi non è come "oh, ma il file verrà ridotto di mille righe se lo facciamo!" Voglio sapere come "ricominciare" e programmare in modo pulito questi progetti più piccoli e veloci.
Sarei felice di fornire dettagli più specifici, ma più il consiglio è generale, più utile credo. Sto programmando in Python 3.
Qualcuno ha suggerito un duplicato. Consentitemi di chiarire che non sto parlando di ignorare apertamente gli standard di programmazione standard. Chiaramente, c'è una ragione per cui esistono questi standard. D'altra parte, ha davvero senso scrivere un codice che dice OOP quando alcune cose standard potrebbero essere state fatte, sarebbe stato molto più veloce da scrivere e sarebbe stato un livello simile di leggibilità a causa della brevità del programma?
Ci sono eccezioni. Inoltre, ci sono probabilmente standard per la programmazione scientifica oltre a semplici standard. Sto chiedendo anche di quelli. Non si tratta di ignorare i normali standard di codifica quando si scrive codice scientifico, si tratta di scrivere codice scientifico pulito!
Aggiornare
Ho pensato di aggiungere un tipo di aggiornamento "non abbastanza una settimana dopo". Tutti i tuoi consigli sono stati estremamente utili. Ora sto usando il controllo versione - git, con git kraken per un'interfaccia grafica. È molto facile da usare e ha ripulito drasticamente i miei file - non è più necessario che i vecchi file rimangano in giro o che le vecchie versioni di codice abbiano commentato "per ogni evenienza".
Ho anche installato Pylint ed eseguito su tutto il mio codice. Inizialmente un file ha ottenuto un punteggio negativo; Non sono nemmeno sicuro di come sia stato possibile. Il mio file principale è iniziato con un punteggio di ~ 1.83 / 10 e ora è a ~ 9.1 / 10. Tutto il codice ora si conforma abbastanza bene agli standard. L'ho anche investito con i miei occhi aggiornando i nomi delle variabili che erano diventati ... uhm ... errati, e cercavo sezioni da refactoring.
In particolare, ho posto una domanda recente su questo sito sul refactoring di una delle mie funzioni principali, e ora è molto più pulita e molto più breve: invece di una funzione lunga, gonfia, se / riempita, ora è meno della metà la dimensione e molto più facile capire cosa sta succedendo.
Il mio prossimo passo è implementare una sorta di "unit test". Con ciò intendo un file che posso eseguire sul mio file principale che esamina tutte le funzioni in esso contenute con istruzioni assert e try / excepts, che probabilmente non è il modo migliore per farlo e genera un sacco di codice duplicato, ma continuerò a leggere e cercherò di capire come farlo meglio.
Ho anche aggiornato in modo significativo la documentazione che avevo già scritto e ho aggiunto file aggiuntivi come un foglio di calcolo Excel, la documentazione e un documento associato al repository github. Sembra un vero progetto di programmazione ora.
Quindi ... immagino sia tutto da dire: grazie .