Jaki macie pomysł na refactoring tego?

Jaki macie pomysł na refactoring tego?
Julian_
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:1703
0
Kopiuj
@Override
	public Client dtoToSource(ClientDto clientDto) {
		if (clientDto == null) {
			return null;
		}
		if(clientDto.getNip() == null) {
			return this.dtoToNewSource(clientDto);
		}
		return clientRepo.findById(clientDto.getNip()).orElseGet(() -> this.dtoToNewSource(clientDto));
        }
	
	private Client dtoToNewSource(ClientDto clientDto) {
		User user = userMapper.dtoToSource(clientDto.getUserDto());
		Address contactAddress = addressMapper.dtoToSource(clientDto.getContactAddress());
		Address registerAddress = addressMapper.dtoToSource(clientDto.getRegisterAddress());
		
		Client c = new Client(clientDto.getNip());
		c.setCompanyName(clientDto.getCompanyName());

		c.setUser(user);
		c.setContactAddress(contactAddress);
		c.setRegisterAddress(registerAddress);
		return c; 
	}

wkurza mnie ten dodatkowy if, przez co 2 razy mam this.dtoToNewSource(clientDto).
Wszystko przez to, że repository się wywala, gdy dostanie nulla: repo.findById(null)

0

może nie najładniejsze rozwiązanie ale

Kopiuj
   if (clientDto == null || (clientDto != null && clientDto.getNip() == null)) {
           return null;
       }
edytowany 1x, ostatnio: flowCRANE
Julian_
no, ale to nie jest to samo co napisałem :( jak client nie jest null ale ma nip null to nie ma zwrócić null tylko dtoToNewSource(clientDto)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.