使用Extract方法重构代码
本文关键字:代码 重构 方法 Extract 使用 | 更新日期: 2023-09-27 18:23:45
在我的应用程序中,我们有一个类,它在数据库中生成作为静态集中数据的信息。此类称为"GenerateOwner"。在这个类中,我们正在创建多个类型为"FieldValidation"的条目。
FieldValidation swedishFieldValidation1 = new FieldValidation
{
IsRequired = false,
DataType = "String",
Length = 0,
Min = 0,
Max = 255,
FieldValidationType = _bancPaydatabase.FieldValidationTypes.FirstOrDefault(o => o.FieldName == "InvoiceNumber"),
IsVisible = true,
Owner_Country = swedishOwnerCountry
};
FieldValidation swedishFieldValidation2 = new FieldValidation
{
IsRequired = false,
DataType = "String",
Length = 0,
Min = 0,
Max = 255,
FieldValidationType = _bancPaydatabase.FieldValidationTypes.FirstOrDefault(o => o.FieldName == "InvoiceTypeId"),
IsVisible = true,
Owner_Country = swedishOwnerCountry
};
等等。大约有20个左右的条目都非常相似。我的问题是,如何最好地重构这段代码,以防止重复相同的条目?有人指出了Extract方法,但我不确定如何在代码中实现它。提前谢谢。
在您的代码中,除了字段名称之外,代码完全相同;字段名称将是方法的参数。
结果如下:
private FieldValidation CreateFieldValidation(string fieldName)
{
return new FieldValidation
{
IsRequired = false,
DataType = "String",
Length = 0,
Min = 0,
Max = 255,
FieldValidationType =
_bancPaydatabase.FieldValidationTypes
.FirstOrDefault(o => o.FieldName == fieldName),
IsVisible = true,
Owner_Country = swedishOwnerCountry
};
}
现在的用法如下:
FieldValidation swedishFieldValidation1 = CreateFieldValidation("InvoiceNumber");
FieldValidation swedishFieldValidation2 = CreateFieldValidation("InvoiceTypeId");
如果所有者国家也需要更改,您也可以将其作为方法中的参数。