Я читаю «Чистый код» и не могу понять, как сохранить некоторые из моих функций (обычно конструкторов) в их МАКСИМАЛЬНО из 3 параметров.Уменьшение количества аргументов конструктору
Часто мои объекты нуждаются в большом количестве информации для работы - должен ли я создать небольшой конструктор, а затем использовать функции mutator, чтобы предоставить им всю информацию? Это не похоже на использование большого конструктора.
В качестве примера у меня есть класс «MovablePatch». Он позволяет пользователю перетаскивать квадрат в окне. Он нуждается в нескольких параметрах, включая Radius, Color, Renderer, InitialPosition и Visibility. В настоящее время я собираю все это из моего GUI, а затем вызвать:
MovablePatch(int radius, Renderer* renderer, Color color, Position initial, bool visibility)
Это лишь некоторые из вещей, которые мне нужно в этом классе. Может ли кто-нибудь предположить, как еще я могу упаковать эту информацию, чтобы перейти к конструктору? Я не вижу никаких очевидных «разбить его на более мелкие классы».
Посмотрите шаблон строителя. – Bashwork
Вам нужно следовать этой линии? В противном случае я бы довольно сильно сказал, игнорируя его, где не очевидно, как его применять. Имо, если изменения в соответствии с рекомендациями не являются интуитивными, обычно не стоит реорганизовывать код, чтобы гарантировать, что руководство соблюдено, несмотря ни на что. Для решения unintuitve, которое может легко привести к более сложному (и, следовательно, к ошибке) коду, который даже не имеет лучшей читаемости (примером для этого является упомянутый небольшой конструктор, за которым следуют вызовы функций мутатора или шаблон компоновщика, что упрощает забудьте установить некоторое значение). – Grizzly
Использование простой 'struct' для связанных атрибутов, которые должны быть переданы, поскольку один параметр был выполнен, так как до того, как я родился, я уверен. – AJG85