什么是样板代码?

Posted

技术标签:

【中文标题】什么是样板代码?【英文标题】:What is boilerplate code? 【发布时间】:2011-04-28 21:03:43 【问题描述】:

一位同事从未听说过这一点,我无法提供真正的定义。对我来说,它一直是“当我看到它时我知道它”的一个实例。

额外问题,这个词是谁提出的?

【问题讨论】:

请注意,术语样板文件并不是编程独有的。例如,律师可能会给您一份 5 页的合同让您签署,但大部分合同都是样板文件。这意味着对于每个获得该合同的人来说都是一样的,只是在这里和那里改变了几行。 我不知道其他人,但在我的公司,样板代码是操作样板的代码:打开、关闭、清洗、替换等...... 这个问题似乎离题了,因为它与计算和其他地方使用的特定行话词的具体含义相去甚远。 我来到这里是因为 Laravel 的文档和想法......“他们在谈论什么是样板文件?”。在阅读了一些答案后,我认为这个直接相关的 wiki 页面也显示了对此事的见解:en.wikipedia.org/wiki/Boilerplate_code 我最近听说了这个词,所以我很想知道我是否可以将它们称为编程语言的插件或模块。 【参考方案1】:

“样板代码”是任何看似重复的代码,为了得到看起来应该更简单的结果而一次又一次地出现。

这是一个主观的定义。

该术语来自报业的“样板”:wiki

【讨论】:

OOP 中多属性背后的想法是减少样板,因此如果应用得当,它可以减少很多。 也有人说,它来自钢铁行业,锅炉用钢板【参考方案2】:

样板代码是指一段可以反复使用的代码。另一方面,任何人都可以说这是一段可重用的代码。

这个词实际上来自钢铁行业。

了解一点历史,据Wikipedia:

在 1890 年代,样板实际上是用金属铸造或冲压而成,准备好印刷机并分发给美国各地的报纸。直到 1950 年代,数以千计的报纸从美国最大的供应商西方报业联盟收到并使用了这种样板。一些公司还将新闻稿作为样板发送,因此必须按书面形式打印。

现在根据Wikipedia

在面向对象的程序中,通常会为类提供获取和设置实例变量的方法。这些方法的定义通常可以被视为样板文件。尽管代码会因一个类而异,但它在结构上是非常典型的,因此自动生成比手工编写要好。例如,在以下代表宠物的 Java 类中,几乎所有代码都是样板代码,除了 Pet、name 和 owner 的声明:

public class Pet 
    private PetName name;
    private Person owner;

    public Pet(PetName name, Person owner) 
        this.name = name;
        this.owner = owner;
    

    public PetName getName() 
        return name;
    

    public void setName(PetName name) 
        this.name = name;
    

    public Person getOwner() 
        return owner;
    

    public void setOwner(Person owner) 
        this.owner = owner;
    

【讨论】:

【参考方案3】:

在词源上,术语样板:来自http://www.takeourword.com/Issue009.html...

有趣的是,这个词起源于报纸业务。列 和其他被联合的作品被发送出去订阅 垫子形式的报纸(即矩阵)。收到后, 将沸腾的铅倒入这个垫子中,以创建用于 打印这件作品,因此命名为样板。如文章所印 在样板文件上无法更改,该术语由 律师参考未更改的合同部分 通过在不同应用中的反复使用,最终 在所使用的任何文件中都没有改变的一般语言 重复用于不同的场合。

什么构成编程中的样板?正如其他人可能指出的那样,它 只是一段代码被一遍又一遍地复制,很少或 在此过程中未对其进行任何更改。

【讨论】:

有另一种解释mentalfloss.com/article/26087/why-it-boilerplate-text,我看到了更多的参考。 该死!这似乎是语法堆栈交换的答案......实际上可能是整个问题,但我可以明白为什么我们需要它......【参考方案4】:

它是可以被许多应用程序/上下文使用的代码,几乎不需要更改。

Boilerplate 源自 1900 年代初期的钢铁工业。

【讨论】:

【参考方案5】:

来自Wikipedia:

在计算机编程中,样板是用于描述必须包含在许多地方且几乎没有更改的代码段的术语。它更常用于指代被认为是冗长的语言,即程序员必须编写大量代码才能完成最少的工作。

因此,基本上您可以将样板代码视为一种编程语言所需的文本,该文本通常围绕着您用该语言编写的程序。

现代语言正试图减少它,但也有具有特定类型检查器的旧语言(例如 OCaml 有一个类型推断器,它允许您避免如此多的声明,这些声明将成为更冗长语言中的样板代码,例如爪哇)

【讨论】:

【参考方案6】:

优秀的程序员会避免样板:重复。

【讨论】:

天啊,你的答案中有两次“ti”!如您所见,重复并不总是不好。 如何避免public static void main(String[] _) @KorayTugay 有时样板文件不容易避免。例如,您可以通过只使用一个来避免在项目中重复主要功能,并用它来管理您的整个项目。在 web 开发中,我们可以通过使用单页开发来避免每个页面中的 html5 模板。在 android 中,我们可以通过使用单个 Activity 来避免 Activity 样板。【参考方案7】:

