J'ai un datatable et je dois valider tous les champs qu'il contient. J'ai refactor ce code à ceci ci-dessous, mais une complexité est 15 (!) Devrais-je faire quelque chose comme dictionnaire avec le type comme clé et Func comme valeur? Je serais très reconnaissant pour quelques idéesRefactoriser un code de sélection un validateur
private bool CheckField(DataRow dataRow, ValidationField validationField)
{
bool result = false;
if (validationField.Requiered)
{
if (validationField.Type == typeof (int))
{
result = this.CheckIntegerAndNotNull(dataRow[validationField.Name].ToString());
}
else if (validationField.Type == typeof (DateTime))
{
result = this.CheckDateTimeAndNotNull(dataRow[validationField.Name].ToString());
}
}
else
{
if (validationField.Type == typeof (int))
{
result = this.CheckIntegerOrNull(dataRow[validationField.Name].ToString());
}
else if (validationField.Type == typeof(DateTime))
{
result = this.CheckDateTimeOrNull(dataRow[validationField.Name].ToString());
}
else if (validationField.Type == typeof(string))
{
result = this.CheckStringOrNull(dataRow[validationField.Name].ToString(),
validationField.MaxLength.Value);
}
else if (validationField.Type == typeof(decimal))
{
result = this.CheckDecimalOrNull(dataRow[validationField.Name].ToString());
}
}
return result;
}
public class ValidationField
{
public Type Type { get; set; }
public string Name { get; set; }
public bool Requiered { get; set; }
public int? MaxLength { get; set; }
}
Cette question semble être hors-sujet car il s'agit de réviser le code de travail. Essayez http://codereview.stackexchange.com. – CodeCaster
_ "Dois-je faire quelque chose comme dictionnaire avec le type comme clé et Func comme valeur?" _ - oui, vous pouvez le faire. – CodeCaster