c# - 如何使用不同的方法编写代码
问题描述
我有以下功能
public static MyMainFunc(string nameOfCar)
{
string getNameOfCar = returnedNameOfCar(nameOfCar)
string tyreNameOfCar= returnTyreNamesForCar(nameOfCar)
// more logic
}
这是returnNameOfCar的函数
private static string returnNameOfCar(string carName)
{
string carName= "";
if (carName== CarCollection.Audi.ToString())
{
carName= "Audi X";
}
else if (carName== CarCollection.BMW.ToString())
{
carName= "BMW Y";
}
return carName;
}
我将有另一个名为returnTyreNamesForCar的函数返回一些不同的代码
private static string returnTyreNamesForCar(string carName)
{
string tyreName= "";
if (carName== CarCollection.Audi.ToString())
{
tyreName= "Ceat";
}
else if (carName== CarCollection.BMW.ToString())
{
tyreName= "ABCD";
}
return tyreName;
}
您可以看到函数returnNameOfCar和 **returnTyreNamesForCar ** 中的代码重复了。知道如何改进代码吗?
更新
CarCollection 是枚举
public enum CarCollection
{
None = 0,
Audi = 10,
BMW = 11
}
解决方案
创建一个名为 Car 的类。
向您的类添加一个静态Dictionary<CarCollection, Car>
字段。
从该类创建实例,用相关细节填充它,将它们放入字典中。
向该类添加一个名为 GetCar 的静态成员,该成员将接收 的成员CarCollection
并从字典中返回相关汽车:
class Car
{
private static Dictionary<CarCollection, Car> _availableCars =
new Dictionary<CarCollection, Car>()
{
{CarCollection.Audi, new Car("Ceat", "Audi X")},
{CarCollection.BMW, new Car("ABCD", "BMW Y")},
}
static Car GetCar(CarCollection carName)
{
if(_availableCars.TryGetValue(carName, out var car))
{
return car;
}
// or throw an exception or something like that.
return null;
}
// Private constructor -
// don't let an outsider create an instance that's not in the dictionary.
private Car(string tyreName, string carName)
{
TyreName = tyreName,
CarName = carName
}
public string TyreName {get;}
public string CarName {get;}
}
如果你愿意,你可以让汽车属性读/写,所以任何使用这个代码的人都可以为它们设置不同的值。
推荐阅读
- html - Bootstrap 4 mr-auto 对齐在导航栏中不起作用?
- javascript - 在 innerHTML 中搜索特定字符串
- c - C:警告从返回类型为 in 的函数返回 void * 从指针中生成整数而不进行强制转换
- php - 多维数组上的while循环
- r - 如何将文本观察结果转换为 R 中的 1 个 1 或 0 0?
- linux - 从 linux 终端查看和过滤漂亮的实时 PSR-3 日志文件的最佳方法是什么?
- python - 为什么 Selenium python 只写 csv 的第一行,我的刮刀收集多行数据?
- python - 将热图的单元格分成多行
- c# - 无法将表达式转换为类型“Il2CppSystem.Object”C#
- oracle - 在oracle plsql中自定义光标