Vor kurzem hatten wir in meiner Firma eine Debatte über Abstraktion vs. Einfachheit. Eine Denkrichtung, die ich als "TROCKEN und Abstraktion kann keinen Schaden anrichten" bezeichnen würde, führt zu Code wie diesem:
def make_foo_binary(binaryName, objFiles, fooLibsToLinkAgainst)
make_exe_task(binaryName, objFiles.ext('.o'), fooLibsToLinkAgainst)
end
und das:
class String
def escape_space
return self.gsub(' ', '\ ')
end
end
Mein Standpunkt ist, dass das Erstellen einer solchen Abstraktion, die nur an einer Stelle verwendet wird, den Code weniger lesbar macht, da Sie einen Funktionsaufruf, mit dem der Leser vertraut ist (gsub), durch einen anderen ersetzen, den er noch nie gesehen hat vor (Escape_Space), die sie lesen müssen, um zu verstehen, wie der Code tatsächlich funktioniert. Der Ersatz wird im Wesentlichen in Englisch ("Fluchtraum") beschrieben und Englisch ist notorisch vage. Ohne die Definition zu betrachten, wissen Sie beispielsweise nicht, ob sie alle Leerzeichen oder nur das Leerzeichen enthält.
Es gibt viel Schreiben, das das Lob von TROCKEN und Abstraktion singt. Kennt jemand Quellen, die die Grenzen der Abstraktion beschreiben? Das Lob singen und die Pragmatik diskutieren, Code einfach zu halten?
Bearbeiten: Ich kann Texte finden, die die Einfachheit im Leben oder beim (englischen) Schreiben fördern, z. B. Thoreaus "Simplify, Simplify!" oder Strunk and Whites "Kräftiges Schreiben ist prägnant." Wo ist das Äquivalent für die Programmierung?