Является ли сокрытие члена в базовом классе дурным запахом в коде? - PullRequest
2 голосов
/ 27 февраля 2012

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

Может быть, я ошибаюсь. Но ...

Запах кода скрывать члена базового класса с ключевым словом "new"?

Ответы [ 2 ]

4 голосов
/ 27 февраля 2012

Это зависит от намерения.Если цель состоит в том, чтобы уточнить, например, конкретный тип возврата, то это может быть неоправданным.Классический пример здесь DbConnection. полезно , что SqlConnection повторно объявляет CreateCommand и т. Д., Возвращая SqlCommand, а не DbCommand, поскольку SqlCommand имеет много специфичных для платформы функций, которые в противном случае были бы болезненными.Ключевым моментом здесь, однако, является то, что метод DbConnection все еще работает, а назначение и значение этих двух методов одно и то же.

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

0 голосов
/ 27 февраля 2012
...