There Can Be Only One Primary Constructor

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

我建议将面向对象编程中的类构造函数分类为主构造函数辅助构造函数。主构造函数用于构造对象并将其他对象封装在其中。而辅助构造函数仅仅是在调用主构造函数之前的准备步骤,并不是真正的构造函数,而是一个真正的构造机制前面的引导层。

在这个类中有三个构造函数——只有一个是主要的,另外两个是次要的。我对次要构造函数的定义很简单:它除了通过this(..)调用主要构造函数之外,不做任何事情。

我的观点是,一个设计良好的类必须只有一个主要构造函数,并且应该在所有次要构造函数之后声明。为什么呢?这个规则背后只有一个原因:它有助于消除代码重复。

如果没有这样的规则,我们的类可能会有这样的设计:

这里没有很多代码,但是重复性非常严重和丑陋;我希望你自己能看到它。

通过严格遵循这个建议的规则,所有的类都将有一个唯一的入口点(构造点),即主构造函数,并且它总是容易找到的,因为它位于所有次要构造函数的下方。

有关这个主题的更多信息,请参阅Elegant Objects1.2节。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-16 at 15:07

sixnines availability badge   GitHub stars