Press "Enter" to skip to content

Leaky abstractions – MPJ’s Musings – FunFunFunction #58


buon lunedì mattina sono mpj e tu sei
guardando la fun fun function che potresti essere
notando che ho un po ‘di sexy
voce va e questo è perché ho un
freddo quindi lascia che ti dia una panoramica di
quello di oggi il video sta per essere circa
oggi parleremo di leaky
l’astrazione delle astrazioni ci consente di
Trattare qualcosa di complicato come uno
l’astrazione delle cose semplici è molto più difficile
di quanto pensiamo e quindi principalmente
fallisce un’astrazione che perde è un
astrazione che non riesce a incapsulare
e un’astrazione che perde potrebbe aggiungere di più
la complessità di quanto rimuove , iniziamo
essendo un po ‘filosofico cosa
è un’astrazione davvero come non solo
programmazione ma in generale a
l’astrazione è un concetto immaginario che
ci consente di pensare a qualcosa di grande
e complicato come un piccolo semplice
cosa per esempio nel mondo reale noi
può raggruppare chihuahua e labrador e a
carlino in un concetto un concetto immaginario
chiamato cane questo cane generico astratto
in realtà non esiste se ti venisse chiesto
disegnare un cane che probabilmente disegneresti
qualcosa stilizzato con una coda e alcuni
orecchie giuste anche se la cosa vera
un cane è molto più sfumato e
complicato di così perché lo facciamo
qual è lo scopo degli umani che usano
astrazioni bene usiamo astrazioni a
pensa e comunica in modo più efficace
se non avessimo astrazioni, lo faremmo
non essere in grado di dire frasi come se
il tuo cane è malato dovresti prendere il tuo
cane dal veterinario quindi le parole cane e
veterinario sono concetti astratti
che racchiude molta complessità così
che possiamo pensarci senza
essere distratto da tutta la complessità
questo è dietro
la parola o l’ ostruzione in
servono le astrazioni di programmazione
essenzialmente lo stesso identico scopo che noi
usalo per impacchettare spesso molte complicazioni
cose in una singola entità semplice
esempio potrebbe autenticare un utente
ci sono molte parti mobili in
autenticando un utente e diciamo così
stai attualmente lavorando su un’app che
ha utenti ma al momento stai lavorando
sul flusso di immagini del profilo vi flusso
vuoi che l’autenticazione sia astratta
via separato dal mondo che
sei attualmente nell’immagine del profilo
carica il mondo se l’autenticazione è
correttamente astratto via sarà
in grado di pensare a te conosce l’utente come
un concetto molto semplice e non si preoccupano
dettagli su di esso, come se lo fosse
autenticato o no e questo è buono
perché questo ti permetterà di concentrarti
completamente sul caricamento dell’immagine del profilo
problema a cui stai cercando di risolvere
mano
la maggior parte delle astrazioni sono create da te
la tua app ma le astrazioni sono a
il loro meglio quando siamo riusciti a creare
astrazioni con le quali possiamo condividere
altri programmatori nella tua azienda o
forse anche nel tuo settore
esempio di hashing che non vuoi memorizzare
password in chiaro nel tuo database così
i matematici hanno inventato l’hashing
algoritmi praticamente tutte le applicazioni
che hanno qualche forma di autenticazione
ha bisogno di hashing e per fortuna c’è abbastanza
ci sono un sacco di astrazioni pronte
che ci sono disponibili, basta andare su MPM
est né uno sha-1 e la trama
il tuo hai hashing nella tua app questo
il problema è così ben incapsulato
In realtà non ho mai dovuto implementare un
algoritmo di hash me stesso è solo
fantastico che è il rosa e soffice
e bella parte della moneta, ma io voglio
parla del lato oscuro delle app
azione ciò che è hashing di perdita è un bene
esempio di un’astrazione che perde
molto poco e cosa intendo con quello
che è molto raro che sia necessario
sapere qualcosa sull’intestino così
parla dell’hashing
implementazione per lavorarci
è questa scatola nera molto semplice che tu
fai una cosa e ottieni una cosa
e funziona così ogni volta
e il motivo per cui l’hashing funziona davvero
bene come un’astrazione o almeno il
il motivo principale è che ha avuto successo
identificato il caso generale cosa intendo
è così che servono milioni di app
hashing e hanno in gran parte bisogno di hashing in
esattamente nello stesso modo in cui fai roba in a
stringa e ottieni una stringa con hash
va bene quindi quale sarebbe un esempio di
di fronte a quello che sarebbe un esempio di un
astrazione che non identifica la sua
usa il caso come pulito e quindi è un
per questo penso che l’ astrazione sia più fiacca
dovremmo raggiungere le richieste HTTP
librerie quelle di alto livello e per
questo particolare esempio che sto per fare
concentrati su Axios se non ne hai mai sentito parlare
Axios è completamente a posto, lo farò
spiegare per fare richieste HTTP
c’è questa API nei browser moderni
chiamato API di recupero è l’API di recupero
tipo di ossa nude
quindi le biblioteche come Axios vogliono essere a
offre un po ‘più di alto livello Axios
funzionalità che l’API di recupero non ha
come cancellazione o timeout personalizzato
impostazioni
Axios fa anche un paio di cose
automaticamente per te
Axios considera estremamente comune
un esempio è quello
Axios analizzerà JSON per te
automaticamente
mentre devi dire l’ API di recupero X
fondamentalmente quello è qualcosa che
vuoi fare un altro esempio
comportamento in Axios e quello che io
voglio passare un po ‘di tempo a parlare di è
il fatto che
Axios costringerà gli errori HTTP in
errori javascript quindi se la richiesta
il codice di stato è quindi 404
Axios in realtà lo butterà o tornerà
che come errore javascript l’API di recupero
integrato nei browser non lo fa
fino a quando la richiesta di rete è
il successo poi prenderà in considerazione questo
per essere una risposta di successo e lo farà
darti l’ oggetto risposta e poi
Dovrai leggere il codice di stato
e determinare se pensi che a4 o
il 404 è un errore nella tua app o
Non penso che sia giusto dire che la maggior parte
gli sviluppatori lo farebbero davvero
accesso ma non è assolutamente
ognuno di noi non è così generico
aveva una libreria che faceva proprio questo
Maledire 404 errori in errori JavaScript
ma l’ API di back – end che stavamo usando
aveva 404 come una sorta di caso valido quando il
l’utente non era ancora stato creato così noi
necessario per gestire quello che era normale
flusso nell’applicazione così che cosa abbiamo avuto
a che fare con questa libreria di alto livello
per creare la libreria di wrapper su di esso
per restituire l’errore in una risposta
in modo che potessimo avere un livello generico
ha funzionato nel modo in cui ci aspettavamo
la nostra app ora Axios è molto meglio di
la biblioteca nella mia storia ha accesso come un modo
di ignorare questo comportamento ma
non cambia il fatto che devi
sapere le cose su come Axios funziona all’interno
al fine di utilizzare Axios e questo è ciò che
intendiamo con un’astrazione che perde quando tu
metti qualcosa come Axios accanto a a
qual è l’ etichetta per un non perde
astrazione a tenuta d’aria forse come
il pacchetto sha-1 su NPM
che è solo una funzione che prende un
stringa e ti dà un hash di primavera
allora vedi che c’è un enorme
contrasto tra quanto è necessario
conoscere la realtà sottostante
l’astrazione in questi due casi e
alcuni di voi probabilmente stanno pensando e
bene questo non sembra una fiera
confronta il problema che prova Axios
incapsulare è molto più ampio di quello
sha-1 cerca di incapsulare ma quello è
tipo di punto è la ragione per cui
sha-1 non perde il modo in cui l’accesso
sha-1 funziona davvero bene come un
astrazione perché è così molto
costretto così sto dicendo che Axios è
una cattiva libreria che non dovresti usare no
Non lo sto dicendo, ma lo sto dicendo
è un’astrazione che perde ed è necessario
essere consapevoli che stai portando un
una certa quantità di complessità nel tuo
progetto quando stai perdendo tempo
astrazione
se tiri un’astrazione che non perde
come sha-1 nel tuo progetto nessuno su
il tuo team dovrà trascorrere del tempo
familiarizzare con lo sha-1
mostra e perde così poco che sei molto
improbabile che sia necessario approfondire
come funziona dietro le quinte ma tu
sarà se si utilizza un’astrazione come
Axios perché perde e lo è
importante notare qui che potrebbe
essere a posto come leaky non significa che a
la biblioteca è inutile e devi farlo
evitarlo significa solo che è necessario
essere consapevoli del costo si aggiungerà l’accesso
un po ‘di complessità per il tuo
progetto ma potrebbe anche rimuovere molto
di complessità, ad esempio se la tua app
usa scadenze o cancellazioni personalizzate
allora il caso in cui l’accesso diventa molto
più forte perché se riesci a uscire
scrivendo quella logica da soli è un po ‘troppo
più ovviamente buon compromesso sul
altra mano se aggiungi l’accesso alla tua app
forse perché pensi che io sia Oh
bisogno di queste funzionalità che accedono
offerte in futuro, ma tu mai
in realtà finiscono per usarli poi tu hai
ho appena aggiunto una sorta di negativo netto in
complessità alla tua app aggiungendo assiali
e quello fa schifo in quel caso lo faresti
sono stati molto meglio da solo utilizzando
prendi subito e crea il tuo
piccolo involucro intorno a quello probabilmente come
la semplice funzione e quello potrebbe avere
stato molto più facile per la tua squadra a
motivo per cui potevano semplicemente andare
guarda nella funzione e guarda cosa
l’inferno stava accadendo mi permetta di riassumere
i miei pensieri abbiamo parlato di perdite
astrazioni astrazioni ci permette di
Trattare qualcosa di complicato come uno
cosa semplice ma l’astrazione è più difficile
di quanto pensiamo e quindi soprattutto
fallisce che ci porta al fatto che a
l’astrazione leaky è un’astrazione che
non riesce a incapsulare e perde
l’astrazione potrebbe aggiungere più complessità
che rimuove questo non significa quello
le astrazioni che perdono sono inutili, ma è così
significa che devi essere in grado di individuare
quando un’astrazione perde e sii
consapevole del costo di portare in
il tuo progetto sono i miei pensieri su questo
ma soprattutto cosa sono i tuoi
non esitate a lasciare un positivo o
commento negativo in basso o in basso
meglio rispondere al commento di uno di
i tuoi colleghi spettatori ancora una cosa
prima di partire hai appena guardato
un episodio di fun fun function che rilascio
questi ogni lunedì mattina Oh 800 GMT se
ti è piaciuto questo episodio che dovresti controllare
questa playlist con più episodi
come questo sono mpj fino al prossimo lunedì
mattina per favore
stai curioso
Please follow and like us: