Wzorce poprawnego programowania

0

Mam pytanie do was czy korzystacie z tych wzorców programowania:

OBJECT LITERAL PATTERN
REVEALING MODULE PATTERN

Lub może macie inne z których korzystacie w pracy pisząc kod javascript.

0

Stary, mamy 2k19, byłeś w śpiączce przez ostatnie 3 lata? :D

Teraz się używa czegoś takiego: http://2ality.com/2014/09/es6-modules-final.html

0
Desu napisał(a):

Stary mamy 2k19, byłeś w śpiączce przez ostatnie 3 lata? :D

nie rozumiem Cie. Podczas pisania kodu musimy przyjąć jakiś standard aby kod nie był kodem ala spegetti.
Dlatego pytam pisząc kod javascript z jakich wzorów korzystacie. Jeżeli uważasz, że nie robi się już tak to mnie proszę oświeć ;)

0

Te wzorce, o których napisałeś, to były hacki, ponieważ JS nie miał jako takiego systemu modułów. Teraz mamy import/export, więc nie trzeba już ich używać :)

0
Desu napisał(a):

Te wzorce, o których napisałeś, to były hacki, ponieważ JS nie miał jako takiego systemu modułów. Teraz mamy import/export, więc nie trzeba już ich używać :)

a to tak samo jest niepoprawne ? :


var people = {
    people: ['Will', 'Steve'],
    init: function() {
        this.cacheDom();
        this.bindEvents();
        this.render();
    },
    cacheDom: function() {
        this.$el = $('#peopleModule');
        this.$button = this.$el.find('button');
        this.$input = this.$el.find('input');
        this.$ul = this.$el.find('ul');
        this.template = this.$el.find('#people-template').html();
    },
    bindEvents: function() {
        this.$button.on('click', this.addPerson.bind(this));
        this.$ul.delegate('i.del', 'click', this.deletePerson.bind(this));
    },
    render: function() {
       var data = {
           people: this.people,
       };
       this.$ul.html(Mustache.render(this.template, data));
    },
    addPerson: function() {
        this.people.push(this.$input.val());
        this.render();
        this.$input.val('');
    },
    deletePerson: function(event) {
        var $remove = $(event.target).closest('li');
        var i = this.$ul.find('li').index($remove);

        this.people.splice(i, 1);
        this.render();
    }

};

people.init();

0

Kod wygląda spoko, ale w ten sposób pisało się jakieś 5 lat temu. Teraz mamy klasy, let/const, import/export. Poza tym nikt normalny nie robi już synchronizacji danych z widokiem ręcznie. Są od tego frameworki typu Vue, React, czy Angular.

0
Desu napisał(a):

Kod wygląda spoko, ale w ten sposób pisało się jakieś 5 lat temu.

ja wiem,że mamy w ES6 moduły, importy i exporty lecz jaki sens ma robienie 5 plików i importowanie tego oraz exportowanie dla kilku funkcji. Chyba, że się mylę i tka trzeba to robić.

0

Jak masz aplikację na 2 linijki, to żaden, ale jak zaczniesz pisać coś większego to szybko to docenisz. Mniejsze moduły są łatwiejsze w utrzymaniu. Import/export z natury nie zanieczyszcza globalnego zasięgu, więc nie trzeba tworzyć jakiś sztucznych konstrukcji.

0
Desu napisał(a):

Jak masz aplikację na 2 linijki, to żaden, ale jak zaczniesz pisać coś większego to szybko to docenisz. Mniejsze moduły są łatwiejsze w utrzymaniu. Import/export z natury nie zanieczyszcza globalnego zasięgu, więc nie trzeba tworzyć jakiś sztucznych konstrukcji.

Jasne z tym się zgodzę, ale jeżeli mam do zrobienia np 4 funkcje, które wykonują akcje np usuwania czegoś po kliknięciu, dodawania elementu po wpisaniu w input, usuwania czegoś po jakiś np warunku i nie jest to aplikacja tylko zwykła strona www to jaki sens ma robienie modułów ? Przy apliakcjach to jasna sprawa ale przy stronach gdzie mmamy jakies akcje na kliku czy wywołanie funkcji do gotowych bibliotek? poza tym kto pisze aplikacje w javascripcie czystym dzisiaj. Raczej aplikacje pisze się w frameworkach jak vue, angular itd, a one same wymuszają poprawne kodowanie.

0

Angular, Vue, czy React nic nie wymuszają. Można w nich zrobić takim sam, albo nawet większy burdel niż pisząc bez ich wykorzystania.

Jak masz faktycznie 4 funkcje, to nie ma sensu, ale mało kiedy się to na 4 funkcjach kończy. Jeżeli nie zaczniesz od początku sensownie kodować (podział na moduły, użycie jakiegoś babela, import/export), to później w miarę jak projekt się będzie rozrastał też Ci się nie będzie chciało nic zmieniać, bo "tylko jedną linijkę dopiszę". Później z tych 4 funkcji robi się gigantyczny moduł na 500 linii i jesteś w dupie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1