一个技术负责人应该知道的规范细节

前言:

作为一个技术负责人,不能只定义一个项目的技术选型,而不注意开发细节。
开发前,如果不预先定义好规范,那么项目中就会乱成一锅粥。每个人自成一派,单看每个人的模块,貌似都没啥大问题,但合在一起,就明显感觉是多个人开发的。这个时候,等发发现问题,再让某些人去改的话,一方面容易引起coder的反对,另一方面也会减少技术负责人的威望。因为一般出现这种情况,大部分原因是项目的技术负责人不合格,没有把事情提前想好,也就是所谓的没有经验。

那么,如何才能当一个合格的技术负责人呢?如何去定这些规则呢?

0、约定

1、确定业务常用词语的英文单词,项目开始的时候提前做这一步,后期开发会有意想不到的酥爽。
2、提前写好常用工具类,比如文件上传下载,转换工具类,excel操作工具类等。
3、提前约定好其他常用开发约定,比如可以按照阿里巴巴开发规范去做,idea也有对应的代码检查插件,可以让每个人都装上。
4、提前约定好代码风格,比如统一面向接口编程,service+serviceImpl等。其实这个也是阿里巴巴规范中有的。
5、约定好项目中所有的状态都用int类型,0一般不用,1代表有效,2代表无效等等
6、约定好dao层的写法,比如都用mybatis或者mybatis-plus,mapper直接用注解sql还是XML

1、git规范

现在开发对于版本控制,最多就是git了,所以以git为例,讲讲通用的规则。
一般线上分支是master,保证上线部署的必须是master分支的代码。
开发总分支是dev分支。
普通的开发分支一般是dev_业务内容,这个其实就没有那么多限制了。
1、新代码开发完成后,本地环境自测,测到通过。
2、然后合到dev后,上测试环境测试,测到通过。
3、最后code review,然后由技术负责人或者指定的一位大佬将dev的代码合到master。
4、master分支上线,上线后再次测试验证。

对于普通的开发人员:

所有关于master的操作一律禁止。
开发完成并且自测通过后,只需要将自己开发分支的代码merge到dev分支,然后将devf分支部署到测试环境,测试通过即可。
所有新分支都从dev分支拉出来,切勿从master分支拉代码。
dev分支,不允许普通的开发人员直接提交。

对于技术负责人或技术负责人指定的开发大牛

负责dev代码的codereview。
负责将dev代码合到master。(gitlab中有merge request,直接审批也可以)

2、数据库规范

数据库相关的,有些事情需要提前规范好。比如:
1、每个表中,都要带有create_time和update_time字段,时间类型。
2、每个表中,都必须有自增id字段,bigint类型。
3、具体业务中,常用单词的英文翻译,需要提前定义好。比如企业员工,有人用user,有人用staff,其实用哪个都可以,重在统一,提前要说好,比如都用user。
4、sql规范,比如查询禁止使用select *,禁止表连接等等。
5、数据的删除,都是逻辑删除,del=1代表已删除,del=0代表未删除,禁止使用delete语句物理删除数据。
6、复杂业务的库表,必须先设计,后开发。技术负责人应该把所有设计都过一遍,避免返工。

3、包结构规范

1、比如项目实体统一放在entity包下,dao层统一放在dao包下,service,controller同理。
2、比如service使用面向接口编程,统一先定义接口,再实现接口。比如userService接口和userServiceImpl实现类。
3、提前给同学们说明项目中dto,vo等对象的含义以及使用场景。
4、提前根据项目要求,提供出一些公共的util,比如文件上传下载,excel导入导出,校验等等,这个不强求,如果项目中开发人员普遍技术水平较高,可由开发同学自己编写,但需要定一套统一的util,避免重复开发。比如excel的导入导出,可能有人用easyexcel,也有人直接用poi,这样poi的包版本就有可能和easyexcel中引用的poi包版本冲突。

4、代码质量检测工具

如果代码量过大,没有人力去codereview,那就要用一些代码检测工具了。比如统一使用CheckStyle插件,也可以自定义一些检查规范。
这个也是代码的终极规范了。但不要完全依赖,只不过是一些明显的错误可以被挖出来了,一些偏业务的坑,还是需要codereview的。
个人经验,基本上看一个人写代码,看他写100行的核心代码,就知道这个人的代码的大概质量了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

skywalking(1) 基于opentracing规范的APM系统

skywalking是: 基于opentracing规范的APM系统 skywalking解决了什么问题? skywalking解决微服务架构下,多服务直接复杂的调用关系 了解dapper,分布式链路追踪系统 dapper又是谷歌论文,各公司又相继模仿。&#xff…

skywalking(2)

安装 1、安装jdk 2、安装es 3、安装skywalking(backend和ui) 应用启动时添加探针(agent) 使用 java -javaagent:/aa/bb/boot.jar -Dserver.port8081 -jar boot.jar 启动项目jar包 查看调用链,追踪等 仪表盘&#…

skywalking(3)

javaagent原理 skywalking实现代码无侵入,就是用了javaagent javaagent是java命令的一个参数,可以用于指定一个jar包 这个jar包中的MANIFEST.MF中,必须指定Premain-Class项 Premain-Class指定的那个类,必须实现premain()方法 当…

skywalking(4)

