Qual è la struttura corretta per il mantenimento degli script Python a pagina singola

2

Sono un programmatore autodidatta e ho iniziato il mio lavoro come sviluppatore PHP, in una piccola azienda.

Poi ho avuto un po 'di lavoro per scrivere lo script python. Non avevo nessun anziano con esperienza Python adeguata. Così ho iniziato a studiare da solo e ho iniziato a lavorare. Con il tempo, è successo che, ho scritto circa 90-100 script, tutte le singole pagine, ognuna delle quali esegue alcune attività (la maggior parte sono lavori cron). Tutti gli script sono stati eseguiti correttamente, e non c'è stato alcun problema con la funzionalità. Ma sono preoccupato per la struttura, per il modo in cui ho scritto il codice e la qualità del codice.

Quando ho cercato su internet, ho trovato siti e documenti su strutture di progetti come django e flask, ma non ho trovato dove trovare gli script di pagina singola.

Ecco i problemi che penso di avere:

  1. In tutti i miei script continuo a importare moduli (stessi moduli), le prime 10-15 righe di ogni script hanno istruzioni di importazione: dovrei usare un singolo file per le istruzioni di importazione e includere quel file ovunque? In questo modo, vorrei importare anche moduli non necessari

  2. Scrivo solo script in modo procedurale, anche se per funzionalità che richiedono ripetutamente come funzioni di posta, connessioni DB ho creato classi e li uso. Devo scrivere script con classi di implementazione e tutti?

Sono confuso anche da altri punti, ma posso pensare solo a questi due ora (ne aggiungerò altri). Altri suggerimenti e aiuto sarebbero anche apprezzati

Sono stati confusi a lungo e hanno cercato una risposta adeguata, ma senza aiuto.

Grazie in anticipo:)

    
posta kadamb 13.09.2017 - 16:39
fonte

2 risposte

4

Se non lo hai già fatto, ti consiglierei di leggere PEP 8 per le linee guida generali su come per strutturare il tuo codice Python e iniziare a seguirlo per il tuo lavoro futuro. Per le linee guida sulla scrittura di docstring (importante per documentare i tuoi script, specialmente per gli altri che li leggono), leggi e segui PEP 257 .

Quindi, prova a eseguire il codice / gli script tramite gli analizzatori di codice. Io uso PyLint prima e poi Flake8 (per catturare tutto ciò che manca a PyLint). Entrambi ti forniranno feedback, consigli e best practice su come migliorare il tuo codice.

In risposta alle tue due domande, non importerei nulla in un modulo che non viene utilizzato (anche se PyLint te lo ricorderà comunque) poiché ciò potrebbe causare confusione per gli altri che cercano di leggere i tuoi script, e aumenta la possibilità di scontri nello spazio dei nomi.

Come per la creazione di classi, IMO dovrebbero essere scritti solo quando il codice li richiede. Non è certamente il caso che tutti gli script ne abbiano bisogno.

    
risposta data 19.09.2017 - 08:46
fonte
1

Se ti capisco correttamente, pensi di centralizzare il codice comune in una sorta di mini-framework e di trovare una struttura generale per il tuo codice.

  • L'astrazione e la centralizzazione sono nel mio libro sempre una buona cosa che esalta il costo dell'aggiunta di complessità di gran lunga. Un super-modulo di solito non è buono, ma finché si mantiene ragionevole, aiuta ad avere un codice affidabile e manutenibile ed evitare di ripetersi. Il lato negativo è che ci vogliono più tempo per familiarizzare con il tuo codice.

  • Anche i modelli di codice / progetto sono una buona cosa per me, ma meno preoccupante per gli script, per essere onesti. L'applicazione di uno schema di file comune potrebbe non valere la pena. Il processo conta qui di più, ad es. seguire le linee guida di codifica comuni come descritto in PEP 8.

  • Se si desidera aggiungere un controllo per garantire la qualità del proprio codice, utilizzare l'analizzatore di codice statico per analizzare il codice Python e ottenere informazioni su errori, potenziali problemi, violazioni delle convenzioni e complessità. Esistono diversi analizzatori di codici statici per Python, tra cui Prospector (forse obsoleto), Mypy, pyflakes e pylint (che è considerato come il migliore di tutti)

risposta data 19.09.2017 - 08:54
fonte

Leggi altre domande sui tag