front-end-best-practices icon indicating copy to clipboard operation
front-end-best-practices copied to clipboard

Нейминг приватных полей класса

Open Nedgeva opened this issue 6 years ago • 1 comments

Привет всем! В goodPractice.md имеется пункт про следованию стайлгайду от AirBnB. И хотя там же присутствует оговорка

Все, что перечислено в гайде принять к исполнению, если это не перекрыто нашими правилами ниже

тем не менее, хотелось бы акцентировать внимание на спорных рекомендациях касательно нейминга (квази)приватных методов класса:

В js нет публичных и частных свойств, поэтому частные методы просто делать с префиксами "_" (нижнее подчеркивание)

Как вы считаете, возможно, стоит этот пункт переписать с учетом правил, изложенных в стайлгайде AirBnB, и использовать для имитации приватных полей WeakMap или, как вариант, символы?

Nedgeva avatar Nov 23 '19 19:11 Nedgeva

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

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

Znack avatar Nov 24 '19 04:11 Znack