Press "Enter" to skip to content

GOTO 2016 • Seven Secrets of Maintainable Codebases • Adam Tornhill


come parte del mio lavoro giornaliero
Ho analizzato centinaia di codice diverso
basa la maggior parte su di essi open source ma anche
un sacco di codice preparatorio e commerciale
basi e oggi voglio condividerne alcune
le mie osservazioni con te perché lì
alcuni schemi che vedo ricorrono
e ancora e quei modelli sono
indipendente dal linguaggio di programmazione o
tecnologia e voglio farlo in un
in modo diverso perché sono carina
convinti che noi come industria sappiamo
che aspetto ha il codice buono di cui siamo a conoscenza
l’importanza della denominazione della testabilità
coesione e tutte le altre cose così
oggi voglio andare oltre
invece ho intenzione di iniziare con i dati
analisi perché non è affascinante
l’analisi dei dati è diventata mainstream
e l’ascesa dell’apprendimento automatico ha
ci ha insegnato come trovare schemi in
fenomeni complessi ancora come sviluppatori
non ho mai preso quelle tecniche e
consegnali a noi stessi per capire il nostro
comportamento proprio e come crescono le nostre basi di codice
quindi è quello che voglio fare oggi che voglio
per mostrarti come sono dati comportamentali su di noi
come gli sviluppatori possono aiutarci a migliorare
decisioni decisioni che ci guidano
verso basi di codici manutenibili e il
buone notizie sono che tutti già avete
tutti i dati di cui hai bisogno siamo solo
non sono abituato a pensarci così
parlando del controllo della versione
sistemi i nostri dati di controllo della versione sono a
comportamento perfetto registra su noi come
gli sviluppatori hanno interagito con il nostro codice
quindi scopriamo i segreti della versione
controllo dopo la mia prima osservazione è
quel codice gestibile va ben oltre
tecnologia e noi come sviluppatori tendiamo
essere abbastanza bravo su una parte tecnica di
ma la mia esperienza è che spesso
perdere le implicazioni sociali del nostro
disegni vediamo cosa sia importante
questo è quello che praticamente ogni sistema
quella
ha lavorato con negli ultimi 10 anni
sembrava che abbiamo un grande numero
sottosistemi di solito liberi che in qualche modo
integrarsi e lasciarli scambiare
informazioni e ad una estremità abbiamo un grande
database ora ognuno di quelli
i sottosistemi possono essere abbastanza grandi che possono
consistono di centinaia di migliaia o addirittura
milioni di codice e la scala di quello
da solo lo rende davvero molto difficile
motivo per questo ma questo non è solo
su scala perché i sistemi di oggi tendono
essere scritto in più modi diversi
linguaggi di programmazione e ovviamente loro
sono sviluppati da più programmatori
organizzato in più squadre e quello
lascia tutti con la propria visione di
come appare il sistema nessuno ha un
quadro olistico ma questo non è davvero
solo sulla tecnologia perché i sistemi
sembra che questo tende a venire con un
organizzazione che sembra così così nostra
la sfida principale è bilanciare questo
organizzazione tecnica e sociale
complessità questo è in realtà un duro
problema ma è un problema che possiamo
semplificare in qualche modo comprendendo il
il prossimo punto qui è la mia prossima osservazione
che tutto il codice è uguale ma qualche codice lo è
più uguale di altri e per spiegare
cosa intendo per questo voglio condividere un
piccola storia per te questo è qualcosa
mi è successo un certo numero di anni
a quel tempo stavo lavorando a
grande base di codice legacy e cosa abbiamo fatto
abbiamo intercettato uno strumento in grado di farlo
misurare un mucchio di diversa complessità
misura e produce qualcosa chiamato a
metrica di profondità tecnica quindi fondamentalmente
ha preso quello strumento lo ha gettato alla base di codice
e fuori è arrivato un elenco di tutti gli elementi prioritari
modulo nel sistema e ogni modulo ha avuto
un numero di profondità tecnica ad esso assegnato
la cosa interessante qui era quella
c’era un chiaro candidato numero uno
c’era un pezzo di codice che era il modo
peggio che il resto di esso tuttavia quando
iniziamo a investigare su quel pezzo di
codice si è scoperto che quel codice aveva
stato stabile per tre anni non abbiamo mai
necessario per toccarlo ha funzionato meraviglioso
in produzione ha fatto proprio il suo lavoro così
dovremmo davvero passare il tempo e lo sforzo
migliorando quel pezzo di codice cosa possiamo fare
aspetto di guadagnare da me è solo un grande
rischio e inoltre probabilmente abbiamo tutti
questioni molto più urgenti a cui partecipare
e per scoprire quelle questioni che abbiamo bisogno di
fare qualcosa di diverso che dobbiamo prendere
su un aspetto evolutivo del nostro codice ecco
come sembra, per favore dai un’occhiata
questi diversi grafici mostra tutti loro
la stessa cosa sull’asse x che hai
ogni file nel sistema e quei file
sono ordinati in base al loro cambiamento
le frequenze è il numero di commit
abbiamo fatto che l’influenza che
file particolare e il numero di
commetta, è quello che si vede l’asse y
ora la cosa interessante qui è quella
quello che vedi qui è libero radicalmente
basi di codice differenti scritte in
programmazione completamente diversa
lingue e con completamente diversi
vite eppure tutti mostrano lo stesso
modello si vede una distribuzione di legge di potenza
e questo è qualcosa che ho visto in ogni
base di codice singolo che ho analizzato di più
ma ciò che questo significa per te è questo in
il tuo sistema tipico la maggior parte del tuo lavoro
tende ad essere in una parte relativamente piccola
del codice di base e la maggior parte del tuo codice
è nella lunga coda che significa è
raramente se mai toccato e questo è
importante perché ci dà uno strumento per
dare la priorità a concentrarsi sul codice che
conta davvero così ora siamo in grado di
restringere la quantità di codice di cui abbiamo bisogno
ispezionare se vogliamo renderlo reale
miglioramento che conta in termini di
produttività e questo è un buon inizio
punto ma dobbiamo fare ancora meglio e
per spiegare come devo prendere un po ‘
rischio ho intenzione di mettere su una diapositiva e io
pensa che questo sia il punto nel
presentazione in cui tutti voi
violentemente in disaccordo con me ma qui noi
partire
quando si tratta di basi di codice mantenibili
la complessità non è il problema
noi sviluppatori siamo così condizionati
disprezzare il codice cattivo che abbiamo imparato che noi
bisogno di riflettere il codice cattivo come vediamo
e abbiamo imparato che abbiamo bisogno di
mantenere tutto il nostro codice pulito, bello e
che questo è il modo più veloce in avanti la
problema che ho con che non è solo
vero e il grafico nella pagina precedente
indica perché potrebbe essere il caso ma
ancora non possiamo scartare la complessità
abbiamo solo bisogno di scoprire quando
la complessità conta e quando no
e questo è un problema che sono stato
lottando per anni e poi cinque
anni fa stavo lavorando di nuovo su a
sistema abbastanza grande con molte persone
e allo stesso tempo sono stato iscritto a
Università in cui ha frequentato un corso
psicologia forense e io penso che
la scientifica in generale ha davvero
bella mentalità che risponde bene a
sviluppo del software pure
ma c’era una tecnica in
particolare che voglio davvero mostrare
questa è una tecnica chiamata
profiling geografico
il profiling geografico è a
tecnica che usiamo per catturare seriale
criminali e vedete un esempio qui di
come appare questa è una mappa su una città a
città che assomiglia molto a Londra
e vedi quei punti verdi ognuno di
quei punti rappresenta una scena del crimine con
56 diverse scene del crimine e sappiamo
che quei 56 crimini sono commessi da
lo stesso colpevole come sappiamo che è
lo stesso colpevole forse abbiamo
le prove concrete come il DNA o
impronte digitali o l’abbiamo appena trovato
è lo stesso modus operandi lo stesso
metodo di operazione utilizzato dal criminale
alle diverse scene del crimine ora cosa
fai in delinquente geografico
la profilazione è che usi il
distribuzione di quei crimini a
calcola una superficie di probabilità e quella
la superficie di probabilità è importata su meth
ponderazione etica della distribuzione di
i crimini, ma lo pesiamo anche noi
formula con la nostra conoscenza dell’umano
comportamento e usando questa probabilità
superficie siamo ora in grado di prevedere il
la posizione di casa più probabile del nostro
offensore e questo è lì in rosso
area e questo è quello che chiami hot spot
e secondo la ricerca c’è a
70% di possibilità che il nostro autore abbia
la sua base di partenza lì e il motivo I
pensa che questo si applica bene al software
perché pensa a quello che abbiamo fatto noi
hanno preso un potenziale enorme
area geografica e restringerla fino a
molto più piccola parte molto più piccola
parte ciò che possiamo ora concentrare un essere umano
competenza ed essere ancora abbastanza sicuro di ciò
prendiamo quel criminale e allora se lo facciamo
potrebbe farlo nel software e se noi
potrebbe prendere quelle orribili milioni di righe
di codice e li restringono a pochi
hotspot e sapere che se ci concentriamo su
miglioramento lì otteniamo un effetto reale
vediamo come questo può apparire nel software
qui andiamo quindi questa è una geografia
profilo del trasgressore di un abbastanza grande
sistema quello che vedi c’è
circa trecentomila
linee di codice e che i dati qui sono
creato da un sistema di controllo della versione
o log comportamentale ed è basato su due
mille quattrocento diversi commit
e identificare i modelli in quelli
Impegna siamo stati in grado di proiettare a
superficie di probabilità intuitiva il nostro codice
e usando quella superficie di probabilità che siamo
in grado di prevedere il più probabile
risparmio di manutenzione in quel codice ora sono
andando a camminare attraverso questo
visualizzazione in un minuto ma prima di me
faccio questo voglio solo sottolineare che a
analisi hotspot come questa è in realtà
un’analisi sociale perché questi dati sono
basato sull’intelligenza collettiva di
tutte le offerte contribuiscono bene così
quello che vedi vedi che ce ne sono alcuni
grandi cerchi blu ciascuno di quelli
i grandi cerchi blu rappresentano a
sottosistema questo è un gerarchico
visualizzazione quindi ne segue praticamente
la struttura delle cartelle del tuo
progetto e quando fai i dettagli e
visualizzazioni su larga scala è anche
vitale che tu li tenga interattivi così
che possiamo ingrandire e ora al livello
di dettaglio di interesse e se ingrandisci
su uno di questi sottosistemi vedrai
che rappresentiamo ogni file come un cerchio
vedrai anche quei cerchi
hanno dimensioni diverse e questo è il
la dimensione del corso viene utilizzata per rappresentare
la complessità, quindi la complessità è qualcosa
misuri dal codice e abbiamo a
un mucchio di diverse misure di complessità
da scegliere e tu puoi fondamentalmente
scegli qualsiasi metrica che vuoi perché cosa
hanno tutti in comune è quello che sono
altrettanto male quindi tendo ad andare con il
la cosa più semplice possibile che tendo a scegliere
il numero di righe di codice che anche
ha il vantaggio di essere linguaggio
neutrale, ma ho detto un minuto fa
questa complessità da sola non è un problema quindi
abbiamo bisogno di qualcos’altro di cui abbiamo bisogno
capire se effettivamente lavoriamo in questo
codice o no, abbiamo bisogno di capire il
cambia frequenza di un codice e questo è
qualcosa si tira fuori un ritorno
controllo più tardi e la cosa interessante
qui ovviamente noi combineremo questi
due dimensioni perché ora siamo in grado di
identifica il codice complicato che anche noi
ho dovuto lavorare con spesso e mostrerò
sei un caso di studio del mondo reale su come questo
potrebbe sembrare questo è uno studio di Microsoft
il progetto open source Rozlyn e
roastin è un progetto davvero interessante
studiare perché ruslan è aperto
piattaforma del compilatore di origine e in realtà
include due compilatori esso stesso
include il compilatore c-sharp scritto in
c-sharp e il compilatore di base visuale
scritto in Visual Basic così Ruslan è un
codice base poliglotta ora se guardiamo al
Top hot spot in Ruslan adesso come te
vedrà che il punto caldo numero uno è
qualcosa chiamato test da linea di comando e
scritto in c-sharp un altro punto caldo in alto
in Ruslan è chiamato test da linea di comando
ed è scritto in Visual Basic
hmmm mi chiedo se il qualche tipo di
relazione tra questi due in pochi
minuti vedremo una tecnica
questo ci aiuta a rispondere a questa domanda ma
per ora voglio solo precisarlo
quegli hotspot sembrano piccoli sullo schermo
ma questo è di dimensioni diverse
Rosslyn Ruslan è enorme quello che vedi
ci sono quasi quattro milioni di righe di
codice e ognuna di quelle righe di comando
i test sono un file con 7.000 righe di
codice e vorrei anche discutere se
avevi 7000 linee di codice in un file
chiamato test della linea di comando forse quello
non è una buona unità di test e ciò che io
farei in questo caso è che lo farò
cercare le diverse responsabilità
e iniziare a suddividere il file in
Suite di test separate per esempio una per
analizzando uno per la convalida uno per leggere
debug flags e se lo fai ognuno di essi
di questi nuovi file di test, ovviamente
diventa più facile ragionare in
isolamento ma non è il massimo
cosa importante la cosa più importante
è che si finisce con un completamente nuovo
contesto perché ora se continui a
fai un’analisi hotspot come quella che farai
essere in grado di vedere quali parti di una soluzione
che sei riuscito a stabilizzare e quale
parti che continuano a cambiare
così la coesione è uno strumento che ti dà
ulteriori approfondimenti sull’evoluzione
del tuo codice un’altra osservazione che
ti ha fatto vedere che quei due moduli li hanno
erano codice di prova e questo è di nuovo
qualcosa che ho trovato più e più volte
che i peggiori trasgressori del codice tendono a farlo
essere nel codice di prova e penso che il principale
la ragione per questo è perché noi sviluppatori
tendiamo a dividere mentalmente uno su uno
mano abbiamo quel codice di vacanza e noi
sappiamo che è vitale che lo manteniamo pulito
che è possibile mantenere e
evolvilo d’altra parte abbiamo il
codice di prova e il più delle volte siamo
felice se andiamo in giro a scriverne uno qualsiasi
tutto e penso che questo sia un
pericoloso compagno impostato perché da a
prospettiva di manutenzione c’è davvero
nessuna differenza tra codice di prova e
codice dell’applicazione e se si dispone di test
senza qualità ti trattengono
va bene, vediamo quali sono gli hotspot
in realtà ci ha portato quando abbiamo aggiunto
dimensione della complessità che siamo in grado di
restringere la quantità di codice di cui abbiamo bisogno
per indagare ancora di più e in genere
scopri che siamo in grado di restringere a
solo 3-6 per cento a seconda
la base di codice e questo è importante
perché quelli gratis a sei percentuali li hanno
dirti quale parte del codice dovrebbe
ci concentriamo su miglioramenti al fine di ottenere
entrambi miglioramenti di miglioramento in entrambi
produttività e qualità e la ragione
Dico che la qualità è perché gli hotspot tendono
essere un forte predittore di difetti tutti
Bene, lasciamo i punti caldi ora
per un po ‘e parlare di qualcosa
completamente diverso parliamo di a
strumento primario come sviluppatori di software e
Non sto parlando del compilatore che sono
Non parlando del ID non Emacs non
anche io sto parlando del cervello e
la ragione per cui voglio parlare del
il cervello è perché il tuo cervello no
lavora sempre nel tuo miglior interesse e a
mostrarti un esempio che voglio fare a
piccolo sondaggio qui per favore ripensa a
l’ ultimo grande progetto che hai lavorato
forse il progetto su cui lavori bene
ora quanti di voi sanno dove siete
gli hotspot sono in quel codebase alcuni di
forse dieci persone, per favore, tieni il tuo
consegnare se sei al 100% certo alcuni di
il tuo fantastico fantastico potresti avere ragione
ciò che mi preoccupa è che se 100
anni di ricerca psicologica ha
ci ha insegnato tutto ciò che siamo umani
non possiamo davvero fidarci del nostro giudizio
e per spiegare cosa intendo per questo noi
bisogno di parlare di qualcosa di diverso
sì, è giusto che dobbiamo parlare
gorilla quindi questo è uno dei miei preferiti
esperimenti psicologici si potrebbe bene
hanno sentito parlare è abbastanza famoso che
è stato fatto negli anni ’90 e cosa
i ricercatori hanno fatto qui che loro
registra un video
di due squadre che giocano a basket
uno contro l’altro e il tuo compito come a
partecipante a quell’esperimento era
conta il numero del processo ora come te
si è seduto e guarda le due squadre giocare
basket qualcosa di strano
è successo perché improvvisamente un uomo vestito
in un vestito da gorilla cammina attraverso il
campo da basket si ferma proprio di fronte
la videocamera si gira verso di te e inizia
per battere sul petto poi se ne va
dopo aver visto quel video il
i ricercatori ti chiederanno che hai notato
qualsiasi cosa di particolare e tu diresti
Ovviamente un uomo sta riposando un vero vestito
questo è un po ‘strano ma non lo è
quello che è successo si è scoperto poi di più
il 50% dei partecipanti non è riuscito a farlo
vedi il gorilla e il follow-up
l’esperimento ha rivelato che le persone non ci riescono
guarda il gorilla anche quando è giusto
davanti ai loro occhi anche quando l’immagine
del gorilla colpisce una retina abbiamo fallito
per vederlo e la ragione di ciò è
perché tu non vedi con i tuoi occhi te
vedi con il tuo cervello e per
percepisci qualcosa che dobbiamo mettere a fuoco
attenzione su di esso ma la tua attenzione era
diretto a calcolare il numero di
passa e la domanda per noi qui è
se siamo umani se ne siamo capaci
manca qualcosa ovvio come a
gorilla qual è il rischio che lo faremo
manca i gorilla nel nostro codice che cosa è
il rischio che trascureremo il nostro caldo
spot e penso che vada più in profondità di
quella
perché ora ho parlato del fallimento
della mente umana un po ‘ma non è così
scopre noi esseri umani sono in realtà davvero
bravo in alcune cose e una cosa siamo
eccezionalmente buono a vale a
razionalizzare le decisioni e ci crede
non condividiamo nemmeno, quindi lasciatemi spiegare
come funziona questo è qualcosa
completamente diverso se hai preso parte
questo esperimento è successo
ti vengono mostrate due foto di due
volti diversi e il tuo compito Assaf
il partecipante deve selezionare
faccia che trovi la più attraente una volta
aver effettuato la selezione del
i ricercatori porteranno la tua copia di quello
foto solo loro non ti ingannano così
in effetti ricevi una copia del
cartella che non hai scelto e ora loro
fare qualcosa di veramente molto male perché
ti chiedono per favore motivare la tua scelta
interessante pensiamo a quello per a
mentre così ci sediamo lì con una copia di a
foto che non abbiamo scelto e che sono ora
chiesto di motivare una scelta che noi
non l’ho fatto e di nuovo lo penseresti
se succede qualcosa del genere a te
si noterà immediatamente immediatamente
e ancora non è quello che è successo
risultato che più dei due terzi di
i partecipanti non hanno notato il
scambia e se leggi la ricerca originale
è davvero grandioso perché hanno un
trascrizione delle interviste e dei
motivi che la gente ha dato così per esempio
hai avuto questa donna che lei dice sì
scelto questa cartella perché io davvero
amato gli orecchini della cartella che tu
effettivamente scelto non mostrano orecchini
del tutto e ovviamente questo è davvero
uomo fiducioso che dice sì, ho scelto
questa cartella perché preferisco davvero
bionde in realtà la foto che ha scelto
mostrò la donna dai capelli scuri adesso
ti ho appena parlato dei nostri due
esempi di pregiudizi cognitivi su un
livello individuale ma se vuoi vedere
un vero disastro ecco cosa fai
si prende un certo numero di individui mettere
loro insieme e chiamano una squadra e
di spiegare cosa intendo che dobbiamo percorrere
in quello che forse potrebbe guardare ad alcuni
angoli non etici ma ti prometto
manterrà questo bello quindi per favore rilassati
lascia che ti faccia una domanda invece come
molti di voi hanno ricevuto il consiglio
che se vuoi avere un impatto reale
in un incontro dovresti parlare per primo solo
alcuni di voi bene in questo contesto è
in realtà un buon consiglio perché si trasforma
fuori quello
la prima persona che parla in un incontro
ci comprerà tutta la discussione
compraci l’intero gruppo ma c’è un
modo più snello per ottenere quello che vuoi
e questo è qualcosa chiamato vocale
minoranze e minoranze vocali
basato sul fatto che noi gente quando
sentiamo un parere ripetuto sopra e
più volte arriviamo a credere che quella
l’opinione è più popolare e diffusa
di quello che è in realtà e questo è vero anche
quando è la stessa persona a ripetere il
stessa opinione più e più volte così tutto
Che devo fare al fine di manipolare voi
è continuare a ripetere cose come te
sapere che la chiarezza comune è un grande
linguaggio di programmazione
hai visto la chiarezza comune è un?
linguaggio sorprendente ora provo ad essere un buono
persona, quindi ti manterrò solo in
un buon modo, la chiarezza comune è davvero grande
ma se fosse il contrario
per esempio diciamo che qualcuno si lamenta
Un sacco
hai visto quel codice del modulo di rete
è una cagata che noi del codice di rete
devo solo buttarlo via è così schifoso
come pensi che sarà l’opinione?
influenza la tua idea su dove siamo finiti
gli hotspot sono e la ragione per cui te lo dico
questo è perché io davvero davvero davvero
voglio fare il caso da una diapositiva successiva
perché questo è probabilmente il più
cosa importante che sto per dirti
oggi usa la tua intuizione usa il tuo
esperienza ma assicurati di supportare il tuo
le decisioni con i dati vanno bene, muoviamoci
su da gorilla e gruppi e tutto questo
roba di cui ho parlato su modelli di cambiamento in
le nostre plicature e di cui voglio parlare
sorpresa e il costo di sorpresa e
la ragione per cui voglio parlare di sorpresa
è perché la sorpresa è una delle più
cose costose che puoi mettere in un
architettura del software e ci sono
diversi tipi di sorprese
Mi piace mostrarti il primo tipo di
sorpresa mostrandoti cosa deve essere
il mio codice preferito di tutti i tempi questo è davvero
un’opera d’arte è il codice dalla
Progetto Apollo quindi questo è il codice che
in realtà ci ha portato sulla luna, quindi per favore
dare un’occhiata a questa bellezza in particolare
concentrati sui commenti quanti di voi
voglio andare sulla luna su quel codice così
si potrebbe sostenere che questa è una sorpresa
per l’utente finale che non è il tipo di
sorpresa voglio parlare di oggi io
voglio parlare della nostra sorpresa
gli sviluppatori si lasciano alle spalle per i poveri
il programma di manutenzione viene dopo di noi
e voglio mostrarti come un concetto
chiamato accoppiamento temporaneo ci aiuta
scopri quelle sorprese
ora l’accoppiamento temporale è interessante
perché è così diverso dal modo
di solito noi sviluppatori parliamo
accoppiamento di cui parlano gli sviluppatori
Accoppiando ciò che intendiamo tipicamente è a
dipendenza tra diverse parti e
pezzi l’accoppiamento temporale è diverso
perché non è misurato dal codice
accoppiamento temporale è misurata dalla
evoluzione del tuo codice così questo è
qualcosa che abbiamo rimosso dal controllo della versione
più tardi e l’accoppiamento temporale è circa
file due o più che continuano a cambiare
insieme nel tempo forse anche nel
stesso commento e voglio mostrarti come
quello guarda guardando un altro reale
sistema di parole questo è un case study da
asp.net MVC un asp.net MVC a cui tendono
concentrati molto sui test automatici, quindi se tu
guarda il loro codice base in realtà
avere più codice di prova dell’applicazione
codice e questa è una conseguenza se lo fai
la nostra analisi di accoppiamento temporale lo farai
trova la maggior parte delle tue coppie di tempura
o tra il codice di test e l’unità sotto
testare e questa non è una sorpresa a tutti
questo è in realtà ciò che ci aspettiamo in realtà
Sarei preoccupato se fosse temporaneo
dipendenza non era lì perché
probabilmente significa che i nostri test non sono in corso
tenuto aggiornato così quello che io tendo a guardare
per invece o
le nostre coppie non avevano una spiegazione facile
forse qualcosa di simile così in quello
base di codice abbiamo due file diversi
uno è chiamato helper tag script e uno
si chiama helper del tag link e se tu
guarda il codice che vedrai
non esiste una dipendenza immediata tra
loro continuano a cambiare insieme
L’89% di tutti i commit come può farlo
capita quando trovo qualcosa del genere io
guarda sempre il codice ma oggi sono io
andando a delegare tale responsabilità a
così quello che accadrà ora è che lo sono
andando a mettere una copia del tag script
l’helper accanto all’helper del tag link
sei pronto
il tuo compito è vedere se riesci a individuarne alcuni
tipo di schema sottile qui già qui
andiamo qui è l’ aiutante tag script lascia
metti l’helper del tag link accanto a chiunque
notare un modello sì questo è ciò che io
trovare in un bel molti casi un caro vecchio
mio amico copia / incolla ma penso
Sono un po ‘ingiusto qui
perché questo non è veramente copia / incolla
perché hanno fatto qualcosa dove
essi hanno effettivamente aggiornato la copia
nomi di proprietà incollati e ancora più rari
questo è qualcosa che non si trova quasi mai
l’hanno aggiornato copiano incollare il
la documentazione in modo da questo i miei amici questo è
non veramente copia incolla questo è più simile
copia incolla con una placcatura in oro ma ancora
l’accoppiamento tempura è un ottimo strumento per
scopri sorprese nel nostro codice ma noi
può fare ancora di più con esso possiamo usarla
analizzare il software completo
architetture e mi piacerebbe mostrarti
un esempio dai micro-servizi perché
micro-servizi del corso in questo momento
i micro servizi sono di gran moda e così
significa solo che l’eredità di domani
i sistemi saranno micro servizi
quindi questo è l’aspetto dei micro servizi
in PowerPoint
in realtà tendono a guardare molto di più
così così siamo sviluppatori che abbiamo
imparato abbiamo bisogno di astrarre via condiviso
funzionalità quindi forse presentiamo a
libreria di comunicazione condivisa che notiamo
Parametri di accesso al database condiviso, quindi facciamolo
astratto anche quelli e di
Certo che vogliamo seguire il
raccomandazione di fornire una condivisione
modello di servizio in modo che tutti i nostri
i servizi si comportano allo stesso modo e
ovviamente vogliamo fare i nostri servizi
consumare più facilmente possibile, quindi facciamolo
introdurre un sacco di librerie client
ora ognuna di quelle scelte potrebbe andar bene
bene quello che hai da guardare fuori per
anche se nei micro-servizi è libero
l’accoppiamento è re non appena iniziamo
coppia servizi diversi tra loro
perdiamo la maggior parte dei vantaggi di a
architettura di servizio micro e sono lasciati
con un eccesso di complessità, quindi
quello che suggerisco è che usiamo il tempo
accoppiamento non su singoli file ma su
un livello di servizio e non vediamo fuori per
modelli sorprendenti come questo dove
più servizi cambiano insieme a causa di
una biblioteca condivisa o, peggio ancora, quando
più servizi evolvono insieme come
come questo e se fai un temporale
analisi di accoppiamento come quella regolarmente
sarai in grado di rilevare questo avviso
firma la tua architettura presto così
puoi reagire in tempo quindi ricorda che io
ha iniziato questa presentazione parlando
sulle organizzazioni e mi piacerebbe
fare un passo avanti e in realtà
affermano che la maggior parte dei problemi organizzativi
sono errati come problemi tecnici e il
la ragione principale per questo è perché sociale
l’informazione è qualcosa che è
invisibile nel codice non è così
lì e per affrontarli
problemi abbiamo bisogno di combinare il nostro codice
con le informazioni sociali eccone uno
approccio questo è un case study di un altro
progetto open source questo è il
sviluppo della programmazione di chiusura
linguaggio e questa è una visualizzazione
chiamato figure frattali figure frattali
funziona in questo modo consideri ogni file
come una scatola e ogni programmatore ottiene
assegnato un colore e più quello
programmatore ha contribuito a codificare il
ora puoi allargare la loro area della scatola
usa cifre frattali per un sacco di
cose diverse per esempio se aggiungi a
legenda dei colori
otteniamo un utile strumento di comunicazione
Diciamo che ci uniamo a questo progetto che vogliamo
contribuire alla chiusura e vogliamo
contribuire al modulo di valutazione in
il tuo angolo in alto a sinistra lo vediamo
il codice è scritto da Stewart Ella modo così
se abbiamo una domanda su quel codice
Stewart probabilmente ne sa molto
vediamo anche che la chiusura in generale è
scritto dallo sviluppatore blu scuro quindi se
abbiamo un ricco Hickey quindi se tu
mai messo in discussione dalla chiusura in generale
bene ricontrollare che probabilmente sa qualcosa
o due su di esso, ma le figure frattali sono
utile anche senza la legenda del colore
perché ora vogliamo cercare
modelli sorprendenti come questo dove noi
avere 20 diversi sviluppatori diversi
contribuire allo stesso pezzo di codice
e la ragione per cui vogliamo cercare
questo perché la ricerca ci ha insegnato
che il numero di sviluppatori dietro a
pezzo di codice è uno dei migliori
predittore sul numero di qualità
problemi che troverete e figure frattali
ti aiuta a identificare quei moduli a rischio
anche per i difetti figure frattali
spiega molto sui nostri punti caldi
a volte vengo con il vecchio codice
codice di basi che è stato in giro per 10-15
anni e quello che tendo a trovare in quelli
basi di codice è che la maggior parte del codice è
stabile e quindi abbiamo un numero di
punti caldi incandescenti realmente rossi nel
parti centrali di quel codice e quando io
trovare qualcosa del genere guarda sempre
indietro nel tempo e vedo che quelli caldi
i punti sono stati intorno per anni
quindi la domanda a cui un popolo rischia di farlo
Ovviamente perché nessuno ha fatto niente
su di loro
perché non hanno migliorato il codice
tu conosci la ragione per cui esiste molto
il codice non è mai migliorato la ragione è
perché le figure frattali assomigliano
questo così hai accolto il popolo
lavorare in quel codice tutto il tempo che
significa che avrai un impatto sul lavoro di tutti
quelle persone, se si tenta di ridisegnare che
pezzo e questo ci lascia in un molto
situazione sfortunata che si chiama
design immutabile e per favore fidati di me
questo sono un programmatore funzionale ma
in questo contesto non c’è niente di buono in
con immutabilità e lo trovo ironico
che non possiamo migliorare il codice perché
siamo così tante persone che ci lavorano dentro
parallelo e dobbiamo essere così tanti
persone la croce non possiamo migliorare il
codice tutto bene andiamo avanti , abbiamo
ho appena parlato della distribuzione della conoscenza
giriamo un occhio verso il nostro cieco
spot e voglio raccontarti un po ‘
storia di Paul Phillips che vedi
qui sullo schermo c’era Paul Phillips
lavora nel codice di Scala
qualsiasi parola su Scala per cinque anni e
durante quei cinque anni Paul Phillips
era il contributore numero uno di Scala
poi due anni fa Paul Phillips ha fatto
questa presentazione eccellente che io
consiglio davvero e collegato lì dove
annuncia la sua decisione di fare un passo indietro
e smettere di contribuire a Scala fino ad ora
questa è un’eccellente opportunità da vedere
cosa succede quando uno sviluppatore principale
parte così ho fatto uno studio sulla conoscenza
perdita e questo è due anni dopo Paolo
Phillips ha lasciato ecco qual è il
la perdita di conoscenza è simile a quella di Scala
vedi quelle zone rosse in questo caso loro
non rappresentano nessun hot spot, no
rappresenta il codice abbandonato che è il codice
questo è scritto dallo sviluppatore che è no
parte più lunga dell’organizzazione e questo
è qualcosa che puoi ovviamente usare
ragionare sulla distribuzione della conoscenza
vedi quel sottosistema grande al tuo
lasciato è qualcosa chiamato un compilatore
che può essere importante ma puoi anche
usalo un po ‘più in modo proattivo e guarda
per cose come questa in cui hai un
intero sottosistema abbandonato in questo caso
sono leggibili ciclo di stampa in modo da utilizzare in
caso sai che stai pianificando un po ‘
Funzionalità che vedi per programmarne alcune
tempo aggiuntivo per l’apprendimento perché
è un rischio enormemente aumentato di modificare
codice che non capiamo più tutto
destra
Sono alla mia osservazione finale ora che ho
trovato per avere successo con codice mantenibile
basi abbiamo bisogno di renderlo divertente io lavoro a
la compagnia si chiama ampere e noi la maggior parte
il nostro sviluppo in chiusura e persone
spesso mi chiedi perché hai scelto la chiusura
e potrei ovviamente dirgli cose
come si, sappiamo che facciamo analisi dei dati
e la chiusura è una ex
e lo strumento per l’analisi dei dati la cosa è
Non lo sapevo quando abbiamo iniziato
Sono stato solo fortunato il motivo del
la chiusura non ha nulla a che fare con
tecnologia
chiusura epica perché mi sembrava divertente I
volevo imparare la lingua e penso
che il divertimento è molto sottovalutato
il driver del segno in effetti il ​​divertimento è molto
sottovalutare il motivatore nel
settore del software perché il divertimento è
praticamente una garanzia che le cose si ottengono
fatto così se lavori su una base di codice estesa
ricordati sempre di metterci dentro il divertimento
anche se sei bloccato nel tuo
scelta della tecnologia e della piattaforma
c’è sempre un sacco di codice di supporto
scrivere attorno ad esso un sacco di compiti
automatizzare quindi scegli un uso banale del compito
tecnologia a tua scelta per automatizzarla
e trasformarlo in un’esperienza di apprendimento
il tuo codice ti ringrazierà per questo
quindi ho finito adesso e prima ne prendo un po ‘
domande
Voglio solo cogliere questa opportunità e
grazie mille per avermi ascoltato e
per favore ricorda che Common Lisp è un
ottimo linguaggio, grazie
quindi grazie per la prima domanda
Ho avuto cinque volte come posso ottenere questo
come posso ottenere questi parametri da solo
sulla mia base di codice yeah, quindi questo è un
domanda che spesso ottiene che tipo di
strumenti che uso e il posteriore in realtà
usa i miei strumenti e la ragione per cui lo faccio
questo perché è iniziato con
questo non c’erano strumenti disponibili
poteva fare non sorta di analizzare questo ho
volevo farlo, ho rovinato i miei
e l’ anno scorso ho deciso di concentrarmi
a tempo pieno su questo quindi so come il mio
avvio e peer sono stati sviluppati quelli
strumenti e noi in realtà hanno alcuni strumenti
disponibile ora e cosa succederà presto
è il nostro servizio in modo che tu possa realmente
registrarsi e ottenere un’analisi di tutta la vostra
codice per quel servizio e noi siamo
probabilmente lanciando un’anteprima abbastanza presto
quindi accedi se vuoi provare quell’olio
si collega molto a Github
simile sì va bene così così um
un’altra domanda qui è numero di
volte che un file è stato modificato veramente a
buona misura perché a volte potresti
entro un giorno modifica un file che conosci 60
volte sì sì c’erano in realtà due
domande lì prima di tutto sì il
il numero di volte che il file è stato modificato è
una misura davvero molto buona ed è
effettivamente sostenuto da ricerche empiriche
il numero di volte in cui un modulo è cambiato
è un miglior predittore di qualsiasi altro
metrica puoi estrarre dal codice ma
tuttavia è ovviamente importante
perché potrebbero esserci enormi differenze
in commette gli stili tra le offerte su a
progetto e che tipicamente consiglio
è che si tenta di utilizzare un commit uniforme
stile se non riesci a trovare che c’è un
metrica alternativa che è possibile utilizzare
chiamato codice zangola così invece di
calcola il numero di ti impegni
calcolare la quantità di codice che ha
cambiato e che rimuove completamente il
pregiudizio eventualmente introdotto dai commit
ed è così che estrai le tue metriche
sì, li uso e li tendo a questi due
di nuovo bastone con il numero di commit
se è possibile, perché è così
semplice metrica è così intuitivo
motivo per cui è così e l’ultima domanda
qui puoi consigliare un buon posto in
il centro città per una festa dopo
andare alla festa, sì io conosco un sacco di
cuccioli veramente buoni nel sud di
La Svezia da cui provengo non aiuterà
ti dispiace così tanto ora ti delega
che sì bene io non sono sicuro che avrei potuto aiutare
o grazie
Please follow and like us: