cover

  • 背景:
    • 现在家园工作室后端有一部分是用golang进行编写,基本是python带着golang进行混合开发,python的规范已经有学长进行整理,参考python规范详情,作为golang在家园的推广者,进行golang的代码规范整理。
  • 参考:
  • 详情:

    • 作为工作室的项目,先在$GOPATH/src下建立起一个ncuhome.com的目录,工作室的项目都放在这个目录下
    • $GOPATH可以用go env进行查看
    • 工作室用的golang版本>=1.10
    • 使用dep组织项目
    • 推荐的项目目录结构

      |——README.md      //readme文件(必须得有,包括部署,开发环境的搭建)
      |——doc            //项目文档(可选)
      |——main.go        //项目入口文件
      |——lib            //辅助库函数
      |——models         //module文件,包括interface
      |——configs        //配置文件
      |——views          //视图函数,逻辑部分
      |——tests          //测试文件
      
      • 一些目录结构的注意点:
        • 可以添加docker相关文件
        • 推荐文件夹下放一个init.go, 放置func init()和其他的一些初始化函数
        • 由于golang可以交叉编译,所以在windows下的编译linux为:
          • 在cmder/powershell/cmd中执行set GOOS=linux, 在bash下执行export GOOS=linux
          • 查看go env确认GOOS=linux
          • 执行编译
    • 包名和文件名尽量小写

    • 对于代码退出,一般在建表推荐加一个CreateTable的方法,同步的时候采用log.Fatalln来检验数据库是否可以连接,其余时候不退出程序
    • 线上代码不使用panic, 调试可用
    • 工具推荐使用vscode + vscode的golang插件, 插件安装需要翻墙, 不推荐goland
    • 上传代码的时候保证golint通过,没有警告和报错, 不然code-review一律打回, golint使用指南
    • 命名不允许使用下划线,使用camel方式
    • 区分private和public方法, private方法命名形式getHookFunction, public方法命名形式GetProjectConfig
    • 不允许出现拼音的命名
    • 测试文件命名xxxx_test.go, 测试函数命名func Testxxxx, 测试推荐只写功能测试,函数测试可以不用编写
    • 一行的长度不宜过长, 推荐不超过120
    • 其余参照中文guide

扫描二维码,分享此文章

wujintao's Picture
wujintao