Recientemente en mi empresa hemos tenido un pequeño debate sobre abstracción versus simplicidad. Una escuela de pensamiento que caracterizaría como "SECO y la abstracción no puede hacer daño", y lleva a un código como este:
def make_foo_binary(binaryName, objFiles, fooLibsToLinkAgainst)
make_exe_task(binaryName, objFiles.ext('.o'), fooLibsToLinkAgainst)
end
y esto:
class String
def escape_space
return self.gsub(' ', '\ ')
end
end
Mi punto de vista es que crear una abstracción como esta, que solo se usa en un lugar, hace que el código sea menos legible, ya que está reemplazando una llamada de función con la que el lector está familiarizado (gsub) por otra que nunca ha visto antes (escape_space), que deberán leer si quieren entender cómo funciona realmente el código. El reemplazo se describe esencialmente en inglés ("espacio de escape") y el inglés es notoriamente vago. Por ejemplo, sin mirar la definición, no sabes si se escapa todo el espacio en blanco, o solo el carácter de espacio.
Hay muchos escritos que cantan alabanzas a DRY y abstracción. ¿Alguien está al tanto de las fuentes que describen los límites de la abstracción? ¿Que cantan alabanzas y discuten la pragmática de mantener el código simple?
Editar: Puedo encontrar textos que fomenten la simplicidad en la vida o en la escritura (en inglés), por ejemplo, "Simplifica, simplifica" de Thoreau. o "La escritura vigorosa de Strunk y White es concisa". ¿Dónde está el equivalente para programar?