Ci sono differenze tra questi due? (Creazione dell'oggetto in Java)

2

Mentre stavo lavorando con questo pezzo di codice oggi, mi sono incuriosito se ci sono delle differenze significative tra questi due o è solo una preferenza personale quando si tratta di creare oggetti.

Oggetto A

private MailModuleStatus createMailModuleStatus(Project project, Team team, Account account){

    List<MailStatusCount> mailStatusCounts = mailModuleStatusHelper.getMailStatusCounts(team, DateUtils.getMidnightOfDate(new Date(), project.getTimeZone()));

    long unreadEmailCount = emailTrackService.countUnreadEmails(project, team);

    ScheduledEmail nextScheduledEmail = scheduledEmailService.findNextScheduledEmailToBeSent(account, team);

    return new MailModuleStatus(mailStatusCounts, unreadEmailCount, nextScheduledEmail);
}

Oggetto B

private MailModuleStatus createMailModuleStatus(Project project, Team team, Account account){

    MailModuleStatus mailModuleStatus = new MailModuleStatus();

    mailModuleStatus.setMailStatusCounts(mailModuleStatusHelper.getMailStatusCounts(team, DateUtils.getMidnightOfDate(new Date(), project.getTimeZone())));
    mailModuleStatus.setUnreadEmailCount(emailTrackService.countUnreadEmails(project, team));
    mailModuleStatus.setNextScheduledEmail(scheduledEmailService.findNextScheduledEmailToBeSent(account, team));

    return mailModuleStatus;
}
    
posta amazingsaluyot 02.06.2017 - 13:24
fonte

2 risposte

6

Il primo è migliore perché sei sicuro di non aver dimenticato nulla.

Costruttore e setter predefiniti vengono solitamente utilizzati da framework come Hibernate, Jackson quando ne hanno bisogno. Questo è il motivo per cui di solito hai un costruttore pubblico predefinito anche se in un mondo ideale, preferiresti avere solo quello che garantisce che il tuo oggetto sia inizializzato correttamente.

    
risposta data 02.06.2017 - 13:35
fonte
2

Anche se B ha un codice molto più chiaro e comprensibile a prima vista, l'Esposizione A è (IMHO) migliore perché puoi usare try..catch , null e sanity controllare i tuoi argomenti prima di inviarli a

return new MailModuleStatus(....);
    
risposta data 04.06.2017 - 10:56
fonte

Leggi altre domande sui tag