[Python] Condivisione interna di librerie

Alessandro Dentella sandro.dentella a gmail.com
Gio 1 Ott 2020 11:28:06 CEST


On Thu, Oct 01, 2020 at 10:13:20AM +0200, Federico Fissore wrote:
> Alessandro Dentella wrote on 30/09/20 22:57:
> > 
> > Io tipicamente faccio dei package. Se so che la funzionalità è *potenzialmente*
> > utile in altri progetti faccio sicuramente un pacchetto che poi pubblico su un
> > mio server (basta una cartella con autoindex servita da nginx, nulla di che).
> > 
> 
> Anche tu aggiorni tutti i software che dipendono dal pacchetto, dopo che ne
> rilasci un aggiornamento?
> 
> Il fatto è che, quando ho proposto di ridurre la duplicazione del codice
> estraendolo in librerie condivise, mi è stato risposto che così avrei creato
> un accoppiamento e sarei stato costretto o ad aggiornare e rilasciare sempre
> tutto insieme, o a manutenere versioni diverse (ad esempio continuare a
> manutenere una 2.x perchè in qualche caso non è possibile passare alla 3, o
> richiede più tempo del previsto)
> 
> Ti sei trovato in questa situazione?
> 
> Io personalmente sì (con java) e la soluzione allora era aggiornare subito
> tutto l'aggiornabile: per il rimanente aprivo una issue di debito tecnico
> che cercavo di chiudere appena possibile

Decido caso per caso. A me piace documentare bene cosa fa ogni nuova release e
quindi a seconda se è un fix importante o se è l'aggiunta di una feature (che
magari in un certo contesto non mi serve) non lo faccio.


Aggiornare ha una costo e pure la disuniformità... Posso dirti che combatto con
le unghie e coi denti il copia incolla soprattutto quando sono più di 2 progetti
diversi.


C'è un secondo aspetto da tenere presente. Se fai un pacchetto sai devi
documentarlo, se copi ed incolli, l'esperienza mi dice che non lo documenterai.
Il collega che non capisce come funziona riscrive con la convinzione di essere
più bravo di quello precedente (magari semplicemente non ha compreso qualche
sottigliezza che l'altro aveva invece considerato).

Per questioni economiche se hai già venduto ad un cliente una soluzione è
difficile che torni ad aggiornare se non crea problemi... se non hai un
contratto di assistenza, come giustifichi le ore necessarie?

Agisco nello stesso modo quando non ho colleghi e lavoro a progetti miei.
Package separati ove ragionevole.


sandro
*:-)


Maggiori informazioni sulla lista Python