让代码自己写会儿代码【开源】
前言
大多数人的工作都是有regular的。
one of the tasks 程序员宝宝do就是要把这份规律变成一个program || application,从而release somebody的sometime。
能否找到这份regular决定了工作能否自动化的key。
同样的,程序员宝宝们自己的工作——coding——也是有regular的。
今天的目的就是为了release程序员宝宝们的sometime。
life is precious,and love is more precious.别把时间都花在重复的劳动上。
出来抽根烟,看看天空,看看大地,让coding flying一会儿。。。
关键点
- 找到规律
- 模板引擎
- 用户交互界面
关键点1:找到规律
以bugWriter自己写后台接口举例子。
如果后台架构是三层架构的,第一步写一个controller,再写一个service(或者加一个接口),再写一个dao(或者加一个接口)。
如果需要增加方法了,先在controller中写方法,然后在service中写方法,然后在dao中写方法。
repeat and repeat.
程序员宝宝卒。。。
关键点2:模板引擎
找到了规律后,我们需要抽出重复的可以定义为变量的部分,然后使用一种模板语言来渲染出最终的文本(这其实和jsp渲染页面有点儿类似)。这里我们使用的模板语言是freemarker。
关键点3:用户交互界面
找到了规律,实现了模板引擎,接下来的工作就是做一套用户交互界面,给用户定义变量和实现最终的目的。
所谓的用户交互界面其实就是前端开发,有一个用户可以输入信息的地方。
bugWriter采用的是web的方式,因为只会这个。
接下来的时间就是coding
最终成果
spring boot
angular+ng-zorro-antd
- 部署
自己想办法。
因为需要读取源代码并修改源代码,所以需要本地部署
目前实现了后台的自动化,没有file生成file,有file增加method
- 操作流程
package com.yblog.controller;
import com.yblog.common.controller.ResponseObject;
import com.yblog.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author yblog
* @date 2019-06-01 17:03:02
* @Description /用户管理
*/
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
/**
* @author yblog
* @date 2019-06-01 17:03:02
* @Description 分页查询用户
*/
@RequestMapping("/findUsers")
public ResponseObject findUsers(){
return ResponseObject.success(userService.findUsers());
}
/**
* @author yblog
* @date 2019-06-01 17:03:02
* @Description 查询用户列表
*/
@RequestMapping("/findUserList")
public ResponseObject findUserList(){
return ResponseObject.success(userService.findUserList());
}
/**
* @author yblog
* @date 2019-06-01 17:03:02
* @Description 增加用户
*/
@RequestMapping("/addUser")
public ResponseObject addUser(){
return userService.addUser();
}
/**
* @author yblog
* @date 2019-06-01 17:03:02
* @Description 修改用户
*/
@RequestMapping("/updateUser")
public ResponseObject updateUser(){
return userService.updateUser();
}
/**
* @author yblog
* @date 2019-06-01 17:03:02
* @Description 删除用户
*/
@RequestMapping("/delUser")
public ResponseObject delUser(){
return userService.delUser();
}
}
下一步
让生成的过程慢一点儿,这样程序员宝宝可以有time出来抽根烟,看看天空,看看大地。