La ripetizione dell'odio all'estremo [chiuso]

0

Io programma in uno stile che tutto è costoso o odio davvero ripetere qualcosa, principalmente perché sviluppo per sistemi embedded. Quindi mi arrabbio molto quando devo fare qualcosa che causa ripetizione.

Un esempio potrebbe essere che nel mio progetto attuale sto creando un gestore di layout. Ho avuto questa enorme funzione che ha fatto tutto il lavoro di mettere tutto, che non mi dispiace finché commento bene. Qualche punto in più mi rendo conto che qualcosa che faccio in quella lunga funzione devo fare di nuovo da qualche altra parte, come aggiustare qualcosa che è più grande della corrente. Ma ciò che mi ha veramente infastidito (e perché sto postando) è che la funzione necessaria richiede tre variabili. Per me queste tre variabili sono costose e dovrebbero essere calcolate una sola volta per chiamata. Ma per rifattorizzare il codice nel modo in cui ho bisogno, devo inserire le variabili nella funzione necessaria. Ora le variabili vengono valutate tre volte.

Questo è solo un esempio, e cose del genere spuntano molte altre in cui, quindi oltre a dirmi quelle valutazioni non sono costose, a quel punto dirò, "Lo sto ancora ripetendo però", che cosa si può fare su questo genere di cose, o, con mio grande fastidio, è inevitabile?

Aggiornamento: uno dei suggerimenti principali forniti è memorizzare il valore. Usando di nuovo l'esempio sopra, la memorizzazione del valore non sembra praticabile. Principalmente perché la funzione necessaria richiede due valori necessari che vengono utilizzati per calcolare le tre variabili. Significherebbe che dovrei creare un oggetto e sentirmi libero di correggermi se ho torto, memorizzare i valori e le variabili nell'oggetto e poi testarli se fossero cambiati.

In breve, a meno che non ci siano altre idee là fuori, sembra inevitabile. L'unica cosa reale che puoi fare è ridurre al minimo fino a un limite. In che misura posso creare oggetti a costo di ricerche di proprietà? Quante volte devo creare ripetutamente queste tre variabili? Spero che ti venga l'idea.

C'è anche il fatto che forse potrei meglio refactoring il mio codice. Tendo a scrivere in enormi funzioni e tiro fuori solo ciò di cui ho bisogno, il che probabilmente è colpa di KISS. Penso che sia necessario un altro acronimo per bilanciare le cose: P.

    
posta NebulaFox 22.09.2011 - 02:32
fonte

2 risposte

13

Stai programmando per sistemi embedded? In caso contrario, l'hardware moderno è al punto in cui cavillare su dettagli banali come quello non è probabilmente sensato a meno che, naturalmente, non si stia lavorando su trading ad alta frequenza dove contano i nanosecondi.

Ricorda che il codice è scritto per PEOPLE non per MACCHINE. Un processo di un paio di millisecondi più veloce con codice che richiede uno sviluppatore intelligente una settimana per capire è molto meno desiderabile di un'applicazione leggermente più lenta con codice e design che ogni sviluppatore può esaminare, capire, aggiungere funzioni velocemente e refactoring in un pizzico.

    
risposta data 22.09.2011 - 03:15
fonte
2

È una buona idea non ripetere te stesso, fa parte dei principi DRY . Tuttavia, il compilatore si prenderà cura spesso di quelle ottimizzazioni minori.

Non vale la pena di farsi coinvolgere.

È una buona idea non ripetere te stesso, fa parte dei principi DRY . Tuttavia, il compilatore si prenderà cura spesso di quelle ottimizzazioni minori.

Non vale la pena di farsi coinvolgere.

    
risposta data 22.09.2011 - 15:21
fonte

Leggi altre domande sui tag