1) Hvad betyder Separation of Concerns?
Separation of Concerns handler om at dele ansvar op i mindre dele. Hver klasse, komponent eller service bør have ét tydeligt ansvar.
Jo flere ting en klasse prøver at gøre på én gang, desto sværere bliver den at forstå, teste og vedligeholde.
2) Problemet uden SoC
Her håndterer samme klasse både brugerlogik, databaseadgang og mails.
cs · 20 lines
cs
1 2public class UserService3{4 public void RegisterUser(User user)5 {6 using var connection =7 new SqlConnection(connectionString);8 9 connection.Insert(user);10 11 var smtp = new SmtpClient();12 13 smtp.Send(14 "welcome@email.com",15 user.Email,16 "Welcome"17 );18 }19}20 3) Med SoC
Her har hver klasse ét ansvar. Det gør koden nemmere at ændre, fordi ændringer kun rammer den rigtige del.
cs · 37 lines
cs
1 2public class UserRepository3{4 public void Save(User user)5 {6 // Save user7 }8}9 10public class EmailService11{12 public void SendWelcomeEmail(string email)13 {14 // Send mail15 }16}17 18public class UserService19{20 private readonly UserRepository _repo;21 private readonly EmailService _email;22 23 public UserService(24 UserRepository repo,25 EmailService email)26 {27 _repo = repo;28 _email = email;29 }30 31 public void RegisterUser(User user)32 {33 _repo.Save(user);34 _email.SendWelcomeEmail(user.Email);35 }36}37 4) Typisk API struktur
txt · 7 lines
txt
1 2Controllers/3Services/4Repositories/5Models/6Data/7 5) Kort huskeregel
Hvis du kan beskrive en klasse med flere “og’er”, har den ofte for mange ansvarsområder.