Press "Enter" to skip to content

Straight-line code over functions – FunFunFunction #3


è il lunedì benvenuto in un altro episodio
di fun fun function oggi stiamo andando
per parlare del valore della linea retta
codice su funzioni in linea
il codice in una funzione è molto
potente strumento e perché le funzioni sono
Tendono ad essere uno strumento così potente
usato molto in effetti
Vedo le persone che li usano anche quando loro
non è necessario e questo effettivamente diminuisce
la qualità del tuo codice e questo è
di cosa parleremo oggi
quello che stai guardando qui è un po ‘
codice da un progetto reale che ero
coinvolto con alcuni nomi è stato
cambiato per proteggere l’innocenza e in
quel processo ho fatto un errore esattamente
cosa fa questo codice non è importante ma
ciò che è importante è che è un manico
un evento stampa chiave I calcola una lettera
qui poi si scopre cosa è il rotolo
container è un po ‘di magia qui
se ha solo un piccolo contenitore
afferra che scorre contenitore e roba
così e se trova la pergamena
contenitore troverà il genitore del
scroll container estrae l’URI da
quello e se l’URI è valido sta per
emettere una richiesta di salto lettera su e Central
Spedizione così intuitiva che mi sento come me
dovrebbe fare qualcosa con questo codice
non ci sono commenti ed è solo uno
grande funzione che fa un bel po ‘ di
cose e questo è quello che è successo in questo
progetto abbiamo sentito che questo è un contenuto
unità e questa è una unità così possono
probabilmente sarà diviso in due parti separate
funzioni come questa
quindi questo è lo stesso per l’ evento stampa chiave
tranne che abbiamo rotto il
scorrere il blocco contenitore qui in a
la funzione scroll container è la stessa
cosa tranne che all’interno di una funzione e
abbiamo anche scoppiato l’altra logica
in una lettera di lista di ordinamento salta ed è dentro
qui a me sembra che stiamo aggiungendo
valore qui sembra come se avessimo aggiunto un
un po ‘ di documentazione nominandoli
blocchi come funzioni ci sentiamo come noi
hanno diviso e conquistato correttamente qui
sembra che abbiamo rotto il problema di
l’ evento onkeypress in due cose
ricevendo un contenitore di pergamena e la spada
è la lettera che salta anche a noi
hanno reso il codice più leggibile perché
mentre otteniamo solo un contenitore di scorrimento e
quindi se abbiamo un contenitore di scorrimento che facciamo
l’ elenco di ordinamento
salto di lettere intendo questo poco di
voglio dire che questo è molto più leggibile
di tutta questa faccenda , davvero
sembra che stiamo facendo una buona cosa
qui ma quando passi un po ‘ di tempo
pensandoci si scopre che noi
non parliamo del primo sentimento
che avessimo avuto quelle funzioni
stai documentando il codice guardando
il codice originale abbiamo preso questo
blocco qui e nella variante con il
funzione scomposta qui che abbiamo dato
è un nome che si ottiene scroll container e
che ci sembra una cosa buona proprio noi
ho creato questa parte del codice
questo è ciò che abbiamo detto al futuro
programma o qualcosa di giusto comunque lo sono
aggiungiamo davvero qualcosa facendo
questo in una funzione
non potremmo semplicemente fare un commento qualcosa
come questo forse
sì il rotolo e fino ad oggi qualcosa
così non so che sento spesso
i programmatori dicono che dovrebbe essere un buon codice
documentazione morbida e non si dovrebbe usare
troppi commenti ma quando scende
ad esso un commento come questo è davvero
la stessa cosa di fare questo il fatto
che questa è una funzione in realtà non
darti qualsiasi tipo di sicurezza che hai
in sostanza ho scritto un commento molto
di persone non gradiscono commenti come questo
perché tendono a diventare stantii e comprare
stantio intendo come se potessi aggiungerne un po ‘
codice qui che farà cose nuove e
questa descrizione non sarà più
preciso ma la cosa è che lo farai
hanno ancora quel problema con a
funziona anche se aggiungo un nuovo codice qui
fa cose che non si adattano
il nome della funzione speriamo che il
documentazione il commento la funzione
commento o qualsiasi cosa tu voglia chiamare
questo tipo di schema continuerà a essere stantio
va bene, forse non aggiunge molto dentro
termini di documentazione ma che dire
dividendo conquistando rompendo ottenere scroll
contenitore fuori e rompendo elenchi di ordinamento
lettera salta fuori abbiamo diviso il
problema in due parti e ora possiamo
ragione su di loro in modo indipendente giusto
Beh, non proprio
solo perché hai spostato il codice da uno
posizionarsi su un altro non significa veramente
che hai separato il problema I
significa che ci sono funzioni del genere per
esempio basta guardare due lettere minuscole qui
su come sei prendendo una corda e facendo
è una minuscola che è molto ben definita
e un problema generico che non lo faremmo
trarre vantaggio dall’avere in fila
questo ci confonderebbe comunque
il contenitore di scorrimento è molto specifico per
problema che stiamo risolvendo qui voi
non posso entrare nel contenitore di scroll e
motivo per questo problema completamente
indipendentemente da ciò che sta accadendo in
alla pressione dei tasti o lo stato della
l’applicazione in generale è possibile farlo
quando stavi scrivendo in minuscolo ma
non puoi davvero farlo con get scroll
contenitore questo è questo è solo un
l’illusione della separazione non è così
separazione effettiva delle preoccupazioni che hai
in realtà non ha disaccoppiato queste funzioni
da tutto ok, forse no
davvero rotto il problema, ma come farlo
l’abbiamo reso più leggibile intendo questo
così facile da seguire, ottiene solo il
scorrere il contenitore e quindi se ha un
scorrere il contenitore fa una sorta di minimo
piccolo lavoro bene no non proprio
se un altro programmatore sta leggendo questo
la funzione è perché sono per alcuni
ragione cercando di capire cosa
l’inferno sta accadendo è così
alto livello di astrazione che è
probabilmente non sarà molto utile per
loro così dovranno tuffarsi in loro
quindi il programmatore dovrebbe entrare
prendi il contenitore di scorrimento e leggi qui e
poi ce ne dobbiamo bene quindi c’è una
selettore e devono scoprirlo
quel selettore viene da lì okay
ritorna scroll container allora hai
per risalire qui e poi la pergamena
contenere okay chiama pelle senza spada
saltare allora devo trovare quella funzione
è quaggiù e leggo qui qui qui
qui qui qui confrontare questo al
funzione di linea retta che avevamo
prima del refactoring possiamo farlo
leggi semplicemente il codice dall’alto verso il basso
e vedi cosa succede
fino a quando non viene inviato l’ evento di spedizione
è molto più facile ragionare su questo
saltando avanti e indietro c’è qualcosa
in realtà una parola per questo è chiamato
Indiretta che potresti aver sentito usare
nel contesto di strati di riferimento indiretto
e a cosa si riferisce indiretta in
l’informatica è che ti riferisci a
valore per riferimento invece di
facendo riferimento ad esso immediatamente un esempio
sarebbero le funzioni scomposte che
facciamo qui ci riferiamo a questo blocco di codice
ma potrebbe anche essere variabili come
questo selettore qui che abbiamo rotto
fuori e lo penso personalmente
Voglio dire che il selettore è usato in due casi
qui ma mi sento come solo due istanze
di una variabile è discutibile per scoppiare
perché la persona che legge questo lo farà
devo saltare indietro e lo penso
potrebbe effettivamente essere più leggibile e
codice gestibile semplicemente in linea
potrebbe farti male un po ‘ che c’è
la duplicazione che conosci e la duplicazione è
generalmente cattivo perché significa che se
devi cambiare il tuo sistema allora tu
devi cambiarlo in due posti ma con
tale sostituzione in questo caso dove è
solo due casi non è così difficile
davvero e ne abbiamo acquisito molto
leggibilità in questo modo è molto
codice più facile da seguire se il selettore
è stato utilizzato in dieci posti diversi in tutto
l’app e non solo questa funzione I
mi sentirei davvero diverso
ma in questo caso mi sento come una duplicazione
è una scelta molto migliore rispetto al
indiretta infine un altro sottile
problema che vorrei parlare
è il fatto che rompere le cose
nelle funzioni rende un po ‘più difficile
uno sviluppatore per rimuovere il codice dal tuo
progettare e rimuovere il codice è molto buono
cosa perché come ho parlato
prima meno codice in barre e quindi cosa
intendo quando dico che diventa più difficile
per rimuovere le cose bene in questo caso io
ho appena scritto per ottenere il contenitore di scorrimento
è facile esserlo per me ragionare
Questo
ed è molto piccolo ma nel tempo lo farò
dimenticare il keypress diventerà più grande e
nuovi programmatori potrebbero entrare nel progetto
e ottenere contenitore di scorrimento sarà solo un
chiamata di funzione molto piccola in questo grande
progetto ora se qualcuno vuole cambiare
codice relativo per ottenere il contenitore di scorrimento
Voglio dire rimuovere la chiamata o forse cambiare
la logica al suo interno ora devono farlo
fai un’indagine per scoprire se altro
pezzi di codice usano una scrollata
contenitore non fraintendermi, eccomi
non dicendo che non dovresti mai rompere
cose fuori in funzioni ma hai bisogno
essere consapevoli che c’è una manutenzione
costa a farlo così quando lo stai facendo
ha bisogno di aggiungere un sacco di valore da compensare
questo costa, quindi ricapitoliamo un po ‘
cose in funzioni come questa è una
strato di riferimento indiretto uno strato di
l’indirezione potrebbe essere una cosa cattiva o a
buona cosa in questo caso direi questo
è una brutta cosa questo davvero
non aggiunge nulla che non sia da dire
a volte l’indecisione è sempre cattiva
è molto bello avere il codice diretto
come ad esempio minuscolo qui è molto
bello non dover pensare al
implementazione dell’involucro inferiore presso
stringa quando stiamo risolvendo completamente
problema diverso e la ragione è
bello perché è molto piccolo e
problema ben definito e anche molto
problema generale che è completamente
separato da ciò che stiamo cercando di
risolvi al momento che è diverso
dal contenitore di scorrimento get qui che
non è affatto generico affatto
ben definito e per nulla piccolo e
è sicuramente correlato a ciò che siamo
facendo così vogliamo che a portata di mano noi
non voglio indiretto che se tu
qualcosa di indiretto come ottenere scroll
contenitore che si deve ragionare su
il programmatore che ha bisogno di ragionare e
capisci il tuo codice
dovremo andare su e giù e tornare indietro
e avanti nel tuo codice e questo è male così
La morale della storia è un po ‘più
restrittivo sull’aggiunta di strati di
indiretta e questo è importante
perché ti sembrerà di aggiungere
valore indipendentemente dal fatto che tu o meno
sono così assicurati di esserlo
secondo indovinare la tua intuizione di oggi
il video è stato ispirato da un segmento in a
parla di Jonathan Blow lo sviluppatore di
voto quindi se hai trovato questa idea
Intrigante si dovrebbe verificare che
parlare l’ ho collegato nello spettacolo
descrizione Io sono colui che fa il
parlare qui, ma è il tuo spettacolo così dentro
Per fare un bello spettacolo ho bisogno di sapere
chi sei così gentilmente presentarti
nei commenti qui sotto dimmi che tipo
di programmatore sei oggi e come tu
vorrei migliorare hai appena
ho guardato un episodio di fun fun function
il divertimento per la funzione è uno show settimanale dove
cerchiamo di diventare più fiduciosi e
entusiasta della programmazione esplorando
idee selvagge tutta la saggezza e il divertimento
parlando di migliorare non perdere il
la prossima puntata iscriversi in basso o
seguimi su Twitter a MP Jamie fino a quando
il prossimo lunedì rimani curioso
Please follow and like us: