#c_sharp #net #static
Есть классы, которые наследуются от одного абстрактного класса, у которого есть не виртуальная функция для работы со строкой: protected string NormalizeString(string s) { return s.Trim().ToUpper(); } Нужно ли эту функцию делать статической? Когда функции нужно делать статическими, а когда обычными, если они не используют поля объекта?
Ответы
Ответ 1
Да, я бы сделал эту функцию статической. Принцип очень простой. Если функция относится к конкретному объекту, она должна быть нестатической. Пример: получение температуры с конкретного термометра — явно нестатическая фукция. Если функция относится ко всем объектам данного типа, то она скорее всего должна быть статической. Пример: получение диапазона температур для класса термометров — явно статическая функция. Если функция не относится ни к какому объекту, то есть является по существу утилитой (как у вас), и не сильно связана с функциональностью класса, её надо бы вынести в отдельный статический класс. Но часто, конечно, лень. Пример: перевод температуры из градусов Фаренгейта в градусы Цельсия — явная функция-утилита. (Существуют и пограничные случаи, когда не так очевидно, к какому из случаев относится функция. В этих случаях полагайтесь на интуицию или совет более опытных коллег.)
Комментариев нет:
Отправить комментарий