gpt4 book ai didi

c# - 在方法签名中使用枚举作为逻辑?

转载 作者:行者123 更新时间:2023-11-30 16:59:37 24 4
gpt4 key购买 nike

假设我们有一个枚举(用于演示的简单示例)

public enum EnumTest{
valueA,
valueB
}

然后假设我们有一个消费者调用的方法,该方法将根据枚举的当前值执行某些操作。这样做有什么好处?是为了

有一个接受枚举的方法,然后根据这个枚举的值执行操作。即

 public void DoSomething(EnumTest emumVal){
//common code here

switch(enumVal){

case EnumTest.valueA: doSomething();
break;
case EnumTest.valueB: doSomethingElse()
break;
}
}

这似乎是我求教过的人最喜欢的方法,但我知道一个方法应该做一件事而且只做一件事。让它基于枚举做一些稍微不同的事情让我想到如果添加更多枚举,这个方法可能会非常庞大​​且笨重

另一种选择似乎是对每个枚举都有明确的方法。ie

public void DoSomethingForValueA(){

}

public void DoSomethingForValueB(){

}

但是一些程序员同事说这太过分了而且浪费时间。

我想知道做这样的事情的正确方法是什么?

最佳答案

他们都是对的。如果您关心封装和 SRP,请选择第二个。

public void LogWarning() { Log(Severity.Warning); }
public void LogError() { Log(Severity.Error); }
private void Log(Severity severity) { ... };

第一个也是正确的,但是枚举可以增长,您会发现自己处于根据选项调用不同方法的情况。如果您只有几个选项并为它们执行几行代码,则第一个更简洁。

还取决于您希望 API 的清晰度。一种带参数的方法显然比 10 种名称相似但不带参数的方法更简洁。

关于c# - 在方法签名中使用枚举作为逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23589308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com