Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Nedgeva opened this issue Nov 23, 2019 · 1 comment
Open

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

Nedgeva opened this issue Nov 23, 2019 · 1 comment

Comments

@Nedgeva
Copy link

Nedgeva commented Nov 23, 2019

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

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

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

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

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

@Znack
Copy link
Contributor

Znack commented Nov 24, 2019

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants