У меня моральная дилемма.В моем приложении есть несколько объектов-значений, которые неизменны и чрезвычайно просты.Я сгенерировал равенства и хэш-код с помощью IDE (в моем случае intellij), но, сделав это, произвел сброс покрытия кода, плюс отчеты теперь показывают, что эти объекты-значения очень сложны (используя цикломатическая сложность метрика), когда на самом деле они очень просты.
Например, следующее значение равно в объекте значения, который имеет 3 неизменных атрибута.Сложность кода составляет 14 (javaNCSS) и имеет 26 ветвей выполнения (Cobertura).Я должен также добавить, что я не могу выполнить сборку, если какой-либо метод имеет сложность больше 10.
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
TranscriptTaskDetails that = (TranscriptTaskDetails) o;
if (inputFile != null ? !inputFile.equals(that.inputFile) : that.inputFile != null) {
return false;
}
if (language != that.language) {
return false;
}
if (outputFile != null ? !outputFile.equals(that.outputFile) : that.outputFile != null) {
return false;
}
return true;
}
Мне интересно, что другие разработчики используют, чтобы обойти это, так как я уделяю довольно много вниманияотчеты о сложности, так как, по моему опыту, показатель высокой сложности относится к большему количеству ошибок, поэтому эти автоматически генерируемые равенства и хэш-коды загрязняют отчеты.
Я думаю об использовании EqualsBuilder и HashcodeBuilder из apache commons-langчтобы обойти это, но я не на 100% счастлив: S.
Edit
Я должен был добавить, что часть кода, которую я пишу для этого проекта, - это библиотека, которая будетиспользуется другими бизнес-единицами ... И будет поддерживаться другой командой: S.