Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

规划 #1

Open
wklken opened this issue Nov 1, 2021 · 3 comments
Open

规划 #1

wklken opened this issue Nov 1, 2021 · 3 comments

Comments

@wklken
Copy link
Collaborator

wklken commented Nov 1, 2021

目标

复用优秀的模块, 避免出现代码拷贝及定制, 广义上通用的库
避免项目中的代码拷贝行为

一定是实际可用, 并且可以复用的pkg

避免出现:

  • 放入interface声明却没有具体实现(待讨论)
  • pkg是某个特定产品共用的
  • pkg并不通用
  • pkg代码中有定制逻辑

一定不能出现:

  • 代码拷贝的某些库的
  • 代码拷贝某些库的internal模块(因为引用不到)
  • 代码非原创有证书问题

某些产品特定逻辑, 后续考虑

  1. 通过 xxx-kit维护
  2. 在本项目通过类似 contrib/xxxx维护(暂不考虑)

目录规划

gopkg
    |- stringx      字符串处理通用, 例如stringToBytes/GetMD5/Truncate/Random (add bytex?)
    |- bytex ???
    |- errorx        error wrap的通用封装模块
    |- timex
    |- collection/set      string_set.go/int64_set.go等
    |- middleware         web middleware
            |- std               no framework releated
            |- gin
            |- chi
    |- sd/consul            服务发现相关
            |- etcd

注意:

  • 慎用 util/utils/helpers等目录, 未来变成垃圾桶的概率太高(暂时禁用)

其他待定:

  • log or logger, 目前不是很好统一, 差异性较大 (zap/logrus with hooks)
  • database, sqlx/gorm等等
@wklken
Copy link
Collaborator Author

wklken commented Nov 5, 2021

PR 规范:

规范很重要, 避免未来变成垃圾桶

  1. 目录下必须有 README.md, 详细介绍模块用法, 并且在项目根路径 README.md目录增加入口
  2. 代码必须通过golangci-lint扫描
  3. 代码必须包含文档, 符合godoc要求; godoc可以看到所有详情
  4. 代码必须包含单元测试(建议基于ginkgo, 但不强制), 核心链路/核心函数覆盖率必须大于 50%; 工具类函数覆盖率需大于 90%;

合入流程

  1. proposal 建issue(不管是否代码已开发完) 通过issue先收集讨论
  2. 开发
  3. PR (会自动走扫描), 注意文件头带正式, 同步修改根路径readme/readme_en加入口;
  4. Review (需要两人以上, 比较大的模块需要讨论)
  5. 合并
  6. 打tag, 正常增加版本号中间位 1.x.0
  7. 内部项目切换依赖包为本仓库对应版本

go版本: >=1.16; 注意 涉及新版本新语法特性(例如泛型), 需谨慎


@wklken wklken changed the title 目录规划 规划 Nov 5, 2021
@wklken
Copy link
Collaborator Author

wklken commented Nov 5, 2021

init the project

  • README.md
  • gitignore
  • Makefile
  • golangci-lint.yaml
  • doc check?
  • errorx as the first example (doc/readme.md/unittest)\
  • github actions
  • pre-commit
  • pkg: cache/memory

@wklken
Copy link
Collaborator Author

wklken commented Dec 20, 2021

pkg/conv: #14

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant