gpt4 book ai didi

c++ - 针对 0 的变量的隐式测试真的被认为是最佳实践吗?为什么?

转载 作者:行者123 更新时间:2023-12-01 14:16:03 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

去年关闭。




Improve this question




我在看 A Tour of C++作者 Bjarne Stroustrup 复习我的 C++。

在第 1 章第 1.8 节中,Stroustrup 写道:

The most common case is testing a variable against 0 (or the nullptr). To do that, simply leave out the explicit mention of the condition. For example:


void do_something(vector<int>& v)
{
if (auto n = v.size()) {
// ... we get here if n!=0 ...
}
// ...
}

在我自己的代码中,我总是试图明确,并准确地传达我的意图。我相信这被认为是一般的编程最佳实践。

我考虑编写复杂的表达式,其计算结果为逻辑 truefalse (而不是 0nullptr )作为此方法的一部分。它还可以帮助避免微妙的隐式转换错误。事实上,我认为现代 C++ 仅出于向后兼容的目的才允许这种隐式转换,并且实际上希望在新代码中不鼓励这样做。

同时,我相信 Stroustrup 在他的书中提出了社区普遍接受的最佳实践。

我的问题是:
  • 这种隐式转换风格真的被认为是 C++ 开发社区的最佳实践吗?
  • 如果是这样,它是否与其他最佳实践和强类型的一般潜在目标相矛盾?
  • 最佳答案

    1. Is this style of implicit conversion really considered a best practice in the C++ development community?


    没有“C++ 开发社区”这样的东西,开发人员不会一致同意一组规范的最佳实践。

    也就是说,是的,隐式转换为 bool 确实通常用于 if 语句中。毫无疑问,有些人不喜欢依赖它。

    1. If so, doesn't it contradict other best practices and the general underlying goals of strong typing?


    取决于其他最佳实践和一般潜在目标试图实现的目标。鉴于意见的广泛多样性,一种最佳实践很可能与另一种相矛盾。

    一般来说,C++ 有很多类型之间的隐式转换,程序员甚至可以对类进行用户定义的转换。该语言具有隐式转换的事实意味着至少有一些人认为隐式转换是可以接受的。

    关于哪些隐式转换可以(以及在哪些上下文中)的意见不同。通常,争论归结为程序如何被误解,以及冗余显式转换会在多大程度上不必要地将注意力从代码的相关和重要部分转移开。

    隐式转换只是平衡冗长与简洁以及显式与隐式维度的一种选择。

    关于c++ - 针对 0 的变量的隐式测试真的被认为是最佳实践吗?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61148149/

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