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 вобастагии қавӣ надоранд.
// Онҳо метавонанд мустақил ё якҷоя истифода шаванд, аммо тағиротҳои дохилии онҳо
// ба ҳам таъсир намерасонанд.
?>