Jaki macie pomysł na refactoring tego?

Jaki macie pomysł na refactoring tego?
Julian_
  • Rejestracja: dni
  • Ostatnio: dni
  • 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)

  • Rejestracja: dni
  • Ostatnio: dni
0

może nie najładniejsze rozwiązanie ale

Kopiuj
   if (clientDto == null || (clientDto != null && clientDto.getNip() == null)) {
           return null;
       }

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.