Lo spettro di permanenza del codice è reale?

3

Ho letto in un libro di scienza dei dati che esiste il concetto di uno spettro di permanenza del codice. Se il tuo codice è basso nello spettro di permanenza, il codice è ad-hoc / buttare via il lavoro. Lavoro principalmente come scienziato in cui il codice è il mio strumento per fare analisi. Tuttavia, ho notato dallo studio del codice di un mio collega che ci sono molti componenti riutilizzabili e che scrivere in un'astrazione sufficiente fornisce una certa riusabilità generica. Mi chiedo quale prospettiva di prospettiva di un informatico (e di un architetto di software) è rispetto alla nozione di spettro di permanenza del codice?

    
posta Lucas Roberts 19.08.2017 - 01:27
fonte

2 risposte

2

Nonostante la terminologia apparentemente univoca nonostante (come da commenti precedenti), la riusabilità è certamente una valida considerazione progettuale in quasi tutti gli sforzi di sviluppo. Quando possibile, e per quanto possibile, dovresti decomporre un'applicazione in componenti funzionali il cui comportamento esterno di input / output è astratto, conciso e probabilmente riutilizzabile.

Prendi la C funzione della libreria strcpy (target, source) come esempio. Se non esistesse, e ti sei imbattuto in una situazione in cui dovevi copiare una stringa, potresti ottenerla in diversi modi. Proprio nel punto in cui ne avevi bisogno, potresti semplicemente scrivere un piccolo ciclo. Bene e dandy, e hai finito. In alternativa, potresti dire a te stesso: "Ho dovuto fare questo genere di cose molte volte prima, forse dovrei prendere qualche altro minuto e scrivere una funzione separata che racchiuda l'idea generale, poi la prossima volta che ne ho bisogno, no più piccoli loop. Basta chiamare quella funzione e ho finito. "

Per le funzioni semplici e dirette e riutilizzabili come strcpy () , la sua astrazione come funzione separata non richiede molta intuizione intellettuale. Tuttavia, a volte ci vuole una grande intuizione per calcolare un'applicazione grande e complicata in modo tale che la sua decomposizione massimizzi la riusabilità e la semplicità dei suoi componenti funzionali. Quindi questo è un compito sicuramente utile e stimolante, che può anche essere molto soddisfacente se portato a termine con successo.

E nella mia esperienza personale, nonostante abbia investito tempo e sforzi, non l'ho mai completato con successo nella prima versione di nessun progetto non banale. In altre parole, data l'opportunità di tornare indietro e rifarlo, lo farei almeno in modo leggermente diverso, a volte in modo molto diverso. E a volte ho avuto queste opportunità, di solito quando viene richiesta funzionalità nuove o modificate. Ogni volta che il tempo / budget è disponibile, cerco di aggiungere un sovraccarico del ~ 15% a una riprogettazione / codifica migliorata.

E la funzionalità modificata spesso rivela una migliore decomposizione che non era stata originariamente evidente (almeno non per me). Forse è analogo ritagliare un'immagine in un puzzle, in modo tale che molte copie identiche da un piccolo numero di pezzi diversi possano ricostruire l'intera immagine. Quindi, se qualcuno aggiunge o modifica un po 'l'immagine, è probabile che la tua selezione ottimale di pezzi di puzzle cambi in modo corrispondente.

    
risposta data 19.08.2017 - 05:24
fonte
1

Parlando da un punto di vista dello sviluppo, è chiaro che a volte il codice viene scritto in modo rapido e sporco per far funzionare qualcosa. All'estremo opposto c'è un codice ben progettato e ben scritto che raggiunge un livello di maturità per un periodo di tempo.

IMHO, questi estremi non fanno uno spettro. Quello che sembra (a prima vista) essere buttato via codice eseguito in un modo ad hoc potrebbe essere stato raffinato un gran numero di volte. Mentre quello che sembra essere un prodotto software maturo può contenere un codice duplicato relativamente non verificato, non rifatto, che potrebbe essere migliorato enormemente con un po 'di tempo e impegno.

Il concetto ha qualche merito, ma credo che semplifichi enormemente ciò che accade nel mondo reale. Inoltre, dal punto di vista dello sviluppo, anche se era uno spettro, sapere dove si è seduto il software (questo, essendo molto soggettivo) è una bagatella rispetto ad altre preoccupazioni.

    
risposta data 21.08.2017 - 12:39
fonte

Leggi altre domande sui tag