在我的应用程序中,我们有一个类,它在数据库中生成信息作为静态集中数据。这个类叫做'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方法,但我不确定如何在我的代码中实现它。提前谢谢。
答案 0 :(得分:1)
Extract method是一种重构方法,可将代码提取到自己的方法中。如果提取的部分需要参数,则将它们作为参数传递给方法。
在您的代码中,除了字段名称之外,代码完全相同;字段名称将是您方法的参数。
结果如下:
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");
如果所有者国家/地区也需要更改,您也可以将其作为方法中的参数。