Это лень / неосторожность или есть законная причина для этого?
бывший. Если вы действительно не видели ни одного кода, который делает это правильно, немедленно получите новую работу .
Каковы основные минусы, заставляющие моих клиентов реализовывать const
функции-члены, когда они логически вызываются?
Позволяет компилятору обнаруживать типичные ошибки во время компиляции . (Нет ничего лучше, чем ошибки, обнаруженные во время компиляции. Все, что не работает на вашем столе, не будет работать на сайте клиента.)
Более десяти лет назад, вскоре после того, как я присоединился к новой компании и приступил к взлому одного из их проектов, я обнаружил, что метод, который должен был быть const
, не мешал некоторым моим const
- правильный код для компиляции. Я подумал о том, чтобы просто выбросить const
и продолжить, но я не мог заставить себя сделать это.
Поэтому я сделал метод const
- просто чтобы обнаружить, что он вызывает другие методы, которые тоже должны были быть константными, но не такими. Так что я их тоже изменил - просто чтобы обнаружить ...
В итоге я потратил несколько дней на охоту по всему проекту, добавив const
влево и вправо.
Сотрудники смеялись надо мной - пока я не показал им некоторые ошибки, обнаруженные компилятором из-за того, что я добавил const
. Интересно, что несколько давних ошибок, которые никто никогда не уделял времени для тщательного расследования, также не воспроизводились после этого.