У меня нет никаких оснований, кроме вопросов, касающихся скорости прямого доступа к переменной и вызова методов, но я подозреваю, что если методы get / set определены inline (каковы они есть), это не должно иметь значения. Есть ли разница? Константность играет в этом роль?
Ключевое слово inline вряд ли играет роль в том, выполняет ли компилятор какие-либо вставки. Использование ключевого слова в этом отношении по существу не рекомендуется. Современные компиляторы встроены как сумасшедшие, и они знают, когда делать это лучше, чем любой программист.
Любой грязный компилятор скажет: «Хм, вызови эту функцию, чтобы получить эту переменную-член; эй, я могу просто получить переменную-член!» Вы ни о чем не беспокоитесь. Это происходит независимо от встроенных ключевых слов.
Тем не менее, я почти всегда использую функции-члены. Если я изменяю поведение переменной при обращении к ней, я теперь «автоматически» применяю ее везде, где она используется. Чистый код должен быть вашей целью, а не догматическим «всегда пропускать функции» или нет.
В любое время, когда я просто хочу значение переменной, я использую соответствующую переменную-член. (то есть, если бы я писал std::vector
, если бы мне нужно было проверить, был ли размер меньше чем-то, я бы сказал size() < x
). Но если лучше использовать переменную напрямую, сделайте это, например, mSize++
.
const
-несс не имеет значения. Если вы находитесь в неконстантной функции, вы будете использовать неконстантную версию вашего геттера, как и в случае с const. Очевидно, что использование членов напрямую поддерживает постоянство. Разницы нет.