码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++编程规范(一)


            

    目录

    1.文件名

    2. 版权信息

    3. 头文件

    4. 作用域

    (1)在命名空间的最后注释出命名空间的名字​​​​​​​

    (2)避免使用using引入整个命名空间的标识符号

    (3)避免进行大量构造及析构操作​​​​​​​​​​​​​​

    (4)尽量在变量声明时进行初始化,且避免进行无效的初始化​​​​​​​

    ​​​​​​​(5)尽量避免全局函数和全局变量,使用命名空间或static关键字等进行作用域限制


            什么是C++的编程规范,编程规范重要吗?

            当然重要啦,你想想一个团队里面好几个程序猿,每个人都有自己的编程习惯,那么以后维护代码的那个人不是得类似,举个例子,下面的代码:

    1. void cc(int i){
    2.    int j;
    3.    if(i > 5) j = 0;
    4.    else j = 1;
    5. }

            在上面这个代码函数中,你知道这个函数的功能是什么吗?包括里面每个变量的含义,代表了什么?不知道吧。这个代码量还算是比较少,一旦你的代码量达到几万行,然后所有变量和函数都这样定义,那我估计你自己都要疯掉,不止你的同事。所以在日常的编程中,需要注意编程要规范,相反地,你来看看下面的代码,就算没还没有写注释,那我们也能猜到这个函数大概的功能是链接电脑的功能,并且会传入一个“线”的参数,然后判断线的数量大于5条,就给结果 result 赋值0。

    1. void ConnectComputer(int line){
    2. int result;
    3. if(line > 5) result= 0;
    4. else result= 1;
    5. }

            其次,一定要养成编写代码边注释的习惯:

    1. /*
    2. * 函数功能:链接电脑的函数
    3. * 函数参数:int line
    4. * 函数返回值:void
    5. */
    6. void ConnectComputer(int line){
    7. int result;
    8. if(line > 5) result= 0;
    9. else result= 1;
    10. }

            针对小编在工作中和参考一些文档整理出来一些编程的规范,现在就无偿的献给大家。

    1.文件名

            C++文件名全部都是小写,且单词之间用_分割,如:gloable.cpp

            所有文件均需要统一格式的版权信息

    2. 版权信息

    3. 头文件

            在.h中使用#define来防止头文件被多重包含,并在最后注释出宏的名字,命名格式为:

    1. // 格式:     
    2. <PROJECT>_<FILE>_H_
    3. // 例子:假设在工程SERVEN中的一个COUNT.cpp
    4. # ifndef SERVEN_COUNT_H_     
    5. # define SERVEN_COUNT_H_
    6. ...
    7. # endif

            尽量避免使用前置声明,优先使用#include来包含相关头文件:

    1. 包含头文件:#include "timer.h" // 优先使用
    2. 前置声明:class Timer; // 尽量避免

    ​​​​​​​#include的包含顺序:

            头文件的包含顺序为:当前.cpp文件直接关联的头文件、C库文件、C++库文件、其他项目的头文件、本项目中的其他头文件。

    4. 作用域

    (1)在命名空间的最后注释出命名空间的名字​​​​​​​​​​​​​​

    1. namespace mynamespace{
    2. // 注意不要使用缩进...
    3. } // namespace mynamespace

    (2)避免使用using引入整个命名空间的标识符号

    1. // 禁止 —— 污染命名空间
    2. using namespace mynamespace;   

    (3)避免进行大量构造及析构操作​​​​​​​​​​​​​​

    1. // 循环调用构造函数:
    2. for (int i = 0; i < 1000; i++) {
    3.   SERVEN s;  // 低效,构造函数和析构函数分别调用1000次    
    4.   s.print(i);
    5. }
    6. // 改为下面的方式:
    7. SERVEN s; // 构造函数和析构函数只调用1次
    8. for (int i = 0; i < 1000; i++) {
    9. s.print(i);
    10. }

    (4)尽量在变量声明时进行初始化,且避免进行无效的初始化​​​​​​​

    1. int i;i = f(); // 坏 —— 声明与初始化分离
    2. int j = g(); // 好 —— 声明时初始化
    3. int k = 0;  // 坏 —— 无效初始化 
    4. k = 0xff;

    ​​​​​​​(5)尽量避免全局函数和全局变量,使用命名空间或static关键字等进行作用域限制

     

  • 相关阅读:
    logback通过EvaluatorFilter实现同时记录多个level级别的日志
    数据批处理速度慢?不妨试试这个
    李沐动手学习深度学习——4.4练习
    【Ansible】Ansible的Ad-hoc命令执行流程
    外汇天眼:3天80%收益!推荐人还有10%的推荐奖金!CoinFxOnline被警告!
    leetcode: 122. 买卖股票的最佳时机II
    金仓数据库KingbaseES数据库参考手册(服务器配置参数4. 连接和认证)
    【升级U8+】在将 varchar 值 ‘IA01‘ 转换成数据类型 int 时失败。
    Java:实现测试一个数是否为素数算法(附完整源码)
    河北工业大学数据挖掘实验四 贝叶斯决策分类算法
  • 原文地址:https://blog.csdn.net/weixin_43340455/article/details/125606067
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号