Я должен изолировать все классы, которые я знаю, никогда не должен использоваться в качестве базового класса?

Я должен изолировать все классы, которые я знаю, никогда не должен использоваться в качестве базового класса, даже когда нет никакой материальной производительности или проблем безопасности, или это просто добавляет хлам?

49
задан Daniel Coffman 29 January 2010 в 08:22
поделиться

4 ответа

Класс, который является расширяемым, реализует функцию, которую она может быть расширена - это функция, такая функция, как и любая другая особенность класса, и следует обрабатывать как один, ничем не отличается от способа. Все функции должны тщательно продумать, чтобы они соответствовали целям клиента, используя функцию. Особенности необходимо спроектировать, реализуемые, просмотренные для проблем с безопасностью, отлаженные, документированные и обслуживаемые.

Все, что стоит усилий, и усилия обычно требуют затрат денег. Чьи деньги вы тратите? У них может быть мнение о том, должен ли вы сделать эту функцию или нет.

В основном у вас есть три варианта:

1) Потратьте деньги, чтобы сделать эту функцию, чтобы у вас есть уверенность, что она правильная, надежная, безопасная и соответствует потребностям пользователей.

2) Поделайте ни одно из вышеперечисленного, а в любом случае, не отправляйте функцию и надеемся, что доставка незаметной, быстро реализованной, непроверенной, недокументированной, ненаправленной функцией с неизвестными рисками безопасности не наносит вреда вам, вашего работодателя или ваших клиентов.

3) Уплотнение класса. Отменить это позже, если вы обнаружите, что (1) был правильным выбором.

Я говорю, что (3) - это хорошее соотношение цены и качества. Я всегда закрываю каждый класс, который я пишу, который не был предназначен для расширяемости.

50
ответ дан 7 November 2019 в 11:48
поделиться

Да. Если ничего другого это указатель, позволяющий другим знать, что они не должны идти дальше вниз по тропе.

5
ответ дан 7 November 2019 в 11:48
поделиться

Настройка класс, который должен быть запечатан , не является жестким, поскольку это устанавливает строгое правило в коде: Этот класс не может быть унаследован.

Код является жестоким только в том случае, если он является ненужным и запутанным.

Одна из школ мысли (и простое правило) заключается в том, что вы всегда должны заклеивать все классы, так как их легко раскрыть, если это необходимо, но не наоборот. Некоторые генераторы кода делают это автоматически. (См. вариант Эрика Липперта № 3 выше. В основном говорится то же самое.)

-121--1090290-

Вы используете < p > , < h * > , когда они необходимы, чтобы они были правильными.

Что плохо, так это использование div вместо соответствующего элемента. Здесь такого нет.

-121--1010841-

Я бы не считал, что это добавление cruft вообще. Вместо этого вы ясно выражаете свои намерения для класса.

Классы должны быть предназначены для наследования или должны быть запечатаны. К сожалению, классы не запечатаны по умолчанию в C #, поэтому необходимо включить ключевое слово самостоятельно. Лично я предпочел бы ключевое слово, чтобы явно сделать классы доступными для наследования, поскольку это помешало бы людям использовать класс в качестве базового класса, если он не был явно помечен как таковой.

7
ответ дан 7 November 2019 в 11:48
поделиться

Установка класса Герметичный не Cruft с тех пор, как это устанавливает строгое правило в вашем коде: этот класс не может быть унаследован.

код только Cruft, если это ненужное и запутанное.

Это сказал, что одна школа мысли (и простого правила) заключается в том, что вы всегда должны запечатать все классы, так как это легко отменить, если это необходимо, но не наоборот. Некоторые генераторы кода делают это автоматически. (Свидите опцию Эрика ЛППППП № 3 выше. Это в основном говорит о том же.)

12
ответ дан 7 November 2019 в 11:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: