Sobes.tech
Middle

Чӣ тавр пайвастагии ва пайвастшавӣ дар барномасозӣ?

sobes.tech AI

Ҷавоб аз AI

Ҳамоҳангӣ (Cohesion) — ин миқёси он, ки то чӣ андоза унсурҳо дар дохили модул (класа, функсия) ба ҳам наздик мебошанд. Ҳамоҳангии баланд маънои онро дорад, ки унсурҳои модул барои иҷрои як вазифа ё консепсия тамаркуз мекунанд. Модул бо ҳамоҳангии баланд хуб тарҳрезӣ шудааст.

Масаланҳои сатҳҳои ҳамоҳангӣ (аз паст то баланд):

  • Тасодуфӣ (Coincidental): Унсурҳо тасодуфӣ пайваст шудаанд, бе пайванди логикӣ.
  • Логикӣ (Logical): Унсурҳо маҷмӯи амалҳои логикӣ пайвастшуда иҷро мекунанд, аммо интихоби он аз ҷониби коди беруна сурат мегирад.
  • Вақтӣ (Temporal): Унсурҳо бо он пайваст шудаанд, ки дар як вақт иҷро мешаванд.
  • Процедурӣ (Procedural): Унсурҳо пайравӣ мекунанд ба раванди иҷро.
  • Муносибатӣ (Communicational): Унсурҳо бо маълумоти якхела кор мекунанд.
  • Тартибӣ (Sequential): Хуруҷи як унсур вориди унсури дигар мешавад.
  • Функсионалӣ (Functional): Ҳамаи унсурҳо ба иҷрои як функсияи равшан муайян кӯмак мекунанд.

Пайвастагӣ (Coupling) — ин миқёси вобастагӣ байни модулҳо. Пайвастагии паст маънои онро дорад, ки модулҳо нисбатан мустақиланд. Кам кардани пайвастагӣ системаро бештар флексибл, нигоҳдоштанӣ ва тестшаванда мекунад.

Масаланҳои сатҳҳои пайвастагӣ (аз баланд то паст):

  • Барои мундариҷа (Content): Як модул мустақим ба маълумот ё иҷрои дохилии дигар модул дастрасӣ дорад.
  • Умумӣ (Common): Модулҳо аз минтақаи умумии глобалӣ истифода мебаранд.
  • Барои идоракунӣ (Control): Як модул рамзи идораро мегузарад, ки рафтори дигар модулро муайян мекунад.
  • Барои штамп (Stamp): Тасвири маълумоти мураккаб (объектҳо, структураҳо), аммо модул танҳо қисми онҳоро истифода мебарад.
  • Барои маълумот (Data): Тасвири маълумоти содда ҳамчун параметрҳо.
  • Барои паёмҳо (Message): Модулҳо паёмҳо мубодила мекунанд (масалан, тавассути ҳодисаҳо, интерфейсҳо). Ин шакли заифтарини пайвастагӣ аст.

Ҳадафи тарҳи хуб: ҳамоҳангии баланд (дар дохили модулҳо) ва паҳншавии паст (мебоии модулҳо).

<?php

// Масали ҳамоҳангии баланд (Ҳамоҳангии функсионалӣ)
// Ин синф танҳо барои кор бо корбарон тамаркуз мекунад
class UserManager {
    private array $users = [];

    public function addUser(string $name): void {
        $this->users[] = $name;
    }

    public function getUsers(): array {
        return $this->users;
    }

    public function deleteUser(string $name): void {
        $this->users = array_filter($this->users, fn($user) => $user !== $name);
    }
}

// Масали пайвастагии паст (Data Coupling)
// 'processOrder' танҳо аз маълумоти додашуда ($orderId, $amount) вобаста аст
class OrderProcessor {
    public function processOrder(int $orderId, float $amount): bool {
        // Логикаи коркарди фармоиш...
        // Ба иҷрои синфҳои дигар мустақиман вобаста нест,
        // танҳо ба маълумоти воридотӣ.
        echo "Processing order ID $orderId with amount $amount\n";
        return true;
    }
}

// Масал, ки дар он UserManager ва OrderProcessor вобастагии қавӣ надоранд.
// Онҳо метавонанд мустақил ё якҷоя истифода шаванд, аммо тағиротҳои дохилии онҳо
// ба ҳам таъсир намерасонанд.

?>