HEngine
  • 引擎编译
  • 未来工作
  • 使用文档
    • 代码规范
    • Shader规范
    • config 配置
  • Python脚本系统
    • 技术分析
    • 使用api
  • Cpp脚本系统
    • 技术分析
  • 技术文档 & 心得体会
    • 数学
      • 坐标系、UV与深度范围
      • 行主序 与 列主序
    • 路径管理
    • 构建系统
    • 自定义资源格式
    • UI
      • undo/redo
      • 分辨率处理
    • ECS 系统
    • 插件系统
    • 数学库
    • Ref Counted
    • 音频
    • ChatGPT
    • Mesh、Vertex 等组织关系
    • 编辑器热更新方案
    • Profile
    • NLP
    • RenderDoc
    • CodeGen与反射系统
    • 安装包
    • 物理引擎
      • PhysX集成
      • Bullet集成
    • 动画
  • 图形后端
    • 坐标系差异
    • Feature差异
    • RHI 封装
    • Shader与Constant Buffer
    • DX12
    • Vulkan
    • Render Graph
    • 渲染整体架构
  • 图形Feature
    • 毛发
    • 鼠标拾取
    • 实例化渲染
  • Shader
    • Shader 交叉编译
    • Shader Toy
    • Shader 热更新
    • PBR
  • 打包
    • 打包
  • Bug 记录 & 解决过程
    • 闪退记录汇总
    • 导入图片显示混乱
    • D3D下glfw+imgui失效
  • 其他资料
    • 总结集合
Powered by GitBook
On this page
  • C++
  • 命名法
  • include 要求
  • 代码规范
  • Python
  • 资产及文件夹命名
  1. 使用文档

代码规范

C++

命名法

统一采用Pascal命名法(文件夹、类名等),第三方库除外

CMakeLists.txt 的变量命名也采用 Pascal 命名法,比如:

set(ProjectRootDir "${CMAKE_CURRENT_SOURCE_DIR}")

这里变量 ProjectRootDir 采用 Pascal 命名法,与 CMAKE 自带变量区分(比如 CMAKE_CURRENT_SOURCE_DIR )

变量

类内变量以 m 开头,例如:

class A
{
private:
    int mTest;
    int* mpTest;
    static int msTest;
    static int* mspTest;
    static int** msppTest;
    ...
}

struct 的则不用加 m,如:

struct A
{
    int Test;
    int* pTest;
    static sTest;
    static int* spTest;
    static int** sppTest;
    ...
}

class 的类内成员变量需要写在末尾,而 struct 的则应写在开头。

include 要求

顺序

首先include同级文件,其次是同Source文件,再次为第三方依赖,最后为stl库(确保依赖顺序)

且彼此直接需要以空格隔开(仅第三方依赖与stl库用尖括号)

比如 Editor 中:

// 同级文件(同属于 Editor ,不需要写完整路径)
#include "EditorLayer.h"

// 同Source文件(位于 Runtime 中,需要以 Runtime 起头)
#include "Runtime/Core/EntryPoint.h"	 

// 第三方依赖(尖括号)
#include <imgui/imgui.h>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>

// stl 库
#include <vector>

代码规范

HEngine 的代码规范偏Unreal,可参考: https://docs.unrealengine.com/4.27/zh-CN/ProductionPipelines/DevelopmentSetup/CodingStandard/

原则:(后面的规则优先级高于前面的规则)

  1. 尽量不使用下划线

  2. 变量一律小写字母开头

  3. 非类内静态变量(全局变量、局部变量),在前面加小写字母s

  4. 如果是类内部成员变量,在前面加小写字母m

  5. 如果是bool类型变量,在前面加小写字母b

  6. 类内成员统一放在类的最末尾(方法置于前)

  7. 默认情况下 std::string 为相对路径,而 std::filesystem::path 为绝对路径,相对路径到绝对路径需要由 ConfigManager::GetFullPath() 去获取

  8. .hpp文件默认只编译一次(仅被一个tu包含)

Python

使用 pep8 规范(具体可自行规定),参考:https://peps.python.org/pep-0008/

资产及文件夹命名

Pascal命名法。

Previous未来工作NextShader规范

Last updated 2 years ago