SergeyTeplyakov / DesignPatternsBook

Паттерны проектирования на платформе .NET
32 stars 2 forks source link

Принцип подстановки Лисков. О сложностях наследования в реальном мире #226

Closed SergeyUsok closed 9 years ago

SergeyUsok commented 9 years ago

Аналогично дела обстоят с потоками ввода вывода, методы Read / Write которых могут генерировать исключения, если свойствами CanRead / CanWrite возвращают False .

  • ввода/вывода
  • если свойствА

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

В случае неоднозначного поведения метода, в зависимости от состояния объекта мы можем говорить

Не совсем понял фразу, поскольку не хватает либо лишние запятые. То есть 1) Неоднозначное поведение зависит от состояния объекта ИЛИ 2) Мы можем что-то сказать в зависимости от состояния объекта?

но нельзя увтерждать

утверждать

SergeyTeplyakov commented 9 years ago

Поменял на:

Если поведение метода зависит от состояния объекта, то мы можем говорить о неудачном дизайне, но не можем утверждать, что реализация нарушает Принцип подстановки Лисков! Даже если метод наследника всегда генерирует InvalidOperationException, то это лишь говорит о том, что не все методы интерфейса или базового класса применимы к наследнику, но это также не означает некорректное использование наследования.

SergeyTeplyakov commented 9 years ago

Спасибо за фидбек по поводу врезки. Подождем еще чьего-то мнения.