Skip to content

Commit

Permalink
[guide] [breaking] Disallow leading underscores - there’s no such thi…
Browse files Browse the repository at this point in the history
…ng as “private properties”.

Per airbnb/javascript#490 (comment)
  • Loading branch information
Binary-Ninja-007 committed Apr 12, 2016
1 parent d8b9e7f commit e829d1f
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2294,15 +2294,18 @@ Other Style Guides
```
<a name="naming--leading-underscore"></a><a name="22.4"></a>
- [22.4](#naming--leading-underscore) Use a leading underscore `_` when naming private properties. eslint: [`no-underscore-dangle`](http://eslint.org/docs/rules/no-underscore-dangle.html) jscs: [`disallowDanglingUnderscores`](http://jscs.info/rule/disallowDanglingUnderscores)
- [22.4](#naming--leading-underscore) Do not use trailing or leading underscores. eslint: [`no-underscore-dangle`](http://eslint.org/docs/rules/no-underscore-dangle.html) jscs: [`disallowDanglingUnderscores`](http://jscs.info/rule/disallowDanglingUnderscores)
> Why? JavaScript does not have the concept of privacy in terms of properties or methods. Although a leading underscore is a common convention to mean “private”, in fact, these properties are fully public, and as such, are part of your public API contract. This convention might lead developers to wrongly think that a change won't count as breaking, or that tests aren't needed. tl;dr: if you want something to be “private”, it must not be observably present.
```javascript
// bad
this.__firstName__ = 'Panda';
this.firstName_ = 'Panda';
this._firstName = 'Panda';

// good
this._firstName = 'Panda';
this.firstName = 'Panda';
```
<a name="naming--self-this"></a><a name="22.5"></a>
Expand Down

0 comments on commit e829d1f

Please sign in to comment.