Wpis z mikrobloga

Używacie getterów i setterów w #es6 ? Jeśli tak to jakiej używacie konwencji nazwenictwa? Poprzedzacie pole prefiksem: _?

np.:

const obj = {
    get prop() {
        return this._prop;
    },
    set prop(val) {
        this._prop = val + 1;
    }
};

#webdev #js #programowanie
pozwolę sobie zawołać @rezoner
  • 17
  • Odpowiedz
@rozdajozadarmo @suawus: nie używam, zgadzam się z airbnb (i to nie tylko jeśli chodzi o js)

Do not use JavaScript getters/setters as they cause unexpected side effects and are harder to test, maintain, and reason about. Instead, if you do make accessor functions, use getVal() and setVal('hello').
  • Odpowiedz
Do not use JavaScript getters/setters as they cause unexpected side effects and are harder to test, maintain, and reason about. Instead, if you do make accessor functions, use getVal() and setVal('hello').

@qwertyu: Bo?
  • Odpowiedz
@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.
  • Odpowiedz
@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
  • Odpowiedz
@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.
  • Odpowiedz
@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
  • Odpowiedz
@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.
  • Odpowiedz