前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一篇文章教会你如何像大神一样写代码

一篇文章教会你如何像大神一样写代码

作者头像
陌无崖
发布2019-08-30 16:31:49
8210
发布2019-08-30 16:31:49
举报

不忘初心,砥砺前行

作者 | 陌无崖

转载请联系授权

导语

当我们还是小白,我们在写代码的时候,总会为了省事,就什么代码都写在一个文件里,如果一个文件不够,分两个,没有一个很好的规范性,最终的结果可能是这样的

在一个包中充斥着各种文件,过了一段时间,如果想要看看这里面的代码,变得无从下手。今天我就给大家说说在用Golang语言写代码时该如何正确的进行分类。当然其它语言部分适用。

分包前我们应该懂什么

一、配置(conf)

这一层是对我们的基础配置文件的一个存储,比如我们的存储库mysql,需要设置mysql连接地址,最大连接数、密码、数据库名字等,我们将这些转换成配置文件中的变量。我们需要使用的时候,只需要加载到一个实体中就可以了,为什么要这样做,在大型程序中,我们的代码一旦上线后如果要更换数据库,或者添加数据库,最好的做法就是不用修改我们的运行代码,我们只需要从服务器中找到相应的配置文件进行修改就可以了,这样代码运行时会自动读取到新的连接。而相反,如果我们直接将这些写进代码中,想想一旦你要修改,你需要修改的不仅仅是一个文件,或许很多文件中相关的代码都要进行修改。因此这一层我们叫它基础配置层。这一层文件经常用到的就是json或者yml格式的文件,下面是一个yml格式的例子

二、实例化配置(config)

上面说到了我们的一个conf包存放配置文件,那么对这些配置文件进行实例化便需要config这个包。在config包中我们对配置文件进行一个接口的设置和结构体的设置,比如mysql中

用这个结构体实现接口中的方法。同时我们可以在这个包中添加一个初始化我们实体的一个函数,即将配置文件中的数据存储到相应的结构体中。

三、模型层(model)

这里面是我们实体类的数据库操作层,这一层将实例化一个模型和服务接口,然后暴露给业务逻辑层进行使用,因此我们同样需要定义接口和结构体,比如说在一个用户服务中,有一个需求是根据姓名进行登录,我们可以先定义接口如下:

然后定义一个结构体服务模型去实现里面的方法

这里需要注意的是在Golang中如果结构体名字首字母小写代表私有类,里面的属性不能直接调用,因此我们可以定义一个获取的方法。在这个方法中细心的小伙伴会看出来我返回的是一个接口,这样做的目的一方面保护我们实体,同时可以以后方便实现多态。

那么如果我们想要使用这里面的方法,就必须初始化我们的服务模型,然后就可以用获取服务的函数获取到相应的模型服务。

业务逻辑层(handler)

在这一层中的代码主要是暴露我们的代码在外部,当然在实际应用中我们是将这些服务进行了服务注册,这一层我们将会使用到model层中服务,这里以RPC进行讲解,我们都知道在使用rpc远程调用之前,我们需要将我们的服务代码进行注册,因此可以将这部分写进这个包如,当由外部请求到达时首先便会到这个函数实现业务逻辑,然后进行数据的返回。

这样我们的基础业务便写完了,但是对于网络请求中如何将请求正确映射到我们的后台服务呢?

web层接入

如果你看过我之前的micro系列的文章,你会很轻松的解决这个问题,在micro中提供了web层的处理,只要开启一个Web服务就可以达到目的了。如果不会的,可以看看我之前的文章,首先需要创建一个服务

注册接口

handler实现

End:现在找一个业务进行联系吧,源码请前往我的github上

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 golang技术杂文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导语
  • 分包前我们应该懂什么
    • 一、配置(conf)
      • 二、实例化配置(config)
        • 三、模型层(model)
          • 业务逻辑层(handler)
          • web层接入
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档