如何提高后端开发效率:从30小时到30分钟的编码速度提升技巧
序言“事”

网易杭州研究院·何东宇
今天我们不谈高并发,分布式,或者任何高级的技术话题。我们将充当一名普通的后端开发工程师,完成一个由产品衍生出来的简单且常用的需求。
我想问:如果让我们的后端工程师实现下面的需求,你们需要多长时间?
先透露一下类似下面的功能:
如果是你,估计需要30*10次=5小时;
如果是我的话,网上发布只需要30分钟。
我是否将你的编码速度提高了 10 倍?
如果您需要一周的时间来开发以下功能
嗯,好像时间有点长,所以是100次
(请使用您掌握的任何技术和工具尽快开发并保证代码的通用性和持续可维护性)
=====华丽的分割线需求介绍开始======
给出一个简单的需求场景
创建模拟学校功能。很多时候我们的开发功能类似于下面的场景,关系数据库开发功能
接口功能:需要各种验证、各种表格、各种外键相关功能等。
学校名单
编辑学校
B级名单
C 教师名单
详情页省略。
D类关联教师外键列表
接口函数:客户端专门调用的http接口
1 学校查询接口
2 获取班级列表
3 获取教师名单
=====华丽分割线需求介绍完成======
第一幕“器具”
好了,不假装了!这个工具开发速度非常快,推荐给开发Java后端的朋友:
只要花一些时间使用这个工具,你就可以实现前面提到的10倍的开发效率!
您需要掌握的技能
第二幕工具简介
第一步构建youyaMvc
您可以参考项目搭建教程自行搭建。项目中有搭建教程。假设你已经构建好了youyaMvc,那么你就可以进入使用该工具的第二阶段了,因为该工具编写的代码是基于youyaMvc的结构的。
第二步使用youyajfx
下载解压后的目录如下。这是一款基于javaFX技术开发的客户端软件。双击窗口启动 .vbs。
1. 登录
首次点击免费注册,然后重新登录。
2.连接Mysql数据库。如果配置正确,该软件将打开您的本地数据库。左栏会有很多数据库。目前仅支持mysql。
3.打开你的数据库,点击左侧的数据库,右侧会显示表结构,选择代码保存目录和项目编码。
4. 确保每个表都已有自增主键或唯一键。这是必要的。主键名称可以自定义。当前版本必须有自增主键或唯一键。为每个表创建一个自增主键并不是一件坏事。
`id`bigint(20)NOTNULLAUTO_INCRMENTCOMMENT'学校主键'。
5.开始愉快地编码
6. 恭喜!至此,你已经得到了大部分代码,但是这段代码只有基本的功能。我们还是需要根据自己的业务来定制功能。
7. 在线编程
点击学校进入工作区,您可以根据需要灵活定制功能。表单验证、查询条件、表单元素类型等都在这个接口中。
最后保存项目。
8. 返回数据库界面并重新编码,以便您的函数生效。
9、很多人一定有疑问:函数中展示的外键字段如何处理?这是大家比较关心的。下面我就具体给大家介绍一下如何配置外键:
首先,编辑表字段。不要点击此处生成的代码。它适用于在线编辑。我们有客户端软件,所以不需要它。
我们以班级表为例。班级表有一个外键 school_id。
点击编辑
然后进入学校工作区
这样就会自动完成像下面这样的外键下拉。当然,您也可以在上面选择多个查询条件。
如何处理多对多场景?只需选择如下:
至此,该工具的大部分使用方法已经介绍完毕。外键的配置确实有点麻烦。相信以后你将不再需要配置外键,软件会自动帮你完成配置。更多功能,请自行尝试!
第三幕结束
还有很多智能功能需要添加,我会持续更新。
对于刚出校门的开发者来说,这样的工具可能不太适合成长;但对于一个有多年工作经验的开发者来说,这个工具就等于解决了所有人的问题,把我们从繁重的重复劳动中解放出来。解放出来有更多的精力投入到更具挑战性的工作中,同时也大大加快了产品经理需求的实现速度。
打开生成的代码,不难发现已经为我们生成了很多可用的数据库操作接口。针对数据库中频繁增删字段以适应需求变化的场景,方便地实现代码重构也很重要。生成的代码可以很方便的进行二次开发,但是一般的管理后台功能就差不多够用了。只要不破坏页面对编辑器的只读属性,你就可以随时享受自动生成代码带来的便利和新鲜感。功能。
表结构:
创建表
创建表`学校`(
`id`bigint(20)NOTNULLAUTO_INCRMENTCOMMENT'学校主键',
`school_name`varchar(50)DEFAULT''COMMENT'学校名称',
`head_img`varchar(50)DEFAULT''COMMENT'学校头像',
`class_count`int(4)DEFAULT'0'COMMENT'类数',
`adress`textCOMMENT'学校地址',
`school_type`tinyint(2)DEFAULT'0'COMMENT'学校类型',
`open`char(1)DEFAULT'0'COMMENT'是否开学',
`create_time`datetimeDEFAULTNULLCOMMENT'创建时间',
`school_desc`longtextCOMMENT'学校描述',
`update_time`datetimeDEFAULTNULLCOMMENT'更新时间',
主键(`id`),
UNIQUEKEY`uniq_id`(`id`),
UNIQUEKEY`uniq_学校名称`(`学校名称`),
UNIQUEKEY`u_c`(`class_count`)
)ENGINE=InnoDBAUTO_INCRMENT=4DEFAULTCHARSET=utf8COMMENT='学校'
创建表
可创建`类`(
`id`bigint(20)NOTNULLAUTO_INCRMENTCOMMENT'类主键',
`class_name`varchar(50)DEFAULT''COMMENT'类名',
`student_count`int(4)DEFAULT'0'COMMENT'班级学生人数',
`school_id`bigint(20)DEFAULT'0'COMMENT'schoolid',
主键(`id`),
UNIQUEKEY`uniq_id`(`id`),
KEY`id`(`id`)
)ENGINE=InnoDBAUTO_INCRMENT=4DEFAULTCHARSET=utf8COMMENT='类'
创建表
创建表`老师`(
`id`bigint(20)NOTNULLAUTO_INCRMENTCOMMENT'教师主键',
`teacher_name`varchar(50)DEFAULT''COMMENT'老师姓名',
`age`int(4)DEFAULT'0'COMMENT'老师的年龄',
主键(`id`),
UNIQUEKEY`uniq_id`(`id`),
UNIQUEKEY`u_t`(`老师姓名`)
)ENGINE=InnoDBAUTO_INCRMENT=3DEFAULTCHARSET=utf8COMMENT='老师'
创建表
创建表`class_teacher`(
`id`bigint(20)NOTNULLAUTO_INCRMENTCOMMENT'班级关联教师表主键',
`class_id`bigint(20)DEFAULT'0'COMMENT'类表主键',
`teacher_id`bigint(20)DEFAULT'0'COMMENT'教师表主键',
主键(`id`),
UNIQUEKEY`uniq_id`(`id`),
UNIQUEKEY`id`(`class_id`,`teacher_id`)
)ENGINE=InnoDBAUTO_INCRMENT=3DEFAULTCHARSET=utf8COMMENT='班级关联教师'
·EDN·