Сообщение от DreamTheater
|
Я также слышал мнение что одним знаком подчеркивания обозначаются protected свойства, а двумя - private.
|
Нет смысла private обозначать двумя подчёркиваниями. Смысл private не в том, чтобы скрыть свойство от потомков класса, а в том, чтобы потомки класса его случайно не испортили (если хотят специально испортить -- пожалуйста). Т.е. хотите вы сделать приватное свойство foo, соглашение должно быть таким, чтобы вы не задумывались, а есть ли в родительском классе такое же приватное свойство, не затрётся ли оно случайно.
В питоне, например, к именам свойств, начинающимся на два подчёркивания, добавляется префикс имени класса. В результате если Class2 наследует Class1 и в обоих классах есть свойство __foo, то в Class1 она в результате будет называться Class1__foo, а в Class2 -- Class2__foo.
Я в своём коде придерживаюсь того же правила для приватных свойств, только точка заменяется на подчёркивание. Например у класса Foo.BarBaz приватное свойство будет иметь вид Foo_BarBaz__privateVar. Это избыточно, это дольше писать, но это никогда не взорвёт соседние классы.