Wpis z mikrobloga

@rozdajozadarmo: Tak samo jak @Ginden

Przeważnie kiedy coś ma wypluć prostą wartość, która składa się z wielu czynników

np:

get outerWidth() { return this.padding.left + this.width + this.padding.right; }
albo dla wrapperów:

get width() { return this.canvas.width; }
albo dla maszyny stanów:

set state(state) {

if(this.state) this.state.leave();

this._state = state;

this.state.enter();

}

Na pewno moje settery są bardzo krótkie i robią tylko proste rzeczy, żeby nie wpaść w pułapkę magicznie działającego
@rezoner @Ginden: wydaje mi się, że AirBnb odradza stosowanie akcesorów w postaci metod property(val) (tak jak ma to miejsce bodajze w jquery). Osobiście używam geterów takich jak @rezoner, stanowią bardzo fajną abstrakcje, a dla użytkownika końcowego są całkowicie transparentne.
@Ginden, @qwertyu, @rezoner
Dzięki.

@suawus:

Stosowanie _ w przypadku "prywatnych" pól jest powszechnie przyjętą praktyką, mam nadzieję że wszyscy do tego dojrzeją zamiast eknapsulować zmienne w anonimowych funkcjach...bo to tylko zaciemnia kod.

Nigdy nie byłem fanem tego podejścia, ale rzeczywiście masz racje, że każdy kawałek tzw 'boilerplate code' zaciemnia kod. A jak ktoś chce zepsuć, to i tak zepsuje bez względu na to czy zmienne są prawdziwie prywatne czy
@suawus: ale w JS nie ma jawnej hermetyzacji… Poprzedzanie pól prywatnych underscorem to tylko kwestia umowna, po co takie coś stosować, skoro i tak możliwe jest przedostanie się do niej spoza obiektu? Moim zdaniem bardziej to zaciemnia kod, niż zastosowanie protezy hermetyzacji, jaką mogą być WeakMapy. W ES6 domknięcia to niekoniecznie dobry pomysł, bo samo IIFE jest zaliczane jako antywzorzec.
@magic69:

po co takie coś stosować, skoro i tak możliwe jest przedostanie się do niej spoza obiektu


Źeby wskazać użytkownikowi że nie powinien z tej zmiennej korzystać. Oczywiście jeżeli zdecyduje się do nich dobrać to nic go przed tym nie powstrzyma, ale programista został jednoznacznie poinformowany że nie powinien tego robić. Tzw. "privacy by convention"

Moim zdaniem stosowanie do tego celu WeakMap zaciemniają kod równie mocno co IIFE: zamiast wygodnego operatora
@magic96: OK, zrozumiałem twoją wypowiedź ogólnie: że IIFE są uważane jako antywzorzec, a ty miałeś na myśli, że są uważane za antywzorzec w tym konkretnym kontekście, tzn jako konstrukcja służąca do tworzenia kontekstu.