@Kuba Leman: Jak autor, wspomnianej książki, definiuje kohezję?
Może sens został zatracony gdzieś w tłumaczeniu, w angielskim masz terminy "coherence" i "cohesion", które tłumaczone na polski mogą skończyć jako "spójność".
"cohesion" w pewnym sesnie jest podzbiorem "coherence", żeby coś było spójnie ("coherent") musi mieć odpowiednią (chciałoby się napisać spójną) strukturę ("cohesion").
To, że metoda robi "coś" i w swojej strukturze odnosi się do "właściwości A oraz B", nie mówi nam nic o spójności.
Przykłady z d**y, gdzie obydwa warianty mają tę samą strukturę, ale na pierwszy rzut oka coś jest nie tak w doSomething
.
pub fun doSomething(int wiek)
if (wiek > 10) {
return this.waga;
}
return this.wzrost;
}
pub fun oblicz_zmiane_napiecia(int opor)
if (opor > 10) {
return this.stopien_zwiekszenia_napiecia;
}
return this.stopien_zmniejszenia_napiecia;
}
Czy składowe są pogrupowane w logiczny sposób? Tak = wysoka kohezja, Nie = niska kohezja.
Wracając do Twojego przykładu:
pub fun doSomething(int x)
{
if (x > 10) {
return this.one;
}
return this.two;
}
Czy da się jednoznacznie powiedzieć na takim przykładzie, czy te właściwości użyte są w metodzie w logiczny sposób?