C#console用于显示构造函数消息的最佳实践

时间:2018-03-16 21:12:11

标签: c# class constructor output

因此,根据我在我的程序中阅读/研究和应用的内容,我没有在我的课程中添加任何特定于输出的方法。因为这样做是不好的做法。

例如,在创建方法时,我这样做:

public string Greeting() {
  return $"Hello {Name}"; //Name is a property of the class
}

而不是这样做:

public void Greeting() 
{
  Console.WriteLine($"Hello {Name}"); //Name is a property of the class
}

问题:

当构造函数运行并需要返回消息时,将消息输出到控制台的最佳做法是什么?我想让我的班级在不同的应用程序类型之间移植。

我是否必须创建一个Console.WriteLine(),如果我将我的课程移到其他类型的应用程序中,我就删除它?那会违反最佳做法吗?

2 个答案:

答案 0 :(得分:0)

这实际上取决于你的意图。您是否试图避免对控制台的依赖?如果是这样,调用者将需要处理写作。在这种情况下,您可能想要创建一个单独的表示程序集,然后您可以在其他项目中引用它,或者更重要的是在其他项目中不引用它。

如果您希望您的类支持多种类型的输出,那么您可能希望创建自定义接口,正如其他人提到的那样,每个输出类型一个(控制台,日志文件等)

继承是第三种选择,但我怀疑这不是你想要的,除非你有很多与输出相关的自定义实现。

答案 1 :(得分:0)

这取决于您的"消息"的性质。

他们是错误消息吗?他们是开发者信息消息吗?它们是用户实时需要的信息吗?

对于错误,您需要错误处理和记录。

对于开发人员信息,您应该只记录并利用日志进行开发。

如果它们是用户信息消息,请使用该类中的静态类和环境变量来确定输出方法。我能想到的最简单的实现是在某种配置文件中设置环境变量并在应用程序启动时读取它,并使用switch case来确定调用的输出方法。

使用静态方法,您可以传递消息文本,然后输出消息,完全独立于其他代码,并且可以从您可能需要的任何地方访问它。

"完全独立"意味着唯一的要求是你的静态类存在......仍然存在一个依赖,但至少你没有使用和实例化一个" DisplayMessage"每个其他类中的类对象。