L'applicazione è un'API. Gli utenti possono inviare dati all'API, che viene quindi trasformato in un oggetto dominio.
Mi chiedo dove applicare le regole del dominio, nell'oggetto dominio.
Facciamo in modo che sia più chiaro con un esempio del mondo reale:
Gli utenti immettono un calcolo, con Name
e CalculationScript
. Per facilità d'uso, possono usare parentesi quadre nello script: [3-(5+2)]+9
è valido.
Tuttavia, l'oggetto dominio può contenere solo parentesi standard e le parentesi quadre vengono trasformate.
Mi chiedo se dovrei applicare le regole nel costruttore, o mantenere la conoscenza della stringa grezza e disinfettare nel getter.
Esiste uno schema specifico che è comune utilizzare in questi casi?
Assumendo questo DTO molto semplice:
public class CalcDto{
public string Name {get;}
public string CalcScript {get;}
}
Fatelo nel costruttore:
public class CalcDomain{
public string Name {get;}
public string CalcScript {get;}
public CalcDomain(CalcDto dto){
this.Name = dto.Name;
this.CalcScript = replaceSquareBrackets(dto.CalcScript);
}
private string replaceSquareBrackets(string str){
//...
}
}
Fallo nel getter
public class CalcDomain{
public string Name {get;}
private string RawCalcScript;
public string CalcScript {get => replaceSquareBrackets(RawCalcScript);}
public CalcDomain(CalcDto dto){
this.Name = dto.Name;
this.RawCalcScript = replaceSquareBrackets(dto.CalcScript);
}
private string replaceSquareBrackets(string str){
//...
}
}