什么是样板代码?为什么要避免?

ERJ*_*JAN 3 refactoring boilerplate

什么是样板代码,为什么这样称呼它?以安卓为例:

onCreate(Bundle saveInstance){
    setcontentView(R.layout.m);

    findViewById(R.id.f1);
    findViewById(R.id.f2);
    findViewById(R.id.f3);
    findViewById(R.id.f4);
}
Run Code Online (Sandbox Code Playgroud)

还有哪些例子?为什么我们应该避免样板代码?

Mur*_*nik 6

样板代码是需要在很多地方包含的重复代码。维基百科关于这个主题的文章很好地解释了起源:

有趣的是,这个词起源于报业。联合的专栏和其他文章以垫子(即矩阵)的形式发送给订阅报纸。收到后,将沸腾的铅倒入此垫子中以制作用于打印该作品的板,因此得名样板。由于印在样板上的文章无法更改,该术语开始被律师用来指合同中因在不同应用中重复使用而未改变的部分,最后是指在不同应用程序中没有改变的一般语言在不同场合重复使用的任何文件。

样板代码有几个问题:

  1. 很容易出错。您的示例可能很简单,但并非所有样板实例都是如此。在代码包含更多逻辑的情况下,犯错误的空间更大(=错误)。特别是如果这些块只是从一个地方复制到另一个地方,但需要进行一些更改才能工作。
  2. 此外 - 如果你不得不改变这个逻辑,那就更难了,因为你需要去几个地方才能做到。
  3. 它占用了屏幕空间和注意力。要阅读的代码越多,意味着在尝试理解正在阅读的一段代码时,您需要处理更多的事情。样板代码只是增加了另一种干扰。
  4. 它在最终(通常是编译的)产品中占用了实际空间。你更愿意提供什么?一个 1MB 的 JAR 文件还是一个 10MB 的 JAR 文件?