V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ryalu
V2EX  ›  Go 编程语言

团队开发中如何看待或者与成员沟通代码质量等问题

  •  
  •   ryalu · 2021-12-22 16:03:14 +08:00 · 2428 次点击
    这是一个创建于 1066 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近公司新起了个项目,主管让我带新人做做,新人之前做 php ,没有接触过 go 。 我将之前的项目代码以及文档都分享给了他,并给他简单将讲解了项目的架构以及流程。 我给他起好了模板给他开发,结果第二天发现他直接把代码结构直接咔嚓一顿给改了(我起的 代码架构我们已经沿用的两个项目了,其他人也都这么搞的)。然后我就给他说了一下,然后他就给我一顿争论, 还提了他的这个思想是上家主管说的...我那叫一个气的。不过还好本人脾气还算好,我直接又给他理了一下我们的代码架构, 让他重新照着开发一遍,1 是为了方便我们团队合作开发,2 是等你有了一定的基础和经验你再去构思自己的结构布局,哪有没 学会走就要去跑的呀。 今天又去看了下他复写的代码,我是真不知道该怎么跟他说了

    func getParam(c *gin.Context) *models.BaseParams {
    param := models.BaseParams{}
    _ = c.ShouldBindBodyWith(&param, binding.JSON)
    param.ClientIp = c.ClientIP()
    param.RegisterTime = c.GetInt64(keys.RegisterTime)
    return &param
    }
    
    func UserInitialize(c *gin.Context) {
    Info := new(struct {
    models.User
    models.UserInfo
    })
    _ = c.ShouldBindBodyWith(&Info, binding.JSON)
    ctx := c.Request.Context()
    
    param := getParam(c)
    
    _ = c.ShouldBindBodyWith(&param, binding.JSON)
    
    if err := srv.UserInitialize(ctx, Info, param); err != nil {
    utils.FailJsonTest(c, -1, err.Error())
    return
    }
    
    utils.SuccessJsonTest(c, 0, ecode.OK.Message(), Info)
    return
    }
    
    
    func (s *Service) UserCreate(ctx context.Context, Info *struct {
    models.User
    models.UserInfo
    }, params *models.BaseParams) error {
    
    err := s.dao.UserCreate(ctx, Info)
    
    ...
    }
    
    func (d *Dao) UserCreate(ctx context.Context, Info *struct {
    models.User
    models.UserInfo
    }) error {
            //开启事务
            tx := d.dbForMatch.Begin()
            //回滚事务
            defer tx.Rollback()
            //创建用户表
            err := d.dbForMatch.Create(&Info.User).Error
            if err != nil {
            return err
            }
            //创建用户信息表
            Info.UserInfo.CustomerId = Info.User.CustomerId
            err = d.CreateUserInfo(&Info.UserInfo)
            if err != nil {
                return err
            }
            //提交事务
            tx.Commit()
            return nil
        }
    

    真不知道跟怎么跟他说了...是不是我太钻牛角尖了?

    11 条回复    2021-12-29 14:56:23 +08:00
    LoNeFong
        1
    LoNeFong  
       2021-12-22 16:22:23 +08:00   ❤️ 1
    尊重, 祝福
    LoNeFong
        2
    LoNeFong  
       2021-12-22 16:31:00 +08:00
    告诉他不用分目录, 分结构了, 直接一个*gin.Context 传到数据库 岂不美滋滋(逃
    rimutuyuan
        3
    rimutuyuan  
       2021-12-22 16:47:37 +08:00
    server service dao 好像没啥问题。。。这是你们的模板还是他改成这样的,不过方便维护肯定是按照模板来。
    nicebird
        4
    nicebird  
       2021-12-22 17:41:49 +08:00
    和上司沟通下,这种不遵守规范的,死三次可以开了。
    wyhooo
        5
    wyhooo  
       2021-12-22 17:47:55 +08:00
    错在招了个写 PHP 的(逃
    walkerliu
        6
    walkerliu  
       2021-12-22 17:52:39 +08:00
    最后的 code segment , 事务控制有问题吧
    missdeer
        7
    missdeer  
       2021-12-22 17:52:48 +08:00
    新人你还客气啥,就怕是老油条还顽固不化
    qq1340691923
        8
    qq1340691923  
       2021-12-22 18:05:24 +08:00
    这个代码不是挺好的吗...
    siguretto
        9
    siguretto  
       2021-12-22 18:13:02 +08:00
    挺好的,只是可能都塞在一个文件里了
    iQXQZX
        10
    iQXQZX  
       2021-12-23 10:14:11 +08:00
    这个参数 struct 就堆在这,各个地方都重复一遍?哪有这么写的,不应该统一定义在外边吗。上面还有人说没啥问题。。。
    liaohongxing
        11
    liaohongxing  
       2021-12-29 14:56:23 +08:00
    语言都不对 ,能开始写算不错了 。大部分像看天书一样坐着不动。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2189 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:03 · PVG 08:03 · LAX 16:03 · JFK 19:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.