Я нашел отличный код с более чем 30 параметрами, предоставленными методу (я потерял счет). Реализация содержит более 500 строк с , если/then/else и переключатель блок.Необходима помощь в рефакторе - метод со многими параметрами
Как это можно было бы реорганизовать чистым способом? Что бы вы посоветовали по этому поводу?
Множество реализаций реализовано по всему приложению, и все эти параметры задают.
метод Проблема:
public static User findUser (
String userCode, String lastName, String firstName,
String alternativeLastName, String sex, int day, int month, int year,
String locationParameter, String locationInfo,
Id groupId, Id organizationId, Id orderId,
Id orderGroupId, Id orderOrganizationId,
List<Id> groupIds, List<Id> organizationIds,
List<Id> orderIds, List<Id> orderGroupIds,
List<Id> orderOrganizationIds,
String timeRange, Long daysAgo,
Date dateFrom, Date dateUntil,
CodingMap codingMap, List<String> languageList, String visitType,
Account account, List<Group> accountGroups,
Organization accountOrganization, Profile profile,
AccessProfile accessProfile, Locale locale, int maxResults,
long newTimeRange, long minimumTimeRange,
boolean hideUserWithoutName, boolean withOrderInfo, boolean withVisitInfo,
boolean orderEntryAvailable,
boolean hideDiscontinuedResults, boolean checkPatientAccessRights, boolean searchForCopies,
boolean inOrderEntry, boolean allPatientCodes,
boolean addPatientCharacteristics, boolean showSpeciesColumn,
boolean patientDefinedWithPrivacyLevel,
boolean excludePatientsWithoutCodeInSelectedCodingSystem
) throws CompanyException {
...
}
Используется повсюду, как это:
User.findUser(member.getCode(), context.lastName, context.firstName,
context.alternativeLastName, context.sex,
context.birthDate.getDay(), context.birthDate.getMonth(),
context.birthDate.getYear(),
context.locationParameter, context.locationInfo,
null, null, null, null, null, null, null, null, null, null,
session.timeRange(), session.daysAgo(), session.dateFrom(),
session.dateUntil(),
order.codingMap(), order.languageList(), member.visitType(),
null, null, null, null, null, locale, 25, 1000L,200L,
session.point.booleanValue(), session.infobooleanValue(), false,
true, true, true, true, true, true, true, false, false, false);
O ... M ... G ...... – assylias
Мой совет будет ** ** RUN. –
рефакторинг? Я бы назвал это «переписыванием» кода: D – Juvanis