Поиск

Правила разработки

Вы увидели, что собой представляет перегрузка операторов и как она применяется в С#. Теперь рассмотрим один аспект этой полезной возможности, который часто упускают из виду — руководящие принципы, применяемые при разработке. Чего следует избегать, так это известной тенденции использовать какую-то возможность ради нее самой, или "решения ради решения". Между тем при правильном подходе к проектированию нужно помнить поговорку "Код сложнее читать, чем писать". Не забывайте о пользователях своего класса, когда решаете, нужно ли и где перегружать операторы. Вот практическое правило: оператор нужно перегружать, только если в результате интерфейс класса станет более интуитивно понятным. Например, есть определенный смысл предоставить возможность суммировать счета.

Кроме того, не забывайте поставить себя на место пользователя вашего класса. Например, вы пишете класс Invoice для счетов и хотите, чтобы для них могла предоставляться скидка. Нам с вами может быть известно, что в счет добавлена строка, учитывающая кредит, но суть инкапсуляции в том, что пользователю класса не нужно ничего знать о подробностях его реализации. Следовательно, неплохой идеей может быть перегрузка оператора * (как показано ниже), поскольку это сделает интерфейс класса Invoice естественнее и понятнее:

invoice *= .95; // Скидка 5Х.