CodeRobot用“模板”简化繁复的开发工作

背景

最近,在工作中每天写需要写很多业务代码,感觉套路都一样,基本都是“add”、“edit”、“del”、“query”、“list”的逻辑,非常的繁复,就像鸡肋,食之无味,但又不可弃之,代码总是需要码农们一块块砌到墙上,具体写代码中,不仅费时而且有时会由于个人状态原因少写个这那的导致返工调试。受够了这种折磨,我决定能否进一步抽象业务代码,只写每种业务代码必须写的部分,把共性的东西交给机器来写,聚焦代码中真正的价值点。一个概念在我大脑中冒出-------“代码模板”。我要干的事情就像protobuf那样,写好数据结构,然后用工具生成代码,也像 gsoap 、thrift,又或是前端框架的脚手架工具那样。只不过,我想能做一个通用的“代码模板”工具,来适用于业务代码的开发中。

实践方案

在这里插入图片描述
基本思路是:用mako定义代码模板,用json定义模板的参数数据,一键执行用参数数据渲染模板生成代码,另外,支持一键将生成的代码安装到项目工程目录,也可一键从项目工程中卸载。

实现说明

工具代码目录

在这里插入图片描述
result – 存放结果
template – 存放定义的代码模板
conf.json – 参数配置数据
generate-code.py – 执行生成代码在result目录
install.py – 执行将生成代码拷贝到项目工程的地址
uninstall.py – 执行将从项目工程中删除生成的代码

json文件配置的范式

{
	"global":{//全局的参数区(必选), 公共的参数可以防止这个区域
		"全局参数1":"test",
		"全局参数2":"Paper",
		...
	},
	"模块1":{//一个代码模块参数区(可选),对应template下的一个代码模板目录
		"dst_path":"安装的目标路径",
		"参数1": "test",
		"参数2": [],
		"参数3":  {},
		....	
	},
	"模块2":{//一个代码模块参数区(可选),对应template下的一个代码模板目录
		"dst_path":"安装的目标路径",
		"参数1": "test",
		"参数2": [],
		"参数3":  {},
		....
	}
	...
}
  • global参数区
    这个里面定义的参数,可以在所有代码模块的模板内使用,用法为${g[”参数名“]}
  • 代码模块参数区
    这里面定义的参数,只能在该模块代码的模板内使用,用法${params[“参数名”]},一个代码模块对应template目录下的一个代码模块目录
  • 参数
    参数可以理解为一个变量,可以在代码模板内使用,称之为锚,在模板渲染生成代码时实际就是将这些锚替换为json文件中定义的值,参数的类型完全按照json格式,可以是字符串,整数、object、列表等等。
  • dst_path参数
    每个代码模块参数区都有一个dst_path参数,是该模块的代码可以拷贝到项目的具体目录,是安装生成代码时需要的。
  • 文件名渲染
    在文件名渲染时,由于文件名不能含有双引号,所以就不能用 $ {g[ “参数名" ],我们特殊处理,用${g[参数名]实现。

使用方式

  1. 在template目录内定义代码模板,需要学习mako模板引擎的语法
  2. 在conf.json内写参数定义
  3. 运行generate-code.py执行代码的生成,生成代码在result目录
  4. 运行install.py执行代码安装到项目中
  5. 运行uninstall.py执行代码从项目中卸载

总结

通过个人在使用中的感受,发现该工具能够很好的提高开发效率。针对业务代码,首先要先抽象出模板,一般相似的业务只有 数据库表的数据格式不一样,写起来代码都是一个套路,所以用代码模板工具可以提高开发效率。该工具具有很好的通用性,请发挥想象力,就能在其他开发的工作中起到增效的效果。
这里只是简单介绍,也许大家并没有看懂怎么用,需要的请移步我的码云仓库,下载代码,运行下例子,能更好的理解。

码云项目地址:https://gitee.com/z1717/CodeRobot

注:转载请附上原链接和作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值