Perché le importazioni dovrebbero essere fatte all'inizio

1

Perché è considerato buono per fare tutte le importazioni in un'applicazione python all'inizio, anche se ciò che è importato viene usato una sola volta?

Ho programmato solo pochi pezzi di software per alcuni mesi, circa 1-2000 righe di codice, e mi sembra di condurre a un codice più chiaro, se le importazioni sono utilizzate una sola volta per essere importati solo nel posto nel codice a destra viene importato ciò che viene importato. Anche se tutto il codice che ho visto finora non ha rispettato questa regola.

Altrimenti si vede una lunga lista di importazioni all'inizio, molte delle quali devono essere utilizzate solo molto più tardi - e non è chiaro quando; forse i pezzi di codice rilevanti sono già stati sostituiti da un codice migliore, ma l'importazione è ancora in agguato lì, sebbene non sia realmente utilizzata.
(Forse qualche IDE di fantasia consente di rilevare tali problemi, ma penso che il codice chiaro dovrebbe essere chiaro, non essere esso stesso reso chiaro dall'aiuto di un IDE.)

La stessa domanda anche per la definizione della funzione - se non vengono utilizzate molto spesso, perché dichiararle all'inizio del file corrente e non nel posto in cui vengono utilizzate?

    
posta l7ll7 20.10.2018 - 11:55
fonte

2 risposte

7

Ecco i vantaggi delle importazioni nella parte superiore del file:

  1. Non appena apro il file, posso vedere tutte le sue dipendenze. So che sta usando datetime o os , perché posso vedere immediatamente le importazioni che appaiono in alto. Se le importazioni sono disperse, l'unico modo per trovarlo è a grep attraverso il file.

  2. Se esegui l'importazione in una funzione, potresti finire in una situazione in cui stai tentando di utilizzare il modulo prima di importarlo.

  3. L'importazione di un modulo può richiedere tempo. Mettere le importazioni nella parte superiore significa che accadrà non appena avvii l'applicazione. Se esegui l'importazione all'interno di una funzione, incontrerai la lentezza durante l'esecuzione di questa funzione.

Detto questo:

  1. Quando le importazioni sono nella parte superiore del file, accade che il codice che utilizza l'importazione sia rimosso, ma l'importazione stessa rimane. Ciò significa che la presenza di un'importazione nella parte superiore non significa che il modulo sia effettivamente utilizzato, quindi è ancora necessario grep ing attraverso il file.

  2. Il modulo utilizzato prima del problema di importazione si applica anche a tutto il resto in Python, come le variabili, causando un errore di runtime.

  3. L'importazione di un modulo in profondità in una logica condizionale significa che impiegheremo il tempo necessario per importare il modulo solo quando ne abbiamo bisogno, anche nel senso che l'applicazione inizierà più velocemente.

Pertanto, tutto si basa sulla coerenza:

  1. La maggior parte delle importazioni sono non utilizzate una sola volta, oppure vengono utilizzate una volta nel momento in cui vengono aggiunte e quindi utilizzate in altre posizioni. In questo caso, avere tutte le importazioni nella parte superiore è più intuitivo rispetto ad avere alcune di queste nella parte superiore e alcune di esse sparse sul file.

  2. La maggior parte dei progetti mette le importazioni in alto. Come con la maggior parte delle regole di stile, ciò che conta non è se è meglio fare A o B, ma che tutti cerchiamo di utilizzare la stessa alternativa in modo coerente. Pertanto, per rendere il codice più leggibile per altri sviluppatori Python, usa la convenzione già in uso nella maggior parte dei progetti, solo perché è la più popolare.

risposta data 20.10.2018 - 12:26
fonte
0

Aiuta a capire il codice perché vedi tutte le dipendenze a prima vista.

Lunghi elenchi di importazioni e file lunghi sono un segno di progettazione errata con troppe dipendenze. Tali file dovrebbero essere comunque rifatti.

Definizioni di funzioni Le dichiarazioni di minerale sono un argomento completamente diverso perché sono interne e non esterne. Non sono d'accordo che dovrebbero essere all'inizio di un file. Tuttavia alcune lingue lo richiedono.

    
risposta data 20.10.2018 - 12:28
fonte

Leggi altre domande sui tag