最近公司新起了个项目,主管让我带新人做做,新人之前做 php ,没有接触过 go 。 我将之前的项目代码以及文档都分享给了他,并给他简单将讲解了项目的架构以及流程。 我给他起好了模板给他开发,结果第二天发现他直接把代码结构直接咔嚓一顿给改了(我起的 代码架构我们已经沿用的两个项目了,其他人也都这么搞的)。然后我就给他说了一下,然后他就给我一顿争论, 还提了他的这个思想是上家主管说的...我那叫一个气的。不过还好本人脾气还算好,我直接又给他理了一下我们的代码架构, 让他重新照着开发一遍,1 是为了方便我们团队合作开发,2 是等你有了一定的基础和经验你再去构思自己的结构布局,哪有没 学会走就要去跑的呀。 今天又去看了下他复写的代码,我是真不知道该怎么跟他说了
func getParam(c *gin.Context) *models.BaseParams {
param := models.BaseParams{}
_ = c.ShouldBindBodyWith(¶m, binding.JSON)
param.ClientIp = c.ClientIP()
param.RegisterTime = c.GetInt64(keys.RegisterTime)
return ¶m
}
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(¶m, 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
}
真不知道跟怎么跟他说了...是不是我太钻牛角尖了?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.