Ответ: Явное использование this.
Ну чтож, на первый взгляд мнения разделились примерно пополам. Однако все кто говорил за НЕ_использование this-> не имели ввиду никак не маркировать имена переменных, а просто делать это более коротким способом. Таким образом можно сказать что писать имена переменных без маркировки впринципе плохо.
Вообще моё мнение: читабельность кода это не всегда значит более короткая запись. Конструкции языка не позволяют полностью передать смысл кода, поэтому часть смысла может передаваться ввиде правильных имен переменных и методов (это лучше чем писать комментарии). Таким образом слишком короткие имена переменных не смогут полностью раскрыть их смысл и читабельность кода станет ниже. Конечно и обратное верно -- читать строки не умещающиеся в 1920 пикселах тоже неприятно.
Высказываение что "меньше символов быстрее печатаются" я считаю вообще не имеет основания: программист в среднем читает код в 10 раз больше чем пишет, особенно это касается отладки, сопровождения и т. д., не говоря уже о том что в случае open source читать его будет много других людей. Писабельность и читабельность часто можно улучшить одновременно, но когда улучшается писабельность в ущерб читабельности это очень плохо.
В случае this ещё плохо то что это никак не влияет на поведение компилятора. Например в случае квалификатора типа const это даёт реальное преимущество, т. к. компилятор лучше понимает код и помогает отлаживать и предотвращать ошибки программиста и двусмысленное понимание кода. this же здесь может помочь разве только в случае синтаксической ошибки, когда случайно происходит перекрытие мембера параметром функции, или что-то того, но в целом на семантику кода это не влияет. Вполне возможно что принудительное использование this стандартом языка сделало бы код более надёжным, а разработку компиляторов менее сложным.
В общем выбрать какой стиль лучше подходит для большинства программистов видимо задача очень сложная, поэтому я выберу его хотябы для себя. Выбирать по всей видимости надо между this-> и тем что предложено mr.DIMAS'ом (такой вариант я вообще часто вижу в других кодах).
* Сейчас я пользуюсь vim'ом поэтому профита от автодополнения в случае использования this-> в IDE у меня не будет.
* Сам я привык писать короче, а значит использование префиксов для меня более предпочтительно.
* Совсем необязательно использовать сразу все предложенные префиксы, можно например их вводить по мере необходимости (вот от венгерской нотации я отказался как раз из-за слишком длинных префиксов, но тот пост на stack overflow предлагает более короткий и гибкий вариант, работающий в условиях более современного С++, а не С).
* this подсвечивается, что хорошо.
* this явно есть только в С++, но если я возьму за правило писать префиксы, то по привычке буду делать это и в С, а там в частности от префикса m нет смысла.
* data-oriented подход в С++ также часто требует передавать данные через стек используя структуры, а значит префиксы m также как в С будут излишне. Подходить избирательно к каждому классу/структуре чурезчур заумно.
Так что даже мне однозначно выбрать трудно, возможно даже стоит попробовать два подхода, но пока я остановлюсь на частичном использовании префиксов.
|