История изменений
Исправление AndreyKl, (текущая версия) :
ещё проблема в том что нарушение принципа лисков ведёт к ошибкам, причём довольно трудноотлавливаемым. то что при соблюдении принципа обещает уменьшение кодовой базы (хоть ты и возражаешь, но я останусь при своём) и гарантирует избежание определённого класса ошибок , при несоблюдении обязательно ведёт к ошибкам особенно при работе в команде.
тот же классический пример с прямоугольником и квадратом: любой адекватный программист получив класс ректангл будет ожидать что ему можно сделать setWidth и setHeight. ну и ясное дело сделает setWidth и setHeight. Однако если к нему пришёл квадрат, то при вычислении площади получится ошибка. Хотя всё ведёт себя так как будто должно работать. В этом и проблема. Лучше в таком случае лучше иметь возможность проверки компилятором (в смысле не делать квадрат подтипом прямоугольника), поскольку в таком случае ошибка не будет допущена.
Исходная версия AndreyKl, :
ещё проблема в том что нарушение принципа лисков ведёт к ошибкам, причём довольно трудноотлавливаемым. то что при соблюдении принципа обещает уменьшение кодовой базы (хоть ты и возражаешь, но я останусь при своём) и гарантирует избежание определённого класса ошибок , при несоблюдении обязательно ведёт к ошибкам особенно при работе в команде.
тот же классический пример с прямоугольником и квадратом: любой адекватный программист получив класс ректангл будет ожидать что ему можно сделать setWidth и setHeight. ну и ясное дело сделает setWidth и setHeight. Однако если к нему пришёл квадрат, то при вычислении площади получится ошибка. Хотя всё ведёт себя так как будто должно работать. В этом и проблема. Лучше в таком случае лучше иметь возможность проверки компилятором (в смысле не делать квадрат подтипом прямоугольника), поскольку в таком случае ошибка не будет допущеная.