Clean Architecture og designmønstre i praksis · leksjon

Samhørighet, kobling og separasjon av ansvarsområder

Bli fortrolig med tre grunnleggende egenskaper ved programvaredesign som avgjør om koden forblir vedlikeholdbar: høy samhørighet, lav kobling og tydelig separasjon av ansvarsområder.

Leksjon 4 av 413 trinn

Samhørighet, kobling og separasjon av ansvarsområder er en gratis leksjon i Clean Architecture og designmønstre i praksis på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Clean Architecture og designmønstre i praksis, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Clean Architecture og designmønstre i praksis inneholder totalt 4 leksjoner.

Hvorfor disse egenskapene er viktige

Under clean code og SOLID ligger tre dypere designegenskaper: kohesjon, kobling og separasjon av hensyn. De forklarer hvorfor reglene fungerer.

Hva er kohesjon

Kohesjon måler hvor godt ansvarsområdene i en modul hører sammen. Høy kohesjon betyr én tydelig oppgave; lav kohesjon betyr en samling urelaterte metoder.

Lav kontra høy kohesjon

Sammenlign de to: Klassen Util blander urelaterte hensyn, mens UserRepository er svært fokusert. Dette fokuset er høy kohesjon.

// Low cohesion
class Util {
  saveUser() {}
  sendEmail() {}
  formatDate() {}
}
// High cohesion
class UserRepository {
  save() {}
  findById() {}
}

Hva er kobling

Kobling måler hvor mye én modul er avhengig av en annen moduls interne detaljer. Tett kobling sprer endringer overalt; løs kobling holder samhandling på et minimum.

Eksempel på tett kobling

Her oppretter OrderService sin egen SmtpMailer og bindes dermed til akkurat denne klassen. Å bytte ut maileren krever endringer i tjenesten – tett kobling.

class OrderService {
  constructor() {
    this.mailer = new SmtpMailer();
  }
}

Løsere kobling

Injiser maileren i stedet. Nå er OrderService avhengig av en abstraksjon og kan ta imot enhver implementasjon. Dette er løs kobling.

class OrderService {
  constructor(mailer) {
    this.mailer = mailer;
  }
}

Det ideelle punktet

Det ideelle punktet er høy kohesjon og lav kobling samtidig: fokuserte moduler som forblir uavhengige, slik at systemer er enkle å endre, teste og forstå.

Separasjon av hensyn

Separasjon av hensyn innebærer å dele opp et program slik at hver del har ansvar for ett bestemt hensyn – hold brukergrensesnitt, forretningslogikk og datatilgang i separate lag.

Blandede hensyn

Denne funksjonen blander datatilgang, logikk og presentasjon. Hvis ett av hensynene endres, risikerer man å ødelegge de andre – blandede hensyn.

function showTotal(id) {
  const rows = db.query('SELECT * FROM orders WHERE id=' + id);
  const total = rows.reduce((s, r) => s + r.price, 0);
  document.body.innerHTML = 'Total: ' + total;
}

Separer­te hensyn

Del den opp i et repository, en kalkulator og en visning. Nå kan hvert hensyn endres og testes uavhengig. Mye ryddigere.

const order = repository.findById(id);
const total = calculator.total(order);
view.render(total);

Hvordan de henger sammen med SOLID

Disse egenskapene danner grunnlaget for SOLID: prinsippet om ett ansvar fremmer kohesjon, avhengighetsinversjon gir lav kobling, og lagdeling uttrykker separasjon av hensyn.

Rask sjekk

Høy kohesjon og lav kobling – klarer De å skille dem fra hverandre?

Oppsummering

Da har De grunnlaget: kohesjon holder beslektet arbeid samlet, lav kobling minimerer avhengigheter, og separasjon av hensyn deler opp etter formål.

Gratis å komme i gang

Lær deg Clean Architecture og designmønstre i praksis med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Samhørighet, kobling og separasjon av ansvarsområder» gratis?

Ja – hele teksten i «Samhørighet, kobling og separasjon av ansvarsområder» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Clean Architecture og designmønstre i praksis-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Clean Architecture og designmønstre i praksis inneholder totalt 4 leksjoner.

Hva lærer jeg i «Samhørighet, kobling og separasjon av ansvarsområder»?

Bli fortrolig med tre grunnleggende egenskaper ved programvaredesign som avgjør om koden forblir vedlikeholdbar: høy samhørighet, lav kobling og tydelig separasjon av ansvarsområder. Du øver på Clean Architecture og designmønstre i praksis med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Clean Architecture og designmønstre i praksis?

Ingen tidligere erfaring er nødvendig. Clean Architecture og designmønstre i praksis på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Samhørighet, kobling og separasjon av ansvarsområder»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Clean Architecture og designmønstre i praksis-leksjonen?

Ja. Alle Clean Architecture og designmønstre i praksis-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Introduksjon til Clean Code
  2. Oversikt over SOLID-prinsippene
  3. Verdien av god design
  4. Samhørighet, kobling og separasjon av ansvarsområder
← Tilbake til Clean Architecture og designmønstre i praksis