“Düzəltmək” və “fiksləmək” “düzəltmək” felinin jarqon sinonimləridir, koddakı xətanın və ya səhvin aradan qaldırılması prosesini bildirir. Peşəkar mühitdə hər iki termin bir-birini əvəz edən kimi istifadə olunur, baxmayaraq ki, “fiksləmək” həmçinin commit vasitəsilə “dəyişiklikləri təsdiqləmək” mənasını da verə bilər. Atlassian Git Guide-a görə, xətanın düzəldilməsi prosesi bir neçə mərhələni əhatə edir: təkrarlama, diaqnoz, yazılma və yoxlama. Sistemli yanaşma düzəlişlərə səhvlərin təkrarlanma riskini azaldır.
Əsas məqamlar
Düzəltmək (fiksləmək) — proqram kodunda, konfiqurasiyada və ya məlumatlarda səhvi düzəltmək. Termin ingiliscə “to fix” (təmir etmək, düzəltmək) sözündən yaranıb və proqramçı lüğətinin ən geniş yayılmış sözlərindən biridir. Düzəliş sadə ola bilər — sətirdəki səhvin düzəldilməsi — və ya mürəkkəb, bütün modulun arxitekturasına toxunan ola bilər.
“Fiksləmək” feli iki mənalıdır: xətanın düzəldilməsi ilə yanaşı, “versiyaya nəzarət sistemində dəyişiklikləri təsdiqləmək” (ing. “commit/fix”) mənasını da verə bilər. Hər iki halda nəticə eynidir — kod müdaxilədən əvvəlkindən yaxşılaşır. Peşəkar cəmiyyətdə sözlər arasındakı fərq minimaldır və hər ikisi tam sinonim kimi istifadə olunur.
Xətalarnı düzgün düzəltmək bacarığı proqramçının əsas bacarıqlarından biridir. Səhvlər istənilən layihədə qaçılmazdır və onların düzəldilmə sürəti birbaşa məhsulun keyfiyyətinə və istifadəçi məmnuniyyətinə təsir edir. Sistemli yanaşma aydın prosesi əhatə edir: təkrarlama, diaqnoz, test yazma, düzəltmə, kod-review keçirmə.
Xətanın həyat dövrü — xətanın aşkarlanma anından tam aradan qaldırılmasına qədər keçdiyi vəziyyətlər ardıcıllığı. Bu dövrü başa düşmək düzəliş prosesini təşkil etməyə və kritik mərhələləri qaçırmamağa kömək edir. Tipik prosesdə xəta beş əsas mərhələdən keçir.
Birinci mərhələ aşkarlanmadır ki, bu da test etmə, xəta monitorinqi, istifadəçi rəyi və ya avtomatik qəza hesabatları vasitəsilə baş verə bilər. Xəta təkrarlama addımları, mühit, gözlənilən və faktiki davranış göstərilərək trekerdə qeydiyyata alınır. Xətanın yaxşı təsviri sürətli düzəlişin əsasıdır.
Proqramçı təsvirdəki addımları izləyərək xətanı öz mühitində təkrarlayır. Xəta sabit təkrarlanmırsa, əlavə məlumatlar tələb olunur: loglar, yaddaş dump-ları, ekran görüntüləri. Təkrarlamadan sonra diaqnoz başlayır — koddakı əsas səbəbin axtarılması. Bu mərhələdə tez-tez debugger, loglama və profilləmə istifadə olunur.
Düzəlişdən əvvəl xətanı təkrarlayan test yazmaq tövsiyə olunur — bu, düzəlişin həqiqətən işlədiyinə zəmanət verir və gələcəkdə reqressiyanın qarşısını alır. Test gözlənilən xəta ilə uğursuz olduqdan sonra proqramçı düzəliş kodunu yazır. Test düzəlişdən sonra keçməli və reqressiya dəstinə əlavə edilməlidir.
func testLoginWithInvalidCredentials() {
let result = AuthService().login(
email: "wrong@test.com",
password: "wrong"
)
XCTAssertEqual(result, .failure(.invalidCredentials))
}
Düzəliş kod-reviewə göndərilir — həmkarl düzəlişin düzgün olduğunu, qonşu modulları pozmadığını və kod standartlarına uyğun olduğunu yoxlayır. Review-dən sonra düzəliş reqressiya testlərindən keçir. İdeal dövrdə testlər keçməyincə və dəyişikliklər rəyçi tərəfindən qəbul edilməyincə xəta bağlı sayılmır.
Düzəliş əsas budağa daxil olur və istehsalata yerləşdirilir. Yerləşdirmədən sonra komanda xətanı canlı mühitdə təsdiqləyir və metrikaları izləyir: qəza hesabatlarında müvafiq səhvlərin sayı azalıbmı. Xəta düzəldildiyi versiya göstərilərək trekerdə bağlanır.
Hotfix — hazırda istehsalatda istifadəçilərə təsir edən kritik xətanın təcili düzəlişidir. Belə düzəliş adi inkişaf dövründən kənarda həyata keçirilir: release budağından ayrıca budaq yaradılır, minimal dəyişiklik edilir, budaq test edilir və dərhal yerləşdirilir. Hotfix-dən sonra dəyişiklik mütləq əsas inkişaf budağına birləşdirilir.
Bugfix — qeydiyyatdan kod-review və reqressiya testlərinə qədər tam həyat dövründən keçən planlı düzəlişdir. Bugfix müzəyyən sprintə daxildir və təcili yerləşdirmə tələb etmir. Hotfix və bugfix arasındakı fərq təciliyyət və prosedurdadır, dəyişikliyin mürəkkəbliyində deyil.
| Parametr | Hotfix | Bugfix |
|---|---|---|
| Təciliyyət | Kritik | Sprint çərçivəsində |
| Proses | Sürətləndirilmiş, minimal yoxlamalar | Tam: testlər, review, QA |
| Budaq | Release budağından | Develop və ya feature-dən |
| Yerləşdirmə | Dərhal | Növbəti release |
Hotfix istehsalatda əsas funksionallığı bloklayan problem aşkarlananda lazımdır: ödəniş şlüzü işləmir, avtorizasiya xəta verir, istifadəçilər boş ekran görür. Belə hallarda hər bir dayanma saatı pul və etibar itkisinə səbəb olur. Hotfix minimal olmalıdır — yalnız problemi aradan qaldıran nöqtəvi dəyişiklik, qonşu kodun refaktorinqi olmadan.
Bugfix kritik olmayan xətalar üçün uyğundur: vizual səhvlər, əsas olmayan ekranlardakı qeyri-kritik xətalar, analitik məlumatlardakı qeyri-dəqiqliklər. Belə düzəlişlər tam yoxlama dövründən keçir və cədvəl üzrə nəşrdə buraxılır. Planlı bugfix tələsik dəyişikliyin yarada biləcəyi reqressiyanın qarşısını almağa imkan verir.
Düzgün düzəliş prosesi təkcə kod yazmaq deyil, həm də düzəlişi təhlükəsiz və davamlı edən intizamlar toplusudur. Hər bir bugfix-də, mürəkkəbliyindən asılı olmayaraq, riayət edilməli olan hərəkət ardıcıllığını nəzərdən keçirək.
Kod yazmazdan əvvəl xətanı öz inkişaf mühitində təkrarla. Təkrarlama olmadan düzəlişin işlədiyini yoxlaya bilməzsən. İstifadəçi ilə eyni məlumatlardan istifadə et — konfiqurasiyanı, funksiya bayraqlarını, API versiyasını köçür. Xəta lokalda təkrarlanmırsa, steycinqdə müvəqqəti loglama əlavə et.
Yaxşı təcrübə əvvəlcə test yazmaqdır ki, xətanı təkrarlasın və uğursuz olsun. Bu iki məqsədə xidmət edir: birincisi, xətanın mövcud olduğunu sübut edirsən, ikincisi, düzəlişdən sonra test keçir və düzəlişi təsdiqləyir. Test reqressiyadan qorunmaq üçün kod bazasında qalır.
@Test
fun testCartTotalWithPromotion() {
val cart = Cart().apply {
addItem(Item("T-shirt", 29.99))
addPromotion(Promotion("10OFF"))
}
Assert.assertEquals(26.99, cart.total())
}
Minimal dəyişiklik bugfix-in əsas prinsipidir. Yolda qonşu kodu refaktor etmə, eyni commit-də digər xətaları düzəltmə. Hər commit dəqiq bir problemi həll etməlidir. Bu, kod-review-i, lazım olduqda geri qaytarmağı və dəyişiklik tarixini başa düşməyi asanlaşdırır. Bir dəyişiklik — bir commit.
Düzəliş yazıldıqdan sonra bütün reqressiya testlərini işə sal. Düzəliş ümumi modula toxunursa, qonşu modulların testlərini də yoxla. Linter-i işə sal və kodun layihədə qəbul edilmiş standartlara uyğun olduğunu yoxla. Yalnız bundan sonra Pull Request yarat.
Xəta izləmə sistemləri düzəliş prosesinin ayrılmaz hissəsidir. Onlar heç bir xətanın itirilməməsinə, məsul şəxsin təyin edilməsinə, statusun izlənməsinə və statistikanın toplanmasına imkan verir. Alət seçimi komandanın ölçüsündən vɘ proseslərdən asılıdır, lakin əsas funksionallıq oxşardır: tapşırıq yaratma, həyat dövrü, prioritetlər, VCS ilə inteqrasiya.
Jira — enterprise layihələri üçün ən geniş yayılmış sistemdir, çevik workflow, fərdi sahələr və Bitbucket/GitHub ilə inteqrasiya dəstəkləyir. GitHub Issues — kiçik və orta komandalar üçün əlverişli, Pull Request ilə inteqrasiya edilmiş daxili treker. Linear — minimalist interfeys vɘ yüksək sürətə malik müasir treker, startaplarda məşhurdur.
Birinci: səbəbi düzəlt, simptomu yox. Tətbiq nil səbəbindən çəkirsə, bütün kodu if let ilə örtmə — dəyərin niyə nil olduğunu anla. İkinci: düzəliş düzəlməni sübut edən test əhatə etməlidir. Üçüncü: bir commit-də iki xətanı düzəltmə — bu geri qaytarmanı çətinləşdirir. Dördüncü: commit təsvirinə trekerdəki tapşırığa keçid əlavə et.
Tez-tez verilən suallar
Hər iki termin xətanı düzəltmək deməkdir. “Fiksləmək” əlavə məna daşıyır — Git-də dəyişiklikləri təsdiqləmək. Peşəkar ünsiyyətdə sözlər bir-birini əvəz edir.
Conventional commits istifadə edin: fix(module): short description. Məsələn: fix(auth): handle nil in login response. Commit gövdəsində issue linki əlavə edin.
Bəli, bu tövsiyə olunan praktikadır. Xətanı təkrarlayan test problemi təsdiqləyir və reqressiyanın qarşısını alır. Xətanı testdə təkrarlamaq çətindirsə, heç olmasa inteqrasiya testi yazın.
Steycinqdə genişləndirilmiş loglama əlavə edin, istifadəçilərdən qəza hesabatları toplayın, testçidən dəqiq mühit məlumatı istəyin. Bəzən xəta ƏS versiyasından və ya cihaz modelindən asılı olur.
Hotfix — problem hazırda istifadəçiləri istehsalatda bloklayanda. Bugfix — növbəti release-i gözləyə biləcək bütün digər xətalar üçün.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun