LINUX.ORG.RU

История изменений

Исправление AndreyKl, (текущая версия) :

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

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

Исходная версия AndreyKl, :

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

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