gpt4 book ai didi

c++ - 为什么推荐统一初始化(用大括号初始化)?

转载 作者:可可西里 更新时间:2023-11-01 18:39:51 26 4
gpt4 key购买 nike

我看到很多不同的地方统一初始化是recommended .赫伯萨特 recommends它,并在使用它时给出一个列表。似乎普遍的共识是使用这种语法。

但是,我不明白为什么。它有std::initializer_list的问题优先。添加 std::initializer_list一个类可以破解代码。有模板,不推荐使用。它似乎比“旧”方式有更多异常(exception)。旧方法不存在这些问题。

我不明白为什么统一初始化更好。我的结论是继续使用 ()语法,并使用 {} 在我想用 std::initializer_list 调用构造函数的情况下.

为什么?统一初始化有什么作用?

  • 禁止缩小:好的功能。但是,由于我为我的所有代码打开了缩小警告(因为我想知道我代码中的所有缩小,而不仅仅是在初始化时),所以我不太需要此功能。<
  • 最令人烦恼的解析:是的,这是个问题,但我很少遇到这个问题。所以这不是(对我而言)转换的理由。这个地方,我可能会用 {} .
  • 还有什么(也许,我还在学习 C++ 的新特性)吗?

使用“旧”方式,无需记住规则,也没有可能的代码中断。只需使用它,有时,非常非常罕见,您会遇到最令人烦恼的解析。就这样。

我的想法有什么地方不对吗?

最佳答案

看来您对技术方面的把握还不错,nwp 提出了我要在评论中提到的另一个问题,即清晰度。所以我认为您拥有做出决定所需的信息。

也就是说,我认为值得加倍努力并尝试强调清晰度方面的重要性。根据我的经验,代码清晰度可能是代码库中维护的最重要的事情。特别是在避免混淆和限制浪费在愚蠢错误上的时间方面。我想我们都有过这样的经历:花费太长时间来调整一段错误代码的流程,最终发现问题是错字或对初衷的误解。

公平地说,听起来您已尝试通过坚持有助于解决该问题的风格和工具来解决该问题。作为 nwp 开始的标准论点是,许多人不同意偏离语言内置的命名约定,也不同意使用 IDE。我个人同情这种逻辑,但也理解为什么许多人认为它过时甚至不成问题(特别是对于 IDE)。

不过,当谈到清晰度问题时,我发现很难不记住人们非常擅长忽略次要细节,即使这些细节可能对他们有帮助。因此,可以暗示问题所在的上下文线索越多越好。语法突出显示很棒,但我不敢打赌一个晚上的调试就能注意到黄色而不是橙色的东西。黄色并使用驼色外壳?也许。黄色并使用牙套?也许吧。

尤其是当您开始接触别人编写的代码或很久以前编写的代码时,所有这些小提示就越重要。

归根结底,我认为这就是人们喜欢它并推荐它的原因。这是那种在重要的时候可能只会让你印象深刻的事情。


此外,附注是对您关于缩小范围的评论的回应。启用缩小警告可能会让您暂时忽略此好处,但在许多情况下,人们要么 1) 由于遗留代码无法启用此类警告,要么 2) 不想启用此类警告,因为他们故意依赖此类行为某些情况下,并会认为这些警告令人讨厌。但是,在任何一种情况下都采用列表初始化不仅有助于防止潜在问题,还有助于明确给定代码行的意图。

言归正传,每个人都有不同的环境和偏好。像这样的功能增加了人们可以提高代码质量/可读性的方式,同时仍然在他们可能有的任何限制( self 强加或其他)内工作。

关于c++ - 为什么推荐统一初始化(用大括号初始化)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46403621/

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