百科问答小站 logo
百科问答小站 font logo



C++中,auto关键字有哪些乱用的情况?平时使用有哪些坑? 第1页

  

user avatar   frmf 网友的相关建议: 
      

乱用的话代码的可读性会变差。auto还是需要放在编码规范中的。

其实很多团队的编码规范里面都包含了auto的使用规范。google编码规范里面也有,它的原则可以参考。其中的精髓大概就是这样一段话:

The fundamental rule is: use type deduction only to make the code clearer or safer, and do not use it merely to avoid the inconvenience of writing an explicit type. When judging whether the code is clearer, keep in mind that your readers are not necessarily on your team, or familiar with your project, so types that you and your reviewer experience as unnecessary clutter will very often provide useful information to others. For example, you can assume that the return type of make_unique<Foo>() is obvious, but the return type of MyWidgetFactory() probably isn't.

它这里说的type deduction包含了auto和模板参数,仅仅只是关注auto的用法也一样是适用的。

google编码规范里面对于各种情况都列举了,定义自己的规范时可以参考。

就我个人体会,适合使用auto的情况随手能列出以下几种:

       1、for(auto it = container.begin(); it != container.end(); ++it)    for(const auto& item: container)    for(auto&& item: container) 2、auto f = [](){}; 3、auto p = new very_very_long_class_name;    auto p = std::make_shared<class_name>(...);    auto p = std::make_unique<class_name>(...);    auto p = std::make_tuple(5, 2.0f, std::string("123")); 4、auto [it, ok] = my_map.insert(...);    for(auto&& [key, value]: my_map)     




  

相关话题

  如何优雅地利用c++编程从1乘到20? 
  如何评论"知名游戏开发者称 C++ 是一种非常糟糕、可怕的语言"? 
  编程语言语法和风格是否应该建立统一的标准? 
  Java为什么选择interface来作为"接口"这个功能的关键字? 
  是 C++ 的发展进入了邪路,还是我写代码的姿势不正确? 
  程序员是否需要大尺寸的显示器? 
  为什么计算机采用补码而不是原码或反码? 
  为什么 Linux 如此安全,却不把 Linux 设计成像 Windows 一样的图形界面来使用? 
  程序员有必要知道为什么做某个功能吗? 
  为什么有些(可能只是一些)程序员工作经验越长、丰富,越谨慎,越不愿意用新技术新特性? 

前一个讨论
柯西审敛原理是证得收敛还是一致收敛?
下一个讨论
函数求导的逆运算?





© 2025-05-05 - tinynew.org. All Rights Reserved.
© 2025-05-05 - tinynew.org. 保留所有权利