Diciamo che ho un'API REST, che ha la capacità di fornire una maschera di campo (ad esempio, l'API può restituire M di attributi N dove M è un sottoinsieme di N).
Se un client tipizzato staticamente (esempio: uno scritto in Java) richiede i dati da questa API, esiste un modo per gestire "con garbo" i problemi di nullability.
Se vengono richiesti campi N, vengono richiesti M, quindi i campi [N-M] sono "null" ...
-
Se la classe di serializzazione ha tutti i campi M; allora N-M sarà nullo. Se questa classe viene passata ad un'altra logica, il codice verrà sottoposto a controlli "nulli" per evitare NPE. (I tipi
Optional
arg limitano solo in minima parte il problema). -
L'altra opzione consiste nel creare diversi "oggetti di trasferimento dati (DTO)" per gestire varie maschere di campo "comuni" e garantire che tutti gli attributi di questi DTO non siano nulli, quindi il codice chiamante non devono fare controlli nulli prima dell'accesso di ogni attributo (esempio: ho 3 DTO: SuperSimple, Simple, Detailed con maschere di campo preselezionate). Però; questo può portare all'inquinamento da DTO nel codice (potenzialmente potresti avere 2 ^ N di tali DTO che sono un trascinamento sulla manutenibilità)
Apprezzerei i tuoi pensieri in forma di a) schemi di progettazione b) caratteristiche dei framework o c) librerie indipendenti che hanno come target questo problema
Grazie