Ordino le mie importazioni Python per lunghezza del nome. Ha senso?

5

Prima di tutto, sì, sono a conoscenza di PEP8 e metodo alfabetico .

Ordino innanzitutto le mie importazioni in base al consiglio PEP8 :

  1. standard library imports
  2. related third party imports
  3. local application/library specific imports

Ma poi, all'interno di ogni categoria, mi piace ordinare per la lunghezza del nome del modulo. Sì, lo fa sembrare carino, ma poi trovo che sia più facile trovare un modulo rispetto al modo alfabetico.

Inoltre, i nomi più brevi tendono ad essere i moduli base più comuni (come os e sys ), quindi c'è un ulteriore livello organizzativo in questo modo. Conosci la lunghezza del nome che stai cercando e la forma visiva della lista di importazione ti dice molto rapidamente dove cercare nomi così lunghi.

Un esempio:

import os
import sys
import time
import logging
import argparse
import subprocess

import django
import requests
import webencodings

import mymodule
import localthing
import supercustomstuff

In questo momento scrivo principalmente per me stesso e non lavoro con una squadra. Ma intendo per il futuro. Quindi quello che mi chiedo è, qualcun altro lo fa, qualcun altro ne capisce il senso, o tutti gli altri pensano che io sia pazzo?

Modifica : sottogruppi separati, ad esempio, come suggerito da Mark Ransom, per non distrarre dal problema principale relativo all'ordinamento.

    
posta Nick S 14.02.2018 - 03:57
fonte

4 risposte

4

In primo luogo, direi di fare ciò che funziona per te sui tuoi progetti. Non danneggerà nulla e ti aiuta, quindi è una vittoria!

Per i progetti con altri, discuterò con il team. Spesso una squadra avrà una guida di stile che si aspetta che gli sviluppatori seguano. Altre volte consentono a ogni sviluppatore di fare le proprie cose. Ti consiglierei di seguire ciò che fanno gli altri membri del tuo team.

Personalmente, il tuo sistema mi sembra arbitrario e piuttosto strano. Altri probabilmente hanno sistemi che usano per ragioni ugualmente arbitrarie. Non sento che il tuo mi aiuterebbe in generale. Devo chiedermi quanto aiuta quando i nomi dei moduli sono tutti vicini di lunghezza? Almeno con l'alfabetico (che non è anche il mio preferito) So di usare le prime 2 lettere quando due file iniziano con la stessa lettera.

Inoltre, non sono sicuro di Python, ma in alcune lingue, se gli sviluppatori non fanno attenzione, l'ordine di importazione può modificare il comportamento di un programma. (Questo non dovrebbe essere il caso e non dovrebbe essere invocato, ma la realtà è che succede.)

    
risposta data 14.02.2018 - 04:38
fonte
3

Questa è una classica domanda XY. Mi chiedi di un problema, ma ti suggerisco di avere effettivamente un altro problema!

Si dice che l'ordinamento per lunghezza rende più facile trovare un modulo. Quindi, a quanto pare, spendi una notevole quantità di sforzi per esaminare l'elenco delle importazioni per vedere se è presente una determinata importazione. Questo mi indica che hai lontano in molte importazioni in un singolo file. Ogni file ha troppe responsabilità e dipendenze diverse. Applicare una certa modularizzazione e separazione delle preoccupazioni al proprio codice, in modo che ogni file abbia un numero gestibile di dipendenze. Dovresti essere in grado di vedere tutte le importazioni in una sezione in un colpo d'occhio, quindi l'ordine non dovrebbe avere più importanza.

Come per l'ordinamento in base alla lunghezza del nome, questo non ha molto senso. La lunghezza di un nome non ha alcun significato particolare. I nomi dei moduli sono selezionati per essere semplici e descrittivi, ma la lunghezza non corrisponde necessariamente a come sono "di base", anche se accade negli esempi che hai scelto.

Se vuoi ordinare in base a come sono semplici i moduli (che è ragionevole), fallo e ignora la lunghezza dei nomi.

    
risposta data 15.02.2018 - 14:45
fonte
2

Il tuo ordine è strano. Se hai intenzione di lavorare con altre persone, non farlo. Anche se stai lavorando su un tuo progetto privato, non permettere a te stesso di entrare in cattive abitudini.

Metterei anche una linea vuota tra i gruppi per separarli.

    
risposta data 14.02.2018 - 04:55
fonte
1

È davvero il tuo stile e non vedo alcun danno nel mantenerlo.

Ma direi che è radicato in un più profondo istinto di un "ordine naturale", o in realtà una combinazione di vari ordini di questo tipo:

  1. Le importazioni comuni che sono quasi in ogni file vanno sempre prima di tutto. Questo non è sorprendente dato che la sezione delle importazioni diventa lentamente un modello nella tua testa. Una rapida occhiata e sai cosa è "speciale" importato qui.

  2. Le cose più specifiche di solito tendono ad avere nomi, spazi dei nomi e percorsi di importazione più lunghi. Quindi, la regola "generico prima e specializzato dopo" in realtà finisce con l'ordine basato sulla lunghezza.

  3. La voglia di raggruppare, categorizzare e contrassegnare separatamente tutto è anche piuttosto comune. Le importazioni strettamente correlate sono di solito raggruppate insieme.

  4. E infine, non possiamo ignorare l'estetica visiva del testo, molti programmatori considerano molto. Stiamo organizzando le informazioni per la nostra elaborazione rapida.

risposta data 14.02.2018 - 07:12
fonte

Leggi altre domande sui tag