Скачиваний:
0
Добавлен:
26.01.2026
Размер:
175.12 Кб
Скачать

6-lekciya. Programmalıq támiynattı konstrukciyalaw principleri.

Jobası:

1.Programmalıq injeneriyanıń tiykarǵı principleri: DRY hám KISS.

2.SOLID principleri: Klasslar hám modullerdi durıs proektlestiriw.

3.YAGNI hám Separation of Concerns (Juwapkershilikti bóliw).

4.Refactoring (Qayta qurıw) hám "Taza kod" (Clean Code) filosofiyası.

DRY hám KISS principleri

Programmalıq támiynattı konstrukciyalaw principleri – bul sapalı, ońlawǵa ańsat hám keńeytiwsheń kod jazıw ushın qollanılatuǵın ulıwma qaǵıydalar hám usınıslar. Bul principlerdiń eń birinshisi hám eń ataqlısı – "DRY" (Don't Repeat Yourself – Ózińdi qaytalama). DRY principiniń mánisi: "Bilimniń hár bir bólegi sistema ishinde jalǵız, anıq hám abıroylı kóriniske iye bolıwı kerek". Ápiwayı sóz benen aytqanda, kodtıń birdey bólegin (logikasın) eki yamasa onnan kóp jerde qaytalap jazbań. Eger birdey kod kóp jerde ushırassa, onı bólek funkciyaǵa yamasa klassqa shıǵarıń hám kerek jerinde sol funkciyanı shaqırıń.

DRY principin buzıw ("WET" – Write Everything Twice / We Enjoy

Typing) úlken mashqalalarǵa alıp keledi. Eger siz bir logikanı (mısalı, salıq esaplawdı) 5 jerge kóshirip jazǵan bolsańız hám salıq nızamı ózgerse, siz barlıq 5 jerdi tawıp, ózgertip shıǵıwıńız kerek boladı. Eger birewin umıtıp ketseńiz, programma qáte esaplaydı. DRY tek kod kóshiriwge (copy-paste) qarsı emes, al maǵlıwmatlar bazasındaǵı sxemalar, hújjetler hám testlerdegi qaytalanıwlardı da azaytıwdı talap etedi. Kodtıń qaytalanıwı – bul "texnikalıq qarız"dıń baslı deregi. Ekinshi tiykarǵı princip – "KISS" (Keep It Simple, Stupid – Ápiwayı bolıwına umtıl). Bul princip boyınsha, sistemalar quramalı emes, al ápiwayı bolǵanda eń jaqsı isleydi. Programmistler geyde ózleriniń aqıllılıǵın kórsetiw ushın yamasa

"keleshekte kerek bolar" dep júdá quramalı, "over-engineered" (shamadan tıs quramalastırılǵan) sheshimlerdi qollanadı. KISS bizge: "Máseleni sheshiwdiń eń ápiwayı jolın tańla, kodtıń oqılıwın qıyınlastırma" deydi. Ápiwayı kodtı testlew, ońlaw hám basqa adamǵa túsindiriw ańsat.

KISS principin qollanıw degenimiz – bul quramalı algoritmlerden bas tartıw degen sóz emes. Bul – quramalı máseleni kishi, ápiwayı hám túsinikli bóleklerge (dekompoziciya) bóliw degen sóz. Mısalı, 100 qatarlı bir funkciya jazıwdıń ornına, onı hár biri 10 qatardan turatuǵın 10 funkciyaǵa bóliw kerek. Hár bir kishi

funkciya "ápiwayı" boladı. Albert Eynshteyn aytqanınday: "Hár bir nárse múmkinshiligi bolǵansha ápiwayı bolıwı kerek, biraq dım ápiwayı emes".

SOLID principleri

Obyektke Baǵdarlanǵan Programmalastırıwda (OBP) klasslar hám modullerdi durıs qurıw ushın bes tiykarǵı princip qollanıladı, olar "SOLID" akronimi menen belgili (Robert Martin usınǵan).

1.SRP (Single Responsibility Principle) – "Jalǵız juwapkershilik principi". Hárbir klass yamasa moduldiń ózgeriwi ushın tek ǵana bir sebep bolıwı kerek. Yaǵnıy, klass tek bir ǵana wazıypanı orınlawı tiyis. Mısalı, "Esabat" klassı hám esabattı esaplawı, hám onı printerden shıǵarıwı, hám e-mailge jiberiwi múmkin emes. Esaplaw – bir klass, baspadan shıǵarıw – basqa klass, jiberiw – úshinshi klass bolıwı kerek. Bul kodtıń baylanısıwın (coupling) azaytadı.

2.OCP (Open/Closed Principle) – "Ashıq/Jabıq principi". Programmalıq obyekler (klasslar, moduller) keńeytiw ushın ashıq, biraq ózgertiw ushın jabıq bolıwı kerek. Yaǵnıy – biz klastıń kodın ózgertpesten, onıń funkcionalın jańa klasslar (miyrasxorlıq yamasa interfeysler) arqalı arttıra alıwımız kerek. Mısalı, "Tólem" klassına jańa tólem túrin (Click, Payme) qosıw ushın eski kodqa if-else qospawımız kerek, al jańa klass jaratıp, onı qosıwımız kerek.

3.LSP (Liskov Substitution Principle) – "Liskovtıń almastırıw principi". Eger S klassı T klassınıń miyrasxorı bolsa, programmada T klassınıń obyektleri ornına S klassınıń obyektlerin qollanǵanda, programmanıń durıslıǵı buzılmawı kerek. Ápiwayı aytqanda, bala klass ata-ana klastıń minez-qulqın buzbawı tiyis. Mısalı, "Qus" klassınan "Pingvin" klassın alsaq hám Qus klassında "ushıw" metodı bolsa, Pingvin usha almaydı. Demek, Pingvin Qus emes (usı model boyınsha) yamasa ierarxiya qáte qurılǵan.

4.ISP (Interface Segregation Principle) – "Interfeyslerdi ajıratıw principi". Paydalanıwshılar ózlerine kerek emes metodlarǵa ǵárezli bolmawı kerek. Úlken, "semiz" interfeyslerdiń ornına, kishi hám arnawlı interfeyslerdi qollanıw kerek. Mısalı, "Kóp funkcional printer" interfeysinde "faks jiberiw" metodı bolsa, biraq biz ápiwayı printer qollansaq, bizge faks metodı kerek emes. Sol sebepli "Printer" hám "Faks" interfeyslerin bólek jaratıw abzal.

5.DIP (Dependency Inversion Principle) – "Ǵárezlilikti inversiyalaw principi". Joqarı dárejeli moduller tómen dárejeli modullerge ǵárezli bolmawı kerek. Ekewi de abstrakciyalarǵa ǵárezli bolıwı kerek. Anıq klasslarǵa emes,

interfeyslerge súyeniw kerek. Bul princip kodtıń modullerin bir-birinen ajıratıwǵa hám testlewdi ańsatlastırıwǵa (Dependency Injection arqalı) járdem beredi.

YAGNI hám Separation of Concerns

Úshinshi áhmiyetli princip – "YAGNI" (You Aren't Gonna Need It – Bul saǵan kerek bolmaydı). Bul princip Extreme Programming (XP) metodologiyasınan kelip shıqqan. Ol aytadı: "Funkcionallıqtı tek ol haqıyqıy kerek bolǵanda ǵana qosıń, 'keleshekte kerek bolar' dep aldın ala qospań". Programmistler kóbinese boljaw jasap, qosımsha imkaniyatlardı kodlap qoyadı, biraq statistika boyınsha bul kodtı 90% heshqashan qollanılmaydı. Artıqsha kod – bul artıqsha qárejet, artıqsha testlew hám artıqsha qáteler deregi. YAGNI bizdi resurslardı únemlewge shaqıradı. Tórtinshi princip – "Separation of Concerns" (SoC – Juwapkershilikti/Qızıǵıwshılıqlardı bóliw). Bul princip programmanı birbiri menen kem baylanısqan (loose coupling), hárbiri bólek logikalıq wazıypanı sheshetuǵın modullerge bóliwdi talap etedi. Bul princip tiykarında ataqlı "MVC" (Model-View-Controller) arxitekturası payda bolǵan. Model – maǵlıwmatlar menen, View – kóriniw (interfeys) penen, Controller – logika menen shuǵıllanadı. Olar bir-biriniń jumısına aralaspaydı.

SoC principiniń paydası sonda, biz programmanıń bir bólegin (mısalı, dizaynın) ózgertkende, basqa bólegine (mısalı, maǵlıwmatlar bazasına) tásir etpeymiz. Bul komanda bolıp islesiwdi de ańsatlastıradı: bir adam interfeys penen, ekinshi adam backend penen parallel isley aladı. SoC kodtıń strukturasın "qatlamlı" (layered) etip qurıwǵa imkaniyat beredi (Presentation Layer, Business

Logic Layer, Data Access Layer).

SoC sonıń menen birge "Cross-cutting concerns" (Kese ótewshi wazıypalar) máselesin de sheshiwge járdem beredi. Loglaw (logging), qáwipsizlik hám keshlew (caching) sıyaqlı wazıypalar barlıq modullerde qaytalanıwı múmkin. Olardı "Aspect-Oriented Programming" (AOP) sıyaqlı usıllar menen tiykarǵı biznes-logikadan ajıratıp alıwǵa boladı.

Refactoring hám Taza kod filosofiyası

Principlerdi biliw jetkiliksiz, olardı turaqlı qollanıw kerek. Kod jazılıp bolǵannan keyin, ol kóbinese "ideal" bolmaydı. Sol sebepli "Refactoring" (Qayta qurıw) procesi zárúr. Refactoring – bul kodtıń sırtqı minez-qulqın (funkcionallıǵın) ózgertpesten, onıń ishki strukturasın jaqsılaw procesi. Mısalı, uzın funkciyanı qısqartıw, túsiniksiz ózgeriwshi atların ózgertiw, qaytalanǵan kodtı tazalaw. Refactoring – bul kodtı "tazalaw" (cleaning up) jumısı. Onı proekt sońında emes,

al turaqlı túrde, hár bir jańa wazıypadan keyin islep barıw kerek (Red-Green- Refactor cikli).

Refactoringtıń maqseti – "Taza kod" (Clean Code) dárejesine jetiw. Robert Martinniń "Clean Code" kitabındaǵı filosofiyaǵa sáykes, kod sonday bolıwı kerek:

Oqılıwı ańsat (Kitap sıyaqlı oqılıwı kerek).

Atamalar mánisli (Intent-revealing names).

Funkciyalar kishi hám tek bir is qıladı.

Kommentariyler minimal (Kod ózin-ózi túsindiredi).

Testler menen qamtılǵan.

"Boy Scout Rule" (Boy Skaut Qaǵıydası) degen qızıqlı princip bar: "Lagerdi (kodtı) óziń kelgen waqıttaǵıdan da tazaraq etip tastap ket". Yaǵnıy, eger siz kodta qáte yamasa "shirik" jerdi kórseńiz, onı sol waqıtta dúzetiń. Eger hárbir programmist kúnine kishkene jerdi tazalasa, kodtıń sapası waqıt ótiwi menen jaqsılanadı. Kerisinshe bolsa, "Sınǵan aynalar teoriyası" (Broken Windows Theory) boyınsha, sapasız kod basqa programmistlerdi de sapasız kod jazıwǵa iytermeleydi hám proekt tez arada "batpaqqa" aylanadı.

Juwmaqlap aytqanda, konstrukciyalaw principleri (DRY, KISS, SOLID, YAGNI) – bul sapalı programmalıq injeneriyanıń kompasları. Olar bizge quramalılıq degen teńizde durıs joldı tabıwǵa járdem beredi. Bul principlerdi qollanıw dáslepki waqıtta qıyın hám kóp waqıt alıwı múmkin, biraq uzaq múddette olar proekttiń ómirin uzaytadı hám onıń qunı menen qáwipsizligin arttıradı.

BAQLAW SORAWLARÍ:

1.DRY (Don't Repeat Yourself) principin buzıw (WET) qanday aqıbetlerge alıp keledi?

2.KISS (Keep It Simple, Stupid) principiniń quramalı algoritmlerge qarsı emesligin qalay túsindiresiz?

3.SOLID principleriniń ishinde OCP (Open/Closed Principle) kodtıń keńeytiwsheńligine qalay tásir etedi?

4.YAGNI principiniń "Keleshekti boljaw" (Anticipating Change) principine qarsı kelmeytuǵın jeri nede?

5.Refactoring processiniń tiykarǵı shárti (invariantı) ne hám ol ne ushın "Boy Skaut Qaǵıydası" menen baylanıslı?

Соседние файлы в папке Programmalıq támiynat qurılması hám evolyuciyası