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 Objects, разделе 1.2.

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

sixnines availability badge   GitHub stars