当前位置: 首页 > news >正文

Qt上位机编程命名规范-执行版

主要规范原则参考Qt上位机编程命名规范。

1.文件/文件夹大小写分析

考虑跨平台性,全小写是一种约定俗成的风格,在许多大型开源项目中(如 Linux 内核、Python 标准库)被广泛使用。

1.1. 配合文件扩展名

  • 通常文件名小写配合小写扩展名(如 .h, .cpp, .json),使整体风格统一:
 main.cpp
 config.json
 utils.h

1.2.文件夹和pri文件命名

通常小写、下划线分开:

 control_panel
 control_panel/control_panel.pri

2.代码命名规范

2.1.类名

  • 规则:使用 PascalCase(首字母大写,每个单词的首字母都大写)。
  • 示例
    • QWidget
    • QMainWindow
    • QString

2.2. 变量名

  • 规则:使用 camelCase(小写开头,每个单词的首字母大写)。

  • 成员变量

    • 前加前缀 m_ 表示成员变量,避免与局部变量冲突。
    • 示例:
      class MyClass {
      private:
          int m_value;
          QString m_name;
      };
      
  • 静态变量

    • 前加前缀 s_ 表示静态变量。
    • 示例:
      static int s_counter;
      
  • 局部变量

    • 使用纯 camelCase,无前缀。
    • 示例:
      int counter = 0;
      

2.3. 函数名

  • 规则:使用 camelCase,首字母小写,每个单词的首字母大写。

  • 示例

    • void calculateSum();
    • QString getUserName();
    • bool isValid();
  • 特殊约定

    • setter 和 getter 函数:
      • setterset<PropertyName>(),如 setName()
      • getterget<PropertyName>() 或直接使用属性名,如 name()
    • 布尔值相关函数通常以 ishas 开头:
      • bool isRunning();
      • bool hasError();

2.4. 枚举类型

  • 规则:枚举类型名使用 PascalCase,枚举值使用 PascalCase 或全大写(根据风格)。

  • 示例

    enum Color {
        Red,
        Green,
        Blue
    };
    

    或:

    enum ErrorCode {
        ERROR_NONE,
        ERROR_NOT_FOUND,
        ERROR_INVALID
    };
    
  • 枚举类(C++11 引入的 enum class)推荐使用 PascalCase:

    enum class LogLevel {
        Debug,
        Info,
        Warning,
        Error
    };
    

2.5. 命名空间

  • 规则:命名空间使用 小写,单词间用下划线分隔(尽量简洁)。
  • 示例
    namespace my_app {
        class MainWindow { ... };
    }
    

2.6. 信号和槽

  • 规则:信号和槽函数名使用 camelCase,与普通函数一致。
  • 示例
    • 信号:
      signals:
          void dataChanged();
          void errorOccurred(int errorCode);
      
    • 槽:
      slots:
          void onButtonClicked();
          void handleDataUpdate();
      

2.7. 常量

  • 规则:使用 kPascalCase(以 k 开头,PascalCase 命名)。
  • 示例
    const int kMaxValue = 100;
    const QString kDefaultName = "QtUser";
    

2.8.include顺序

  1. 按照 系统头文件Qt 库头文件自定义头文件 的顺序组织 #include
  2. 避免包含整个模块,只包含需要的头文件。
  3. 使用前向声明 来减少不必要的依赖。
  4. 使用 #pragma once包含保护 来防止重复包含。
  5. 根据 Qt 模块划分头文件,组织清晰。
  6. 避免冗余和重复的包含

示例:

// MyClass.cpp
#include <iostream>          // 标准库文件
#include <vector>

#include <boost/asio.hpp>    // 第三方库文件

#include <QWidget>           // Qt 库文件
#include <QPushButton>

#include "MyClass.h"         // 当前文件的头文件
#include "Helper.h"          // 同模块自定义头文件

2.9.总结

以下是一个符合 Qt 命名规范的代码片段:

#ifndef MYCLASS_H
#define MYCLASS_H

#include <QObject>
#include <QString>

class MyClass : public QObject {
    Q_OBJECT

public:
    explicit MyClass(QObject *parent = nullptr);
    ~MyClass();

    void setName(const QString &name);
    QString name() const;

signals:
    void nameChanged();

private:
    QString m_name;
    static int s_instanceCount;
};

#endif // MYCLASS_H

3.配置命名规范

3.1. 一般命名规则

在命名 JSON 文件时,建议遵循清晰、简洁和一致的命名规则,以便更易于理解和管理。

  • 小写命名
    使用小写字母,单词间用下划线分隔,便于跨平台使用,尤其在区分大小写的系统中(如Linux)。

    • 示例:
      • user_data.json
  • 添加时间戳(可选)
    对需要区分版本或生成时间的文件,建议添加时间戳,格式一般为YYYY_MM_DD

    • 示例:
      • report_2024_11_18.json

3.2. 命名格式建议

下划线格式 (snake_case) 我现在就是这个标准

  • 常见于后端开发和Linux系统。
    • 示例:app_config.json, user_data_backup.json

3.3. json命名规则

  • 驼峰式(camelCase)
    • 常用于前端开发或动态语言(如JavaScript),更符合JSON的流行风格,同时更加兼容Qt中的变量命名风格
    • 示例:userName, accountStatus, createdAt
      {
        "userId": 123,
        "userName": "Alice",
        "email": "alice@example.com",
        "createdAt": "2024-11-18T12:30:00Z",
        "isActive": true
      }
      

3.4. ini配置命名规范

适合大型项目,顶层使用分组,子键使用下划线,也是为了兼容Qt中的变量命名风格

[general]
userName=John
userAge=30

[display_resolution]
width=1920
height=1080

相关文章:

  • 1.从0搭建前端Vue项目工程
  • C++设计一:日期类Date实现
  • 使用Python或R语言重新拟合模型
  • js操作数组的常用方法
  • 8.路由原理专题
  • 外贸独立站使用wordpress模板与定制哪个SEO效果好
  • unity中找不到AI > Navgation
  • mybatis映射文件相关的知识点总结
  • 单元测试-pytest框架实践
  • windows下使用Hyper+wsl实现ubuntu下git的平替
  • python多线程入门教程(附环境安装包)
  • 网络运维学习笔记(DeepSeek优化版)010网工初级(HCIA-Datacom与CCNA-EI)距离矢量路由协议RIP与链路状态路由协议OSPF
  • Vue 3 引入全局状态管理 pinia
  • C++左值与右值 将亡值 移动语义 完美转发 引用折叠
  • 爬虫技术结合淘宝商品快递费用API接口(item_fee):电商物流数据的高效获取与应用
  • 【无人机与无人车协同避障】
  • Element Plus 的 Form 组件表单验证指南
  • 使用 ubuntu
  • docker利用docker-compose-gpu.yml启动RAGFLOW,文档解析出错【亲测已解决】
  • 大模型训练微调技术介绍
  • 昆山专业网站建设公司哪家好/seo怎么做
  • 如何增加网站关键词库/百度搜索引擎竞价排名
  • 做音乐 交流网站/拓客公司联系方式
  • 运城网站建设价格/四川刚刚发布的最新新闻
  • 网站开发服务器数据库/对网络营销的理解
  • 北京企业信息/搜索引擎优化中的步骤包括