Programmalıq támiynat qurılması hám evolyuciyası / 10-ameliy_PTQE
.pdf
10-ámeliy jumıs. Programmalıq támiynattı konstrukciyalawdı basqarıw.
Jumıstıń maqseti: Kod jazıw procesin basqarıw quralları hám usılları menen tanıw. Git (Version Control System) tiykarları, Branching (Tarmaqlanıw) strategiyaları (GitFlow), Code Review (Kodqa sholıw) procesi hám CI/CD (Úziliksiz integraciya) túsiniklerin ámeliyatta qollanıw. Komandada islesiw mádeniyatın qáliplestiriw.
Teoriyalıq bólim:
VCS (Git): Kodtıń tariyxın saqlaw.
Branching: `main` (turaqlı) hám `feature` (jumıs) tarmaqları.
Code Review: Kodtı basqa adamǵa teksertiw.
CI (Continuous Integration): Avtomat testlew hám jıynaw.
ÁMELIY BÓLIM:
Git buyrıqları hám processlerin simulyaciya etemiz.
1-mısal: Git tiykarları
Másele: Proektti baslaw hám saqlaw.
Komandalar:
git init |
(Repozitoriy jaratıw) |
git add . |
(Fayllardı baqlawǵa alıw) |
git commit -m "Initial commit" (Saqlaw)
2-mısal: Tarmaqlanıw (Feature Branch)
Másele: Jańa funkciya (Login) qosıw, biraq tiykarǵı kodtı buzbaw.
Komandalar:
git checkout -b feature/login (Jańa tarmaq ashıw)
// Kod jazıw...
git commit -m "Login qosıldı"
git checkout main (Tiykarǵı tarmaqqa qaytıw)
git merge feature/login |
(Birlestiriw) |
|
|
3-mısal: Konfliktti sheshiw (Merge Conflict) Másele: Eki adam bir fayldıń bir qatarın ózgertti.
Fayl (Conflict):
<<<<<<< HEAD print("Hello World");
=======
print("Sálem Álem");
>>>>>>> feature/ozgeshe
Sheshim: Biz qaysı birin qaldırıwdı tańlaymız hám markerlerdi óshiremiz.
Kod (Sheshilgen):
print("Sálem Álem"); // Ózgeshe bolsın git add .
git commit -m "Konflikt sheshildi"
4-mısal: Code Review (Simulyaciya) Programmist A jazdı:
void f() { int a=5; } // Atı jaman
Programmist B (Reviewer) kommentariy jazdı:
"Funkciya atın `calculate()` dep, `a` nı `count` dep ózgertiń."
Programmist A dúzetti:
void calculate() { int count=5; }
B: "LGTM (Looks Good To Me) - Maqullayman."
5-mısal: CI (Jenkins/GitHub Actions)
`Makefile` yamasa skript arqalı avtomat tekseriw.
Script (test.sh):
g++ main.cpp -o app
./app
if [ $? -eq 0 ]; then echo "Build Success"
else
echo "Build Failed" fi
ÁMELIY TAPSÍRMALAR
1-tapsırma: Git komandaları.
Terminalda (yamasa simulyatorda) tómendegi scenariydi orınlań:
1.`git init`
2.`touch main.cpp`
3.`git add main.cpp`
4.`git commit -m "Start"`
5.`git log` (Tariyxtı kóriw).
2-tapsırma: GitFlow.
Qaǵazda yamasa taxtada sxema sızıń:
`Master` -> `Develop` -> `Feature/Auth`. `Feature` pitti -> `Develop`qa merge.
`Develop` release boldı -> `Master`ge merge.
3-tapsırma: Kodqa sholıw (Review).
Dosıńız jazǵan kodtı (yamasa 1-ámeliydegi kodtı) alıp, oǵan 3 sapalıq usınıs (kommentariy) jazıń (Stil, Qáte, Optimallastırıw).
4-tapsırma: Commit xabarları.
"Fix bug" degen jaman xabar.
Tómendegi ózgerisler ushın jaqsı commit xabarların jazıń:
1.Login formasına "Paroldi umıttıńız ba?" túymesin qostıńız.
2.0 ge bóliw qátesin dúzettińiz.
5-tapsırma: Versiyalaw (SemVer).
Proektińiz v1.0.0.
1.Kishi qáte dúzettińiz -> ? (v1.0.1 - Patch).
2.Jańa funkciya qostıńız (eski kod isleydi) -> ? (v1.1.0 - Minor).
3.API dı tolıq ózgerttińiz (eski kod islemeydi) -> ? (v2.0.0 - Major).
Usı mısallardı túsindiriń.
