最近、私の会社では、抽象化と単純化について少し議論しました。私が「DRYと抽象化は害を及ぼさない」と特徴付けた1つの考えの学校は、このようなコードにつながります:
def make_foo_binary(binaryName, objFiles, fooLibsToLinkAgainst)
make_exe_task(binaryName, objFiles.ext('.o'), fooLibsToLinkAgainst)
end
この:
class String
def escape_space
return self.gsub(' ', '\ ')
end
end
私の見解では、このような抽象化を作成すると、1つの場所でのみ使用され、コードが読みにくくなります。これは、読者が(gsub)に慣れている関数呼び出しを、見たことのない別の関数呼び出しに置き換えるためです。前(escape_space)。コードが実際にどのように機能するかを理解したい場合は、これを読む必要があります。置換は基本的に英語(「エスケープスペース」)で記述され、英語はあいまいなことで有名です。たとえば、定義を見ないと、すべての空白をエスケープするのか、スペース文字だけをエスケープするのかわかりません。
DRYと抽象化の賞賛を歌う多くの文章があります。 抽象化の限界を説明する情報源を知っている人はいますか?それは賞賛を歌って、コードをシンプルに保つことの実際的なことを話し合いますか?
編集:私は人生や(英語)ライティングでシンプルさを促進するテキストを見つけることができます。たとえば、Thoreauの「Simplify、Simplify!」またはStrunk and Whiteの「精力的な執筆は簡潔です。」プログラミングに相当するものはどこですか?