W przeszłości zwykle manipulowałem obiektem w ramach podstawowej metody, która jest tworzona / aktualizowana, ale ostatnio przyjąłem inne podejście i jestem ciekawy, czy to zła praktyka.
Oto przykład. Załóżmy, że mam repozytorium, które akceptuje User
byty, ale przed wstawieniem bytu wywołujemy niektóre metody, aby upewnić się, że wszystkie jego pola są ustawione zgodnie z tym, czego chcemy. Teraz zamiast wywoływać metody i ustawiać wartości pól w ramach metody Insert, wywołuję szereg metod przygotowania, które kształtują obiekt przed jego wstawieniem.
Stara metoda:
public void InsertUser(User user) {
user.Username = GenerateUsername(user);
user.Password = GeneratePassword(user);
context.Users.Add(user);
}
Nowe metody:
public void InsertUser(User user) {
SetUsername(user);
SetPassword(user);
context.Users.Add(user);
}
private void SetUsername(User user) {
var username = "random business logic";
user.Username = username;
}
private void SetPassword(User user) {
var password = "more business logic";
user.Password = password;
}
Zasadniczo, czy praktyka ustalania wartości nieruchomości z innej metody jest złą praktyką?
user
były przekazywane przez referencję, kod mógł szarpać go z rąk rozmówcy i zastąpić ją po prostu mówiąc, powiedzmy user = null;
.