Programmazione basata su tag

3

Non so se questa è una cosa ma qui è un'idea sciocca. Spesso ci sono casi in cui è necessario refactoring codice in modo tale che è necessario modificare il codice relativo ad una determinata area. Ciò può comportare la modifica di funzioni o calcoli variabili distribuiti su più file. Diciamo che taggo questi luoghi con un commento che dice " tag server_path_calc ". Quando arriva il momento di ridefinire o modificare la logica di accesso al percorso del server, posso semplicemente cercare questi tag e apportare modifiche rapidamente piuttosto che pensare "Hm che altro ho bisogno di cambiare dove?". Qualcuno segue questo tipo di strategia nella programmazione?

Un esempio un po 'concreto è: Diciamo che ho un repository binario il cui calcolo del percorso dipende da alcune variabili. Ora questo calcolo viene utilizzato da alcuni script Python e anche alcuni file CMake. Taggo ovunque acceda a questi percorsi come "tag # repo_path_calc".

Sarà un processo efficiente? Ci sono strumenti di produttività per farlo.

Quando le variabili sono multiple, diventa difficile trovare / cercare e rifattorizzare tra i file a meno che tu non veda cosa si è rotto (tramite unità o test manuale) e continuare a risolverlo.

Un altro esempio se aiuta. Il problema che pongo è il ciclo di ricerca / ritrovamento / refactoring, non l'organizzazione del codice. Diciamo che ho un repository online (come Maven / Nexus) per memorizzare i binari.

  • Un modulo python è responsabile del caricamento / download di elementi separati in una classe
  • Ci sono alcuni strumenti che eseguono i calcoli del percorso e usano questo modulo sopra per trasferire i binari
  • Esiste un sistema di build CMake che produce artefatti e meta dati utilizzati per formare i percorsi per questo modulo python da utilizzare.
  • Ora c'è un'applicazione C ++ che potrebbe anche accedere a questo repository online e scaricare alcuni dati dell'applicazione (mesh, risorse, immagini ecc.)

Ora il percorso di repository online cambia (o l'organizzazione delle modifiche al repository). Ora voglio rintracciare tutti i diversi pezzi di codice che hanno questo tipo di accesso al repository. Come lo faresti? Dovresti cercare queste classi / variabili con un buon nome e sperare di raggiungere tutto il codice relativo? Stavo solo facendo un esperimento mentale (sciocco come ho notato) per vedere se i tag dei commenti possono essere utilizzati per tenere traccia di tutte queste modifiche attraverso più script / linguaggi / moduli. Contrassegniamo continuamente i contenuti, taggliamo anche diciamo commettiamo descrizioni per separarli in "blocchi di una particolare implementazione" per software SCM come Perforce. Nel codice, sì, abbiamo l'organizzazione del codice, ma tutti iniziano con il pulsante "cerca" a destra. Nel mio caso, non tutto è in un IDE / lingua.

    
posta Vikas Bhargava 22.06.2016 - 20:12
fonte

2 risposte

6

Quando lavori su un codice in cui consideri seriamente questa idea, è un segno che potresti lavorare con un pasticcio terribile di spaghetti code.

In un codebase ben organizzato tali tag non dovrebbero essere necessari, poiché ognuna di queste funzionalità che menzioni dovrebbe essere contenuta in un unico posto. I componenti dovrebbero essere incapsulati e accoppiati liberamente, in modo da poter cambiare il modo in cui il percorso di un file binario viene generato senza dover cambiare alcun altro codice.

    
risposta data 22.06.2016 - 20:50
fonte
4

Ho usato l'approccio che descrivi e funziona. Tuttavia, devi stare attento a cosa lo usi. Puoi solo usarlo opportunisticamente per trovare rapidamente alcuni dei luoghi che devi modificare. Non è possibile utilizzarlo per trovare tutti dei luoghi che devono essere modificati.

Il motivo per cui non puoi farlo (o forse più pedante, è estremamente difficile farlo) è perché i tag non sono direttamente legati a nessun contenuto sintattico reale. Sono commenti. I tag sono anche legati al contenuto semantico solo quando uno sviluppatore ritiene che il tag debba andare lì. Se perdono un tag, il loro codice non viene etichettato. Ciò significa che il loro codice non verrà aggiornato.

Anche l'ingenua soluzione di prestare semplicemente attenzione ai tag finisce male. Quando devi prestare più attenzione al contenuto esatto nei commenti di quanto non faccia nel codice, c'è un problema. C'è anche il problema delle esplosioni di tag, perché desideri annotazioni di codice sempre più accurate.

I tag non saranno mai un sostituto valido per contenuti ben organizzati che non necessitano di tag. Tuttavia, se il tuo contenuto è già in una forma che non può essere ben organizzata, la codifica può essere un modo utile per trovare la maggior parte delle connessioni necessarie tra le regioni del contenuto. Non lo chiamerei "programmazione basata su tag" perché non dovresti basare la tua programmazione sui tag. Tuttavia, la "programmazione accentuata dei tag" o un fraseggio simile può catturare un'idea molto utile nello sviluppo del software.

    
risposta data 23.06.2016 - 02:46
fonte

Leggi altre domande sui tag