Sobes.tech
Middle

Tətbiq inkişafı kontekstində çoxmodulluluq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Modulyarlıq — bu arxitektura yanaşmasıdır ki, burada tətbiq kiçik və müstəqil modullara bölünür. Hər modul tətbiqin müəyyən funksionallığından və ya qatından məsuliyyət daşıyır.

Modulyarlıq arxitekturasının üstünlükləri:

  • Kodun daha yaxşı təşkili: Məntiqi əlaqəli tətbiq hissələri ayrı modullarda qruplaşdırılır, bu da naviqasiyanı və layihənin strukturunu anlamağı asanlaşdırır.
  • Yığmanın sürətləndirilməsi: Bir moduldakı dəyişikliklər yalnız həmin modulun və ondan asılı olanların yenidən tərtib olunmasını tələb edir, bütün layihənin yox.
  • Təkrar istifadə imkanlarının artırılması: Ümumi funksionallığa malik modullar (məsələn, UI komponentləri, utilitlər) tətbiqin müxtəlif hissələrində və ya digər layihələrdə asanlıqla istifadə oluna bilər.
  • Testlərin asanlaşdırılması: Hər modul müstəqil şəkildə test edilə bilər, bu da testlərin yazılmasını və dəstəyini sadələşdirir.
  • Daha yaxşı miqyaslama: Komanda müxtəlif modullar üzərində paralel işləyə bilər, bu da münaqişə riskini azaldır.
  • Asılılıqların izolyasiyası: Modullar bir-birinə açıq asılılıqlara malikdir, bu da tətbiqin strukturunu şəffaf edir və gözlənilməz dəyişikliklərin riskini azaldır.

Android tətbiqində modulların növlərinə nümunələr:

  • app (əsas modul)
  • feature-login (giriş funksionallığı üçün modul)
  • feature-profile (istifadəçi profili üçün modul)
  • data (məlumatlarla işləmək üçün modul)
  • domain (biznes məntiqi üçün modul)
  • common-ui (ümumi UI komponentləri ilə modul)
  • utils (ümumi utilitlər ilə modul)

Əksər hallarda, modullar build.gradle fayllarında elan olunan asılılıqlar vasitəsilə əlaqələndirilir:

// build.gradle (Modul: app)
dependencies {
    // Əsas modulun digər modullara asılılığı
    implementation project(':feature-login')
    implementation project(':feature-profile')
    implementation project(':data')
}
// build.gradle (Modul: feature-login)
dependencies {
    // Funksional modulun məlumat və utilitlər modulları ilə asılılığı
    implementation project(':data')
    implementation project(':utils')
}