Script long vs short? Script grandi o piccoli? [chiuso]

2

Come programmatore, mi sono sempre chiesto se sia preferibile scrivere (a) brevi funzioni modulari che sono memorizzate ciascuna nel proprio script (cioè, file) o (b) script completi e lunghi che contengono tutte le loro funzioni rilevanti.

Ad esempio, se codifico un flusso di analisi dei dati che include una varietà di operazioni eseguite sugli stessi dati (ad esempio, pulizia dei dati, selezione delle funzionalità, clustering, apprendimento supervisionato, ecc.), dovrei scrivere un singolo file anche se funziona per centinaia di linee?

Ho sentito molte opinioni in merito e mi chiedo cosa pensi questa comunità. Comprendo che la risposta può dipendere dal tipo di progetto, ma, se questo è il caso, sarebbe bello sentire i tuoi pensieri su quali fattori dovresti considerare nel decidere tra le opzioni (a) e (b) .

Attualmente sto codificando in Python e mi sono chiesto se i programmatori Python abbiano una preferenza per più funzioni nello stesso file o un file per funzione, ma immagino che questa domanda sia più ampia e si applichi a tutti i linguaggi di programmazione.

    
posta Gyan Veda 18.02.2014 - 16:40
fonte

3 risposte

8

Le cose che appartengono insieme dovrebbero essere tenute insieme. Non farmi aprire un altro file solo per trovare un po 'di _internal_helper_function() che non può essere riutilizzato in un altro contesto. Questa riutilizzabilità è un altro punto importante: se il codice che hai scritto potrebbe essere utile in progetti futuri, strutturalo come una libreria riutilizzabile. Separalo logicamente (dipendenze) e fisicamente (file, directory) dal codice specifico del progetto.

Soprattutto, il codice dovrebbe essere facile da leggere. File più brevi con solo poche definizioni correlate tendono a essere più facili da capire. Oltre le linee da 1K, avrai difficoltà a navigare nel codice sorgente senza strumenti di ricerca, nel qual caso dovresti refactor .

Non esiste una ricetta universale su come trovare un buon equilibrio tra la riuscibilità dei fattori, la localizzazione e la facilità di comprensione. Non decidere per un estremo o l'altro, piuttosto scegli una via di mezzo che renda giustizia alle specificità del progetto, e le preferenze dei programmatori coinvolti.

    
risposta data 18.02.2014 - 16:58
fonte
1

Direi che dipende molto da come è strutturato il linguaggio stesso:

In Mathematica, tendi a finire con pacchetti abbastanza grandi, che possono contenere diverse linee K. In java, non hai molta scelta, il file alla funzionalità è determinato dagli oggetti.

Se ti arrabbi di avere troppi file o un file troppo grande, è un'indicazione che qualcosa dovrebbe cambiare ...

    
risposta data 18.02.2014 - 19:45
fonte
0

Il primo problema è che stai parlando di "funzioni" e "file" in un linguaggio orientato agli oggetti, il primo che devi fare è pensare in termini di classi e delle loro relazioni se vuoi creare un buon codice OO python.

E parlando di classi e lunghezza, normalmente una buona classe dovrebbe aderire al Principio di Responsabilità Unica, una classe ha una sola responsabilità e una ragione per cambiare. Normalmente un codebase ben progettato è composto da molte piccole classi con responsabilità molto chiare e semplici, più di 200 o 300 linee in un linguaggio come python è un allarme rosso IMMO (un avviso per dare una seconda occhiata al codice, non un regola per seguire ciecamente!).

    
risposta data 18.02.2014 - 20:26
fonte

Leggi altre domande sui tag