Node.js колдонмолору үчүн долбоорлоо үлгүлөрү
Кодду структуралаганда кайра-кайра пайда болгон маселелердин аталышы бар, кайра колдонулуучу чечимдери
- JavaScript'те алты үлгүнү таанып, идиоматтуу жаза аласыз -- фабрика, синглтон, стратегия, байкоочу, адаптер жана көз карандылыкты киргизүү;
- ар бир үлгү качан актаганын, качан болсо жөн гана артыкбаш салтанат кошконун айта аласыз;
- чаташкан модулду сыноого оңой болгон кичине өз ара иштешүүчү бөлүктөргө рефакторлойсуз;
- үлгүлөрдү бардык жерге колдонуу капканынан («үлгү шорпосу») качасыз.
1. Үлгү деген эмне -- жана качан ашыкча татаалдайт
Үлгүлөр -- бул сүрөттөмөлөр, код эмес. Бир эле үлгү Java'да (оор класстар жана интерфейстер) JavaScript'ке караганда башкача көрүнөт, анткени JavaScript'те функциялар -- маанилер, объекттер динамикалуу. Node'до идиоматтуу форма көбүнчө окуу китебиндегиден кичине: фабрика жөнөкөй функция болушу мүмкүн, стратегия -- издөө таблицасындагы функция, байкоочу -- көбүнчө жөн гана EventEmitter.
Ак ниет эскертүү биринчи келет: сизде жок маселеге колдонулган үлгү -- бул пайда эмес, чыгым. Кошкон ар бир кыйыр катмар кодду кийинки адамга окууну кыйындатат. Үлгүнү чыныгы, азыркы оорутууну алып салганда алыңыз -- кайталанган куруу логикасы, сыналбаган класс, ар бир спринтте өзгөргөн шишкен if/else, -- диаграмма акылдуу көрүнгөндүктөн эмес. «Сага бул керек болбойт» (YAGNI) дээрлик ар дайым божомолдуу абстракцияны жеңет.
Салыштыруу. Үлгүлөр -- деңизчи ат менен билген түйүндөр сыяктуу. Чебер деңизчи ар бир жипке ар бир түйүндү байлабайт; ага туруктуу илмек керек болгондо беседка түйүнүн тандайт, жипти жөн гана орогондо эч нерсе байлабайт. Баалуулук кырдаалды таанууда, түйүндү көрсөтүүдө эмес.