Артқа
Development 27 сәу 2026 8 мин

Бойлерплейт — бұл жаман емес

DTO, мапперлер, қабаттар және модельдерді бөлу жүйе кішкентай болғанда артық болып көрінеді. Бірақ жоба өскен сайын бойлерплейт өзгерістер аймағын шектейді, кодты болжамды етеді және команданың жұмысын жылдамдатады

Бойлерплейт — бұл жаман емес

Бірінші қақтығыс

Сіз міндетті түрде естіген боларсыз: «Қарапайым тапсырма үшін неге сонша код керек?», «Неге жай ғана жазып қоймасқа?», «Бұл сіздің архитектураңыз тек қана қиындатады». Әдетте бұл сөздер бойлерплейтпен алғаш рет кездескенде айтылады: DTO, мапперлер, қабаттар, модельдерді бөлу. Мен оларды түсінемін. Себебі менде де сол реакция болды.

“3 есе көп код” сезімі

Мен қатаңырақ архитектурамен алғаш жұмыс істей бастағанда, бұл мені ашуландырды. Бір өріс қосып, бірнеше класты өзгертесің: DTO, мапперлер және тағы бірнеше қабаттар. Сонда «Мен сол тапсырма үшін 3 есе көп код жазып жатырмын» деген сезім пайда болады. Қысқа қашықтықта бұл рас.

Артық құрылым мен қайталанатын кодтан туатын үйкеліс

Неліктен Active Record/Eloquent ыңғайлырақ көрінеді

Әсіресе, егер сен бұған дейін, мысалы, Active Record-пен жұмыс істеген болсаң, онда модель = бәрі, логика тікелей ішінде, деректер, валидация, мінез-құлық — бәрі бір жерде. Сен жай ғана жазасың және бәрі жұмыс істейді, тез, ыңғайлы, артық ештеңесіз. Мәселе бірден басталмайды. Ол жүйе өскен кезде басталады.

Хаос қалай өседі

Типтік сценарий. Алдымен бір модель, аздаған логика, бәрі түсінікті. Кейін observers қосылады, оқиғалар қосылады, тексерулер қосылады, бизнес-логика шашырай бастайды. Бір сәтте не болып жатқанын түсінбей қаласың.

Ең ауыртпалықтысы — өзгерістер

Ең ауыр сәт бұл өзгерістер. Мысалы, сенде бір дереккөз болды (жергілікті база). Кейін сыртқы API немесе басқа сақтау түрі пайда болды, немесе деректерді алу әдісін өзгерту қажет. Кенеттен саған бәрін өзгерту керек: контроллерлер, модельдер, бизнес-логика. Өйткені бәрі тікелей байланысты.

Бойлерплейт не үшін қажет

Міне, осы жерде бойлерплейт не үшін қажет екені түсінікті болады. Құрылым бар кезде, домен бөлінген, инфрақұрылым оқшауланған, әр қабаттың модельдері бар, маппинг бар, дереккөзді өзгерту жүйені бұзбайды. Сен тек инфрақұрылымдық қабатты өзгертесің. Қалғаны өзгеріссіз қалады. Бұл негізгі идея, бойлерплейт "көп код жазу" емес, бойлерплейт - бұл "өзгерістер аймағын шектеу".

Құрылым өзгерістің радиусы мен құнын шектейді
Құрылым сұлулық үшін емес, бір бөліктің өзгерісі бүкіл жүйені бұзбауы үшін қажет.

Абстракция — бұл назарды ауыстыру

Енді абстракция деңгейі туралы. Көптеген адамдар оны «күрделендіру» деп қабылдайды. Іс жүзінде бұл жай ғана жұмыстың басқа деңгейі. Сіз "мәліметтер қорына қалай сақтау керек" деп ойлауды тоқтатып, "мән деген не", "оның қандай ережелері бар", "жүйе қалай жұмыс істеуі керек" деп ойлай бастайсыз. Инфрақұрылым екінші орынға шығады, ал жүйенің мінез-құлқы бірінші орынға шығады. Иә, бұл үшін қосымша код жазу қажет. Бірақ бұл код жүйені болжамды етеді, өзгерістерді жеңілдетеді және болашақта қателер санын азайтады.

Команда және болжамдылық

Boilerplate командада ерекше маңызды. Себебі қайталанушылық = болжамдылық. Құрылым бірдей болғанда, жаңа әзірлеуші тезірек бейімделеді, кодты оқу оңайырақ, кодты шолу оңайырақ. Ол "мұнда бәрі қалай ұйымдастырылған" деп ойламайды, ол мұны қазірдің өзінде біледі. Міне, осы жерде ойлау өзгерісі орын алады. Алдымен "неге сонша шаблондық код керек" деп ойлайсың, кейін "жақсы, оның барлық жерде бірдей болғаны" деп түсінесің. Иә, boilerplate-ті кодогенерация, шаблондар және AI арқылы ішінара автоматтандыруға болады. Бұл қалыпты жағдай. Себебі оның мақсаты - құрылымды бекіту.

Шығару: қазір тез немесе кейін тұрақты

Және соңғысы. Архитектура — бұл күрделендіру емес. Бұл бақылау. Егер сенде кішкентай жоба болса, иә, оңайырақ болуы мүмкін. Бірақ жүйе өсе бастағанда, хаос артық кодтан қымбатқа түседі. Қысқаша айтқанда, құрылымсыз сен бастамада тезірек боласың. Құрылыммен сен қашықтықта тезірек боласың. Таңдау әрқашан бірдей, қазір тез немесе кейін тұрақты. Бойлерплейт — бұл тұрақтылық үшін төлем. Егер сен мұны қабылдасаң, сен бір функциядан ұзақ өмір сүретін код жаза бастайсың.

development routine

Осы тақырып бойынша тағы

Сол санаттағы немесе жақын тақырыптардағы соңғы жарияланған материалдар.

Басқа біреудің кодымен достасуды үйрену
Development 27 сәу 2026

Басқа біреудің кодымен достасуды үйрену

Басқа біреудің кодын бірінші рет оқу көбінесе стресс тудырады. Бірақ хаосты жоятын және кіру нүктесін беретін алгоритм бар

Оқу
Сандар ешқашан өтірік айтпайды
Development 27 сәу 2026

Сандар ешқашан өтірік айтпайды

Метрикалар менің оңтайландыруға деген көзқарасымды қалай өзгертті. Нақты жағдай: «бір нәрсе баяу» дегеннен бастап нақты деректер арқылы конверсияның 2–3 есе өсуіне дейін

Оқу
Микросервистер — бастау кезінде жіберілетін ең қымбат қателіктердің бірі
Development 27 сәу 2026

Микросервистер — бастау кезінде жіберілетін ең қымбат қателіктердің бірі

Неліктен микросервистер әдепкі архитектура емес, нақты мәселені шешуге арналған құрал болып табылады. Екі нақты жағдай: қашан бұл қате болды және қашан ақталды

Оқу