SRPが尊重されない場合、命名は困難です:)しかし、メンバーの命名はしばしば誤用されます。
あなたの場合、私はこのようなことをします:
- 実装の責任は、特定の永続性の契約をカバーすることです
- 「誰」が攻撃を受けている
音声なしで考える-永続性はユーザーに対して行われ、関連する名前はIUserRepositoryにすることができます-メソッドはCRUD以上ではありません-IUserRepositoryはユーザー向けであるため、UserSave、UserUpdateを使用する必要はありません。マナー
魔法はここにあります...これを行うだけです:
public interface IRepository<TYPE, KEY>{
IList<TYPE> GetAll(KEY key);
TYPE GetById(KEY key);
void Save(TYPE obj);
void Update(TYPE obj);
void Delete(Key key);
}
難しいですか?カスタムのものをどうするか?
public interface IUserRepository : IRepository<User, int>
{
IList<User> GetAllMyFavorites(ICriteria crit);
IList<Events> GetHistoryByUser(User user);
}
IoCコンテナを使用したコードでは、簡単に実行できます
public UserController {
private _userRepository = null;
private _eventsRepository = null;
public UserController(IUserRepository userRepository,
IRepository<Events,int> eventsRepository)
// if you are doing here just CRUD use the generic signature
{
_userRepository = userRepository;
_eventsRepository = eventsRepository;
}
public MarkItAsGoldPartener(int userId){
var user = userRepository.GetById(userId);
user.PartnerType = PartnerTypes.Gold;
userRepository.Save(user); // the user in member name is useless
eventsRepository.Save(new Event(){Message = "The user" + UserId + "is golden" });
}
}
幸運を :)