1. 前端代码贡献规范
1.1 仓库地址
https://github.com/comunion-io/comunion-front
1.2 代码结构
packages
|- components # 通用组件管理
|- docs # 文档目录,基于 vitepress
|- esbuild-plugin-svg-to-vue3 # svg 生成 vue3 组件的插件
|- generator # 代码生成辅助工具
|- hooks # 通用 vue hooks
|- i8n-tools # 翻译辅助工具
|- icons # 图标管理
|- utils # 通用工具库管理
|- web # 前端页面
1.3 如何运行项目
1.拉取代码
git clone git@github.com:comunion-io/v5-front.git
2.安装依赖
pnpm
3.运行 web 项目
pnpm dev
// 如果其它包不改,只关心 web 包,可以运行
pnpm dev:web
1.4 代码规范
《参考前端文档》
1.5 如何贡献代码
1.5.1 对于团队开发成员
- clone 代码;
- git checkout -b feat/xxx 根据代码修改内容切换一个新分支;
- 修改代码并提交 git add -am 'feat: xxx';
- git push 推送代码;
- 创建新的 PR并通知代码管理员。
1.5.2 对于非开发成员
- fork 仓库;
- git checkout -b fix/xxx 根据代码修改内容切换一个新分支;
- 修改代码并提交 git add -am 'fix: xxx' ;
- git push 推送代码;
- 从你的代码库提交一个 PR。
1.6 自测
- 代码自测后(包括: 逻辑功能, 界面UI大小写等)commit 提交;
- 提交后提出 PR 后, 催促reviewer 尽快review, merge 后, 广播截图到大群, 启动回归测试。
2. 后端代码贡献规范
2.1 仓库地址
https://github.com/comunion-io/comunion-backend
2.2 代码结构
├── config (Config)
│ ├── local.toml
├── logs (Log)
├── pkg (Source codes)
│ ├── invoker
│ ├── model (DB models)
│ │ ├── dto
│ │ ├── mysql
│ │ └── transport
│ └── router (API routers)
├── .gitignore
├── go.mod (modules)
├── go.sum
├── main.go (main)
├── README.md
2.3 如何运行项目
run docker-compose
docker-compose -f docker-compose.yml up -d
init database
./hack/run database init
copy the config file
cp ./hack/config/config.toml ./hack/config/config.dev.toml
running the app
./hack/run start
2.4 代码规范
《参考后端文档 1》
《参考后端文档 2》
行长约定: 一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅;
package名字: 保持 package 的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,尽量和标准库不要冲突, 在函数外部申明必须使用 var,不要采用:=,容易踩到变量的作用域的问题;
自定义类型的 string 循环问题: 如果自定义的类型定义了 String 方法,那么在打印的时候会产生隐藏的一些 bug;
避免返回命名的参数:如果你的函数很短小,少于10行代码,那么可以使用,不然请直接使用类型,因为如果使用命名变量很容易引起隐藏的 bug;
错误处理:错误处理的原则就是不能丢弃任何有返回 err 的调用,不要采用_丢弃,必须全部处理。接收到错误,要么返回 err,要么实在不行就 panic,或者使用 log 记录下来;
长句子打印或者调用,使用参数进行格式化分行: 我们在调用 fmt.Sprint 或者 log.Sprint 之类的函数时,有时候会遇到很长的句子,我们需要在参数调用处进行多行分割;
注意闭包的调用: 在循环中调用函数或者 goroutine 方法,一定要采用显示的变量调用,不要再闭包函数里面调用循环的参数;
在逻辑处理中禁用 panic: 在 main 包中只有当实在不可运行的情况采用panic,例如文件无法打开,数据库无法连接导致程序无法。正常运行,但是对于其他的 package 对外的接口不能有 panic,只能在包内采用;
强烈建议在 main 包中使用 log.Fatal 来记录错误,这样就可以由 log 来结束程序;
注释规范: 注释可以帮我们很好的完成文档的工作,写得好的注释可以方便我们以后的维护;
bug 注释: 针对代码中出现的 bug,可以采用如下教程使用特殊的注释,在 godocs 可以做到注释高亮;
变量申明: 变量名采用驼峰标准,不要使用_来命名变量名,多个变量申明放在一起。
2.5 如何贡献代码
- clone 代码;
- git checkout -b feat/xxx 根据代码修改内容切换一个新分支;
- 修改代码并提交 git add -am 'feat: xxx';
- git push 推送代码;
- 创建新的 PR 并通知代码管理员。
2.6 自测
- 代码能 run;
- 添加接口,字段务必与前端核对, 在 yapi 上自测通过,字段没有缺失。
3. 合约代码贡献规范
3.1 仓库
https://github.com/comunion-io/cos-contract-com
3.2 代码结构
|- contracts # 合约
|- migrations # 部署文件
|- test # 测试文件
|- contractAddress.json # 部署后提供给前端生成合约实例的配置
3.3 如何运行项目
install truffle
npm install -g truffle
add a sol in contract dir
add it to 2_deploy_contract
const Startup = artifacts.require('Startup');
module.exports = (deployer) => {
deployer.deploy(Startup);
};
migrate contract to development
yarn dev
migrate contract to goerli
yarn goerli
how to test your contract
write your test sol in test dir
the test function name must start with "test"
migrate your contract
run
truffle test
3.4 如何创建本地运行环境
use npm install remixed tools
npm install -g @remix-project/remixd
open remixed page ( http://remix.ethereum.org)
start
remixed -s [your source code list] --remix-ide http://remix.ethereum.org
open "https://remix.ethereum.org/#optimize=true&runs=200"
click home -> file -> connect to local host
after loading, happy coding
if you installed ganache, you can use ganache
npm install -g ganache-cli
use ganache, run ganache-cli in your terminal
ganache-cli
if you installed ganache by GUI, you can start it directly
after deployed contract, please update contract address in contractAddress.json file
3.5 代码规范
代码布局:
每行使用4个空格缩进;
禁止tab 和 空格混合使用;
两个合约在同一个文件增加两个空行;
在代码的开始引入声明;
import "owned";
contract A {
...}
contract B is owned {
...}
括号, 中括号, 花括号 之后避免使用空格;
赋值符前后避免多个空格;
合约、库。函数、结构体的花括号使用方法:
○ 左花括号和声明同一行;
○ 右括号和左括号声明保持相同缩进位置;
○ 左括号后应回车。
if、while、for条件语句之间必须空行;
对于简短函数声明,建议将函数体的左括号和函数名放在同一行;
右括号和函数声明保持相同的缩进;
左括号和函数名之间要增加一个空格;
对于数组变量声明,类型和数组中括号直接不能有空格;
合约应该使用CapWords规范命名(首字母大写);
事件应该使用CapWords规范命名(首字母大写)。
3.6 如何贡献代码
- clone 代码;
- git checkout -b feat/xxx 根据代码修改内容切换一个新分支;
- 修改代码并提交 git add -am 'feat: xxx';
- git push 推送代码;
- 创建新的 PR并通知代码管理员。
3.7 自测
- 所写合约能全在测试网络跑通, 并且可以再测试网络成功上链;
- 缩写合约, 如果是前端调用, 被调函数务必列出一份参数添加在注释中。