Dandelion 1.1.1
A light-weight 3D builder for educational usage
|
在开始编写代码前,请稍微花一点时间阅读以下的约定和帮助,这将有助于你更加顺利地参与到 Dandelion 的开发中。使用 Dandelion 做实验的同学可以不必遵守这些,直接开始实验。
开发过程中,除实现功能外,也请关注命名、注释(文档)、提交规范这三方面。
ArrayBuffer
代表 array buffer 类型。extract_vector3f
代表 extract vector3f 这个过程;如果某个单词是缩写,那么这个单词大写,例如 get_GL_type_enum
代表获取数据类型对应的枚举值(在 GLAD 中定义,用于某些 OpenGL API)。constexpr
而不是 const
或者宏,命名规则与变量相同。\~english
指令、中文注释开头请加上 \~chinese
命令,否则 Doxygen 生成对应语言的文档时内容会不匹配。\brief
。另外,如果你想要拓展之前已有的功能或算法,请慎重考虑是否将现有的代码完全删掉再重写。如果考虑后认为确实需要完全重写,请注意尽量维持与原先相似的日志输出,为其他成员维护、调试提供足够的信息。
下面是 Controller.h 文件对 Controller
类的部分注释:
而在 cpp 文件中写注释只是为了帮助它人读懂代码,这时请不要用 Doxygen 注释块,否则这部分内容将会出现在生成的开发者文档中。
我们统一在 XJTU-Graphics/dandelion-dev 这个仓库下协作开发。为了减少混乱,请按照如下的流程新增功能或者修复 Bug:
git commit
)main
分支并从远程下载最新的版本: rebase
到 main
分支的最新修改上: main
分支发起一次 Pull Request:(如果远程仓库之前没有同名分支,push 操作会自动创建名为 your_new_branch_name
的分支) 我们倾向于使用 rebase 操作来维持主分支的提交记录是线性的,如果不了解 Git 的 rebase 操作,请阅读Git-变基
总之,
main
分支上修改代码。git push -f
(git push --force
) 强制覆盖远程仓库。如果需要修正已经推送的错误,请新建一个提交。merge
命令,如果遇到严重冲突不知道该怎么解决,请与其他人讨论。main
分支上。请在 GitHub 上 Fork XJTU-Graphics/dandelion 项目,修改后提交 Pull Request 。Gitee 仅用作发布镜像,issue 很可能得不到回复,PR 则不会被接受。
请注意, 所有的源代码文件在提交之前都应当被格式化。
为了免去写代码时考虑格式的麻烦,我们使用 clang-format 工具格式化 src 目录下的所有代码。指定格式的 .clang-format 文件已经放置于项目根目录下,请勿随意修改。
目前 vim / VS Code / Visual Studio 等开发工具中都有集成 clang-format 的插件,可以直接安装使用;也可以手动在命令行使用
来格式化 file
这个文件。
一个拼写错误的单词可能给后期开发带来很大麻烦,我们在发现拼写错误后 一定会更正它 。推荐使用插件检查单词拼写,省得在写错后回头修改。
目前主要的代码补全方案有两种:
一些代码补全工具的补全策略中包含“自动引入头文件”的功能,例如 Clangd 会在你写下新的类型时自动包含定义了这个类型的头文件。这种策略被称为 include-what-you-use (IWYU),也就是“用什么包含什么”。
但有一些依赖库并不是遵循这个原则开发的。例如你想使用 Eigen::Vector3f
类型时,官方文档建议引入 Eigen/Core 这个头文件,而不是定义了这个类型的 Eigen/src/Core/Matrix.h 这个头文件。此时“自动引入头文件”的功能就非常烦人,甚至可能导致某些错误。提交到远程的源代码中尽量不要含有类似的不当引用,为此,我们推荐在开发过程中禁止该功能。如果你使用 Clangd 提供的 Language Server,那么在启动 clangd 时加上 --header-insertion=never
参数就可以了,推荐直接把这个参数写进 VS Code 插件的 clangd.arguments
属性里。
另一个必须注意的问题是:GLFW 和 GLAD 头文件的包含是有顺序要求的,必须先包含 GLAD 再包含 GLFW。而 clang-format 这样的格式化工具会自动重排头文件顺序,直接导致编译失败,我们已经在 .clang-format 文件中禁止了头文件重排序。或许其他 IDE 也会有类似的行为,请务必检查一下。