Recentemente nella mia azienda abbiamo avuto un po 'di dibattito sull'astrazione contro la semplicità. Una scuola di pensiero che definirei "ASCIUTTA e l'astrazione non possono fare danni" e porta a un codice come questo:
def make_foo_binary(binaryName, objFiles, fooLibsToLinkAgainst)
make_exe_task(binaryName, objFiles.ext('.o'), fooLibsToLinkAgainst)
end
e questo:
class String
def escape_space
return self.gsub(' ', '\ ')
end
end
Il mio punto di vista è che la creazione di un'astrazione come questa, che è usata solo in un posto, rende il codice meno leggibile, dal momento che stai sostituendo una chiamata di funzione con cui il lettore ha familiarità con (gsub) con un altro che loro " Non ho mai visto prima (escape_space), che dovranno leggere se vogliono capire come funziona effettivamente il codice. La sostituzione è essenzialmente descritta in inglese ("escape space") e l'inglese è notoriamente vago. Ad esempio, senza guardare la definizione, non sai se sfugge a tutti gli spazi bianchi, o solo al carattere dello spazio.
C'è molto scritto che canta le lodi di ASCIUTTO e astrazione. Qualcuno è a conoscenza di fonti che descrivono i limiti dell'astrazione? Che cantare le lodi e discutere la pragmatica di mantenere il codice semplice?
Modifica: posso trovare testi che incoraggiano la semplicità nella vita o nella scrittura (in inglese), ad es. "Semplifica, Semplifica!" Di Thoreau o Strunk and White's "La scrittura vigorosa è concisa". Dov'è l'equivalente per la programmazione?