软件开发中的样板对不同的人来说可能意味着不同的东西,但通常意味着反复使用的代码块。

MEAN堆栈开发中,这个术语是指通过使用模板生成代码。它比从头开始手动编写整个应用程序更容易,并且它提供了代码块的一致性和更少的错误,因为它是干净、经过测试和验证的代码,它是开源的,因此它会不断更新或修复,因此它可以节省大量使用时间框架或代码生成器。有关 MEAN 堆栈的更多信息,请单击here。

【讨论】:

【参考方案8】:

如今,在许多其他编程语言中,样板定义变得越来越全球化。它来自 OOP 和已成为 OOP 并且在程序化之前的混合语言,现在具有相同的目标,即不断重复您使用模型/模板/类/对象构建的代码,因此它们为什么要适应这个术语。您制作了一个模板,您为模板的每个实例所做的唯一事情就是个性化对象的参数,这部分就是我们所说的样板。您只需重新使用您制作模板的代码,只需使用不同的参数即可。

同义词 蓝图是样板 模板是样板 页脚是样板 多用途设计模式是样板 邮件的签名是样板

【讨论】:

【参考方案9】:

实际上,样板代码是你到处剪切粘贴的东西。通常它会是模块头之类的东西,加上一些标准/必需的声明(每个模块都必须声明一个记录器,每个模块都必须为其名称和修订声明变量等)在我当前的项目中,我们正在编写消息处理程序它们都具有相同的结构(读取消息、验证消息、处理消息),并且为了消除处理程序之间的依赖关系,我们不希望它们都继承自基类,因此我们提出了样板框架。它声明了所有例程变量、标准方法、异常处理框架——开发人员所要做的就是添加特定于正在处理的消息的代码。它本来可以快速且易于使用,但后来我们发现我们在电子表格中获取消息定义(使用样板格式),所以我们最终只编写了一个代码生成器来发出 90% 的代码(包括单元测试)。

【讨论】:

【参考方案10】:

Joshua Bloch 有一个talk about API design,它涵盖了糟糕的代码如何使样板代码变得必要。 (第 46 分钟参考样板,今天听这个)

【讨论】:

【参考方案11】:

简而言之,样板代码是需要包含在应用程序中的重复代码,程序/框架几乎没有更改,并且对应用程序的逻辑没有任何贡献。当您编写伪代码时,您可以删除样板代码。建议使用适当的编辑器来生成样板代码。

在 HTML 中,界面中的样板代码。

<!DOCTYPE html>   
<html>   
   <head>   
      <title></title>   
   </head>   
   <body> </body>   
</html>

在 C# 中,属性的样板代码。

class Price
   
  private string _price;   
  public string Price
     
     get return _price;   
     set _price= value;   
     
  

【讨论】:

【参考方案12】:

您可以将其称为“sn-ps”或更准确地说是“sn-ps 的集合”。 我认为这个词是从印刷业创造出来的,他们使用实际的“印版”,然后再次将它们重新用作块。 在现代互联网中,这是一种持续的(令人讨厌的恕我直言)趋势的一部分,即使用花哨的术语来表示简单的事物,以便看起来更时尚和精致。请参阅 RESPONSIVE = 适应性强/流畅。

【讨论】:

“Snippets”并不完全传达相同的意思; “样板”往往意味着要修改以适应的更大块,而不是几行复制/粘贴/忘记代码。一个示例可能是 Win32 应用程序中 WinMain 函数的代码;它注册应用程序的窗口类,创建主窗口,运行事件循环,并返回窗口过程的退出代码。该功能通常不会在应用程序之间发生太大变化,并且可以通过相对较少的修改来重复使用,但不是那么常规,以至于它作为一个库(或 sn-p,就此而言)很有意义。【参考方案13】:

来自whatis.techtarget.com

在信息技术中,样板是一种写作单位,可以 一遍又一遍地重复使用而不会改变。通过扩展,这个想法是 有时应用于“样板代码”中的可重用编程。 该术语源自钢铁制造,其中样板是钢 卷成大板用于蒸汽锅炉。含义是 要么样板写作已经过时间检验并且强大 “钢”,或者可能它已经被卷成坚固的东西 足以重复使用。

超越编程:

样板可以比作某种模板,它可以 被认为是一个填补空白的样板。一些典型的 样板包括:任务声明、安全警告,通常 使用的安装程序、版权声明和责任 免责声明。

根据我作为程序员的经验,正确的样板代码通常是一堆你开始使用的代码,它们不够大和/或复杂到足以被称为框架。

一个典型的例子是HTML5 Boilerplate

【讨论】:

【参考方案14】:

样板是一种可以反复重复使用而无需更改的写作单元。通过扩展,这个想法有时被应用于可重用编程,如“样板代码”

【讨论】:

以上是关于什么是样板代码?的主要内容,如果未能解决你的问题,请参考以下文章

什么是样板代码、热点代码和热点?

Java编程技巧之样板代码

C++ 错误代码样板的模板与宏

如何在我的模型中避免样板代码?

如何使用代码为 Visual Studio 等 CRUD 操作生成整个样板代码?

Hibernate - 交易的样板代码