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