Ревью кода
Условие задачи
Необходимо сделать ревью кода сервиса DataService и метода создания/получения новой сущности Data. Метод создания может вызываться из разных потоков и должен быть безопасен для такого режима использования. AccessService и DataRepository безопасны для использования из разных потоков. Предложить, как можно сделать лучше и пояснить проблему, если она есть
javapublic class DataService {
private AccessService access;
private DataRepository repository;
private MessageDigest digest = get();
public DataService(AccessService access, DataRepository repository) {
this.access = access;
this.repository = repository;
}
public Data get(String uid) {
access.checkRead();
return repository.get(uid);
}
public void create(String name) {
access.checkWrite();
digest = get();
repository.save(new Data(
HexFormat.of().formatHex(digest.digest(name.getBytes())),
name
));
}
public static MessageDigest get() {
try {
return MessageDigest.getInstance("md5");
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException();
}
}
public record Data(
String uid,
String name
) {}
public interface DataRepository {
void save(Data data);
Data get(String uid);
}
public interface AccessService {
void checkRead();
void checkWrite();
}
}