如果只将值设置为默认值,那么不显式初始化值总是可以的吗

本文关键字:初始化 设置 默认值 如果 | 更新日期: 2023-09-27 18:12:54

Resharper刚刚提示我这行代码:

private static bool shouldWriteToDatabase = false;

表示我不应该说"=false",因为bools显然在C#中默认为false。我已经用C#编程一年半了,但我从来都不知道这一点。我想它只是从裂缝中溜走了,但这让我想知道什么是好的练习。

我是否假设默认值为所有人所理解?这将导致更干净的代码,但如果另一个程序员不知道默认值,就会引起歧义。

如果只将值设置为默认值,那么不显式初始化值总是可以的吗

我个人认为:

  • 如果您的代码依赖于初始值,那么最好是显式的
  • 如果你的代码不依赖于初始值,那么省略它会更有意义,也会减少代码的混乱

然而,我不认为Resharper能够轻易地发现这两种情况之间的区别。

我是唯一一个认为= false;不会扰乱代码的人吗?作为一个维护主要由他人编写的应用程序的开发人员,明确自己的意思会非常有帮助。是的,bools在C#中默认为false,但当你查看别人的代码时,如果这是预期的行为,或者他们只是草率,可能会让人感到困惑。

就个人而言,默认值与语言(C#或任何其他语言(中的任何其他值一样都有文档记录。它足够直接,所以应该假设它,即int从0开始。一个对我来说很突出的场景是,如果你想要一个巨大的int数组,所有数组都包含0。你是要定义它,还是让C#用0初始化它?

假设int的大数组为0,但必须指定一个bool为假,这似乎有点违背直觉。指定基本变量,但不指定更复杂的结构。所以为了一致性,我不将任何东西初始化为它的默认值。