Mostra HN: Rev-dep - 20 volte più veloce di custruisce alternativa à knip.dev in Go
Cumenti
Mewayz Team
Editorial Team
L'impositu oculatu nantu à ogni squadra di software in crescita
Ogni prughjettu di u software chì sopravvive abbastanza longu eventualmente affruntà a stessa crisa tranquilla: a basa di codice cumencia à cresce più veloce di ciò chì a squadra pò capisce. Funzioni chì nimu ùn chjama, esportazioni chì sò state create per una funzione spedita in 2022 è silenziu deprecata, cumpunenti chì campanu nantu à u discu, ma ùn ghjunghjenu mai à un navigatore. Questu ùn hè micca sloppiness - hè fisica. E squadre si movenu rapidamente, i bisogni cambianu, è l'entropia hè implacable. A quistione ùn hè micca se a vostra basa di codice hà u codice mortu. A quistione hè quantu vi costa avà.
Sicondu a ricerca da a squadra di produtividade di l'ingegneria di Google, i sviluppatori passanu una media di 42% di u so tempu di codificazione leghje è capisce u codice esistente invece di scrive una nova funziunalità. Quandu u codice esistente include millaie di linii chì ùn servenu più à alcunu scopu, quellu percentualità hè ancu più altu. Per una squadra di dece ingegneri, questu hè in modu efficace quattru impiegati à tempu pienu chì ùn facenu nunda di produtivu - micca perchè sò pigri, ma perchè e so arnesi ùn sò micca ritmu cù a velocità à quale u software invechja.
Hè per quessa chì una nova onda di strumenti di sviluppatore custruita nantu à lingue di sistemi cum'è Go è Rust genera una vera eccitazione in i circoli di l'ingegneria. Strumenti cum'è Rev-dep - un analizzatore di dipendenza inversa chì dice di eseguisce 20x più velocec'è u popular knip.dev basatu in JavaScript - rapprisentanu più cà solu una migliione incrementale. Segnalenu un ripensu fundamentale di a manera di strumentà u prucessu di sviluppu stessu.
Ciò chì l'Analisi di Dipendenza Inversa In Attu Fa
Prima di capisce perchè a velocità hè cusì impurtante, aiuta à capisce ciò chì l'arnesi di analisi di dependenza facenu veramente. In un prughjettu JavaScript o TypeScript, ogni schedariu importa da altri schedari. Ogni funzione, classa o custante chì hè esportata da un modulu crea una dipendenza potenziale - qualcosa chì l'altri parti di a basa di codice puderanu s'appoghjanu. L'analisi di dipendenza "inversa" cambia sta perspettiva: invece di dumandà "di chì dipende stu modulu", dumanda "chì dipende di stu modulu?"
Se a risposta à a seconda dumanda hè "nunda", avete trovu codice mortu. Un'esportazione chì nunda importa hè rifiutu. Una funzione chì nunda chjama hè u debitu tecnicu cù un tassu d'interessu mensuale. Strumenti di dipendenza inversa camminanu sistematicamente u vostru graficu tutale di u prugettu, mape ogni relazione trà i moduli, è superficia i nodi chì ùn anu micca cunnessione in entrata. U risultatu hè una verificazione precisa di tuttu ciò chì in a vostra basa di codice chì puderia esse eliminata in modu sicuru.
Knip.dev faci questu bè per i prughjetti JavaScript è TypeScript, è hè largamente rispettatu in a cumunità. Ma hè scrittu in JavaScript, chì significa chì corre nantu à Node.js, chì significa chì eredita tutte e limitazioni di rendimentu unicu di Node quandu si faci l'analisi di u sistema di file à grande scala è l'analisi di simboli. Per un prughjettu cù i schedari 500, questu hè bè. Per un prughjettu cù 50 000 schedari - u tipu di monorepo chì alimenta i prudutti SaaS di l'impresa reale - l'analisi pò piglià minuti. E minuti, à a cadenza di i pipelines CI / CD muderni operanu, hè un dealbreaker.
Perchè Go cambia u calculu
Go hè statu cuncepitu da u principiu per esattamente u tipu di carichi di travagliu chì l'analisi di dipendenza esige: I/O veloce di file, eccellenti primitive di simultaneità, è un tempu di runtime minimu. Induve Node.js processa un compitu à u tempu nantu à un filu unicu è si basa in callbacks è prumetti di falsi parallelismu, Go pò generà millaie di goroutines chì veramente eseguite in parallelu in tutti i nuclei CPU dispunibili. Per un compitu chì implica leghje centinaie di fugliali, analizà i so AST, è custruisce un graficu di relazioni simboliche, sta differenza architettonica si traduce direttamente in u rendiment di l'orologio di muru.
L'accelerazione 20x rivendicata da Rev-dep ùn hè micca magicu - hè ciò chì succede quandu currisponde à a lingua ghjusta à u prublema ghjustu. A natura compilata di Go significa ancu senza penalità di riscaldamentu JIT. Da l'iniziu friddu à l'analisi cumpleta, un binariu Go hè operatu à u rendiment vicinu à u piccu. L'implicazione pratica hè chì l'analisi chì hà pigliatu 90 seconde in un strumentu basatu in Node pò compie in sottu à 5 seconde in un equivalente Go ben implementatu. Questa hè a diffarenza trà un cuntrollu chì i sviluppatori saltanu perchè "pigliu per sempre" è quellu chì eseguisce in ogni cummitteddu senza chì nimu s'avvisa di l'overhead.
"U megliu strumentu di sviluppatore hè quellu chì esce da a strada. Se a vostra suite d'analisi aghjunghje trè minuti à ogni pipeline CI, i sviluppatori truveranu modi per saltà. A velocità ùn hè micca piacevule - hè u prerequisite per l'adopzione."
U Business Case per Codebase Hygiene
U codice mortu ùn hè micca solu un prublema di l'estetica di u sviluppatore - hà cunsequenze cummerciale concrete chì si cumponenu cù u tempu. Cunsiderate ciò chì e basi di codice gonfiate costanu veramente l'urganisazioni:
- Tempi di custruzzione più lunghi chì rallenta i pipelines di implementazione è riduce u numeru di versioni chì una squadra pò spedite in modu sicuru à settimana
- Carica cognitiva più alta per l'ingegneri di imbarcu, chì deve passà settimane per distingue i mudelli attivi da quelli abbandunati
- Dimensioni di bundle aumentate chì dannu u rendiment di l'applicazioni, in particulare in l'applicazioni web induve ogni kilobyte affetta i tempi di carica è i tassi di cunversione
- Espansione di a superficia di sicurezza - u codice mortu chì cuntene sempre dipendenze hè sempre un vettore di vulnerabilità in quelli pacchetti
- Test suite bloat induve e teste per a funziunalità sguassata cuntinueghjanu à eseguisce, cunsuma minuti CI, è occasionalmente fallenu in modi confusi
- Falsi signali di cumplessità chì rendenu e decisioni architettoniche più difficili perchè ùn hè micca chjaru ciò chì hè portante è ciò chì hè vestigiale
Un studiu 2023 da u gruppu DevOps Research and Assessment (DORA) hà truvatu chì e squadre cù pratiche di qualità di codice forte - cumpresa a rimozione regulare di codice mortu - spedite 2,4 volte più freti è avianu 7 volte più bassi tassi di fallimentu di cambiamentu cà e squadre chì lascianu accumulà u debitu tecnicu. A correlazione ùn hè micca casuale. E basi di codice pulite sò più faciuli di ragiunà, più faciuli di pruvà, è più faciuli di cambià in modu sicuru.
Per l'imprese chì custruiscenu nantu à e piattaforme cum'è Mewayz - chì alimenta 138,000 utilizatori in 207 moduli di cummerciale distinti chì varienu da CRM è paghe à gestione di flotta è strumenti di link-in-bio - a salute di codebase hà multiplicatu i pali. Quandu a vostra piattaforma copre tanti duminii funziunali, a superficia di integrazione trà i moduli hè enormu. L'esportazioni inutilizate in un modulu core ponu creà false aspettative per i moduli dipendenti, attivanu re-renders innecessarii in a capa di UI, è complicà u graficu di dipendenza in modi chì facenu i cambiamenti futuri risicatu.
Integrazione di l'analisi di dependenza in i flussi di travagliu di sviluppu mudernu
U veru putere di l'attrezzi veloci cum'è Rev-dep ùn hè micca a pulizia una volta chì permette - hè a capacità di eseguisce analisi cuntinuu cum'è parte di u vostru ciculu di sviluppu normale. Quandu una scansione di codice mortu dura 4 seconde invece di 4 minuti, pudete aghjunghje à i vostri ganci pre-commit. Quandu ci vole 4 seconde invece di 4 minuti, u vostru pipeline CI pò fallu una dumanda di pull chì introduce novi esportazioni inutilizate invece di lascià accumulà in silenziu.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →Questu passaghju da "avvenimentu di pulizia trimestrale" à "porta di qualità cuntinuu" hè analogu à ciò chì hè accadutu quandu i linters sò diventati abbastanza veloci per eseguisce ogni tastu in un IDE. Prima chì ESLint funziona in tempu reale, u stile di codice hè statu infurzatu da rivisioni di codice periodiche. Dopu, hè diventatu ambient - parte di i sviluppatori di loop di feedback sperimentati mentre scrivevanu codice, micca dopu. L'analisi di dipendenza rapida pò creà a stessa pressione di qualità ambientale intornu à u codice mortu.
L'installazione di stu flussu di travagliu implica tipicamente trè cumpunenti:
- Analisi di basa: Eseguite l'uttellu contr'à a vostra basa di codice attuale per capisce a scala di u codice mortu esistente. Ùn pruvate micca di riparà tuttu in una volta - triage per modulu è priurità per risicu.
- Infurzazione CI: Aghjunghjite l'analisi à u vostru pipeline cun un sogliu - fallu nantu à qualsiasi esportazioni inutilizate di novu introduttu, ma ùn falla micca in quelli esistenti finu à chì l'avete puliti.
- Sprints di pulizia pianificati: Aduprate l'output di l'uttellu per guidà u travagliu di pulizia regulare, seguitendu u numeru di codice mortu cum'è una metrica di salute di a squadra in u tempu.
Cosa i Segnali di Rinascimentu Go Tooling per i Costruttori SaaS
Rev-dep face parte di un mudellu più largu in l'uttellu di sviluppatore: alternative d'altu rendimentu à l'arnesi JavaScript stabiliti, custruite in Go o Rust, appariscenu in ogni categuria. Biome hà rimpiazzatu ESLint è Prettier per parechje squadre. Turbopack è Rspack manghjanu u pranzu di Webpack. Bun hè sfida à Node.js stessu. U filu cumunu hè chì questi strumenti ùn offrenu micca solu una migliione incrementale - offrenu miglioramenti in funzione di u passu chì cambianu ciò chì hè praticu.
Per l'imprese SaaS chì custruiscenu prudutti cumplessi, multi-moduli, sta rinascita di l'uttellu hà implicazioni dirette per a velocità di l'ingegneria. L'architettura di 207 moduli di Mewayz - chì copre tuttu, da HR è salari à sistemi di prenotazione è dashboards analitici - rapprisenta esattamente u tipu di grande codice interconnessu induve l'analisi di dependenza rapida è precisa diventa operativamente critica. Quandu un cambiamentu à un modulu di utilità cumunu puderia teoricamente sferisce à traversu decine di moduli di funziunalità, avè una visibilità quasi immediata in u graficu di a dependenza attuale ùn hè micca solu cunvene - hè u tipu d'infrastruttura chì impedisce incidenti di produzzione caru.
A capacità di risponde à "ciò chì in realtà usa sta funzione" in menu di cinque seconde invece di cinque minuti cambia a manera chì l'ingegneri piglianu e decisioni. Abbassa u costu di l'investigazione, chì significa chì l'ingegneri investiganu più spessu, chì significa chì facenu megliu decisioni. Questu hè u ritornu cumulativu di l'investimentu in l'uttellu rapidu chì spessu si trascura quandu l'urganisazioni pensanu à a spesa di produtividade di u sviluppatore.
Fendu l'eliminazione di u codice mortu parte di a vostra cultura di l'ingegneria
A sola tecnulugia ùn crea micca basi di codice pulite - a cultura face. Strumenti cum'è Rev-dep furnisce a capacità, ma trasfurmà quella capacità in una pratica coherente richiede un impegnu organizativu. I squadre più efficaci trattanu e metriche di codice mortu cum'è trattanu a cobertura di teste: cum'è un indicatore visibile è tracciatu di a salute di a basa di codice chì hè rivista in riunioni di ingegneria è fattu in a pianificazione di sprint.
Alcune pratiche culturali specifiche chì funzionanu bè includenu a designazione di "ghjorni di eliminazione di codice" - avvenimenti periodichi induve l'obiettivu esplicitu hè di sguassà u codice invece di aghjunghje. Netlify hà famosu gamificatu questu eseguendu classifiche chì traccianu e linee nete eliminate. Stripe hà scrittu publicamente nantu à a so pratica di trattà l'eliminazione di codice cum'è una cuntribuzione ingegneria di prima classe, uguale in valore à u travagliu di funziunalità. U cambiamentu di mentalità necessariu hè di ricunnosce chì u megliu codice hè u codice chì ùn esiste micca: ogni linea chì ùn scrivite micca hè una linea chì ùn deve mai mantene, pruvà, debug, o spiegà à un novu assuciatu.
Per l'imprese di produttu chì gestiscenu operazioni cummerciale cumplesse, u parallelu fora di l'ingegneria hè ugualmente istruttivu. A listessa disciplina chì rende i codebases più sani - auditi regulari, pruprietà chjaru, eliminazione di e cose chì nimu usa - rende ancu i prucessi di l'affari più sani. Piattaforme cum'è Mewayzsò custruite precisamente per dà à l'imprese stu tipu di chiarezza operativa: una vista unificata di quali strumenti sò aduprati, quali flussi di travagliu generanu valore, è induve u pesu mortu di l'urganizazione s'accumula. Ch'ella sia verificatu l'esportazioni di u software inutilizatu o i prucessi di cummerciale inutilizati, a disciplina sottostante hè identica.
L'arnesi diventanu più veloci, i loops di feedback sò più stretti, è e squadre chì investenu in l'infrastruttura di igiene di codebase oghje custruiscenu un vantaghju cumpostu chì pagherà dividendi per anni. Rev-dep è a so cohorte di strumenti di sviluppatore Go-powered ùn sò micca solu benchmarks interessanti - sò a strata di l'infrastruttura chì rende pussibule a velocità di software sustenibile. È in un mondu induve a velocità di iterazione hè u vantaghju cumpetitivu primariu per l'imprese di software, ùn hè micca una preoccupazione periferica. Hè tuttu u ghjocu.
Domande Frequenti
Cosa rende Rev-dep più veloce di knip.dev ?
Rev-dep hè custruitu in Go, una lingua di sistemi cumpilata ottimizzata per a concurrenza è a velocità di esecuzione bruta, mentri knip.dev corre nantu à Node.js. Questa differenza architettonica permette à Rev-dep di analizà i grafici di dipendenza è detectà u codice mortu finu à 20 volte più veloce. Per grandi monorepos o basi di codici cumplessi - cum'è l'architettura di 207 moduli chì alimenta u SO cummerciale di Mewayz in app.mewayz.com - chì a gap di rendiment si traduce in tempu reale salvate in ogni CI run.
Quantu codice mortu accumula un prughjettu tipicu in crescita?
I studii è i rapporti anecdotici da i squadre di ingegneria suggerenu chì e basi di codici maturi ponu purtà da u 10% à u 35% di u codice inutilizatu o inaccessibile. I cumposti prublemi cum'è e squadre scalanu - e funzioni sò obsolete, l'API cambianu, è i moduli sò abbandunati senza pulizia. Piattaforme cum'è Mewayz, chì cunsolida più di 207 moduli di cummerciale in un unicu sistema operatore $ 19/mo, si basanu assai nantu à a rilevazione sistematica di codice mortu per mantene a basa di codice magra è mantenevule.
Rev-dep hè adattatu per e squadre chì ùn utilizanu JavaScript o TypeScript?
Rev-dep hè attualmente focu annantu à l'ecosistema JavaScript è TypeScript, facendu una alternativa diretta à knip.dev per quelli ambienti. U supportu per lingue supplementari pò espansione cum'è u prughjettu maturu. Se u vostru squadra custruisce prudutti basati in u web o strumenti SaaS - simile à cumu Mewayz furnisce u so OS di cummerciale cumpletu in app.mewayz.com - è a vostra pila hè JS / TS-heavy, Rev-dep vale a pena evaluà cum'è parte di a vostra catena di strumenti di sviluppatore oghje.
Puderaghju integrà Rev-dep in a mo pipeline CI/CD esistente ?
Iè. Rev-dep hè cuncepitu cum'è un strumentu CLI, facendu simplice di abbandunà in qualsiasi pipeline CI / CD à fiancu à i vostri passi di filting è di prova esistenti. U so vantaghju di velocità hè soprattuttu preziosu in i pipeline automatizati induve i cicli di feedback più veloci riducenu i tempi di attesa di u sviluppatore. Sia chì stai eseguendu una startup magra o gestite una piattaforma cumpleta cum'è u SO cummerciale $ 19/mo di Mewayz, l'integrazione di l'analisi di codice mortu in a vostra pipeline aiuta à rinfurzà l'igiene di a basa di codice in ogni fusione.
We use cookies to improve your experience and analyze site traffic. Cookie Policy