Byte Buddy库 统计方法调用时长 1、增强字节码 2、拦截器拦截 类似于spring的aop,只不过skywalking不能用aop,所以用Byte Buddy技术代替 Open Trace 整个trace调用,是由多个span组成的有向无环图(就是调用关系图)。…

kubernetes(k8s)

应用部署演进过程 我们从上图可以看到,应用越来越看重应用本身了,慢慢的不受物理机的差异,不受操作系统的差异,开发者可以花更多精力去到应用本身。 k8s概念 简单理解,k8s就是传统的云平台上的linux。 kubernetes是…

jenkins+k8s实现持续集成

持续集成(CI) 集成是指开发人员将代码提交到git或svn 持续集成是指让开发人员持续提交代码,写一点就提交一点,这样就会更早的发现代码差异 每次集成,都可以通过自动化的构建来验证 自动化构建包括:编译&am…

为什么要用Elasticsearch

概念 Elasticsearch 简称ES,是一个分布式全文检索引擎。 比如github的代码检索就是用了ES,百度也有用ES。 由于Lucene的api相对比较复杂,所以ES其实是对Lucene的封装简化,并且提供了一套比较简单的api文档。 es官网 使用场景 主…

[设计模式] ------ 建造者模式(对比模板模式)

建造者模式 建造者模式,是为了构建一类具有相同执行顺序的但实现不一样,最后产生不一样的东西的效果。 举个例子,比如写作文。 每次写作文,我们大致有写标题,写开头,写内容,写结尾这些步骤。…

[设计模式] ------ 观察者模式和他的升级版发布订阅模式

概念 观察者模式,原理很简单,把A类的子类分别注入到B类中,通过用B类调用方法,循环调用A类的方法,就是所谓观察者模式 伪代码如下,最快的速度理解观察者模式: 接口 A{// 观察者接口notify(); …

[设计模式] ------ 工厂方法模式

工厂方法模式 手机厂造手机,肥皂厂造肥皂,药品厂造药品。 假设有一大类对象A1,A2,A3,A4…他们都有一个共同的父类A A1可以想成是手机,A2可以想成肥皂… (下面例子的A1Factory就是手机厂,A2Factory就是肥皂厂&#x…

[设计模式] ------ 抽象工厂模式

抽象工厂模式 抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了。 其实就是相当于将创建哪个工厂的权利再次放给调用端。 调用端在调用的时候,指定用哪个工厂…

[设计模式] ------ 对比总结:简单工厂模式、工厂方法模式、抽象工厂模式

三个概念: 简单工厂模式:就是一个简单的工厂类,根据不同的入参类型,返回不同的父类引用的子类对象。 工厂方法模式:就是将生成哪个子类对象的过程,延迟到工厂子类实现,工厂父类只定义接口。 抽…

[设计模式] ------ 原型模式(浅拷贝和深拷贝)

原型模式 原型模式就是使用复制对象,创建出新的对象,并且不需要知道创建的细节(比如类的属性的赋值等等)。 基本使用(浅拷贝) 常见的就是使用Object的clone方法。需要让类实现Cloneable并重写clone方法&…

机器学习笔记(了解)

1、概念 机器学习,就是通过历史数据找出一定的规律,并使用这些规律对将来不确定的场景进行决策。 机器学习VS数据分析 数据分析,是人为的从历史交易数据中找规律,从而决策。 机器学习,是机器使用算法,从…

机器学习笔记(常见算法)

C4.5 属于决策树算法,既可以解决分类问题,也可以解决回归问题,属于有监督算法。 现在基本不用这个算法了。 K-Means 属于聚类算法,属于无监督算法 SVM(*) 支持向量机。 曾经一度认为是分类效果最好的算…

赶紧看一下mysql8.0版本的新特性,你的数据库是不是该升级了

这里写目录标题前言mysql8.0的新特性1、账户安全2、优化器索引2.1、隐藏索引(invisible)2.2、降序索引2.3、函数索引3、SQL语句增强4、新增数据分析函数5、InnoDB增强5.1、优化了一些元数据文件5.2、将系统表mysql和数据字典表,全部改为InnoD…

ThreadLocal不仅要应付面试,更要真的理解,真的会用

前言 记得我几年前第一次面试的时候,就是被问了这个,记得面试官直接就让我说说ThreadLocal的实现原理以及平时有没有见过哪些地方用到了。 我当时初入职场,还是一个大菜鸟,所以直接就被干蒙了,至今还记忆犹新。 闲来…

秒杀业务的基础点

秒杀的是一个很常见的业务了。就是在某个时刻,让大量用户抢购少量的优惠的商品,从而达到商品曝光和电商网站的曝光,增大用户流量,从而提升整体销售额。 比如今年疫情下,各大电商网站,就针对口罩开展了秒杀…

随想,产品思维和开发思维

有时候,产品思维和开发思维,由于出发点的不同,会产生较大的分歧。 作为一个开发,不仅要有自己的思维,也要了解产品的思维,这样才能在和产品的撕逼的战斗中所向披靡,百战百胜。 举个例子&#x…

Base64编码的原理与常用实现

这篇主要是为了后面好介绍加密算法,做的铺垫。 这个是基础,什么是一个程序员的涵养,这些基础就是涵养。 平时可能用不到,但必须得会。 如果连这个原理都说不上来,就别玩王者荣耀绝地求生英雄联盟和平精英了&#xff0c…