提高生产性工具 - Model代码生成器(二)
首先,我想阐述一下我开发这个工具的一个观点.
如果大家做过对日软件的话,很多时候,日方是进行设计的,数据模型是什么样子的,各个字段的类型,需要做什么验证,验证规则,错误信息,都是日方制定的.
外包就是廉价劳动力市场,所有,到了中国之后,大家只是机械式的编码,或者说,只是将设计书翻译成为代码罢了.
我的一个观点是,设计即代码,如果可以将数据设计书作为源头,直接生成源代码,则可以让大家从枯燥的编码中解放出来.更重要的是,可以节约大量Review的时间.
虽然,错误信息这样的东西,大都是复制粘贴的,但是,由于是手工作业,仍然需要Review代码,如果是工具生成的话,就可以杜绝这些问题.
有人可能要说,我们有T4模板,也可以做到同样的效果,我们可以先Model First.
这里我想说的是,这个工具应该能够帮设计和开发的人,将MVC5的细节都屏蔽掉,让设计的人关注业务,让开发的人关注算法和性能优化.
例如,一个主Key项目,如果想在编辑状态的视图里面,只读显示.标准的做法是
日方说,在设计书某个项目标为[Key项目,无法通过视图编辑],然后我们这里编码的时候,需要加上 HiddenInput 特性。这样可能会发生的问题是
新手开发人员不知道 HiddenInput 特性,错用了其他特性
团队会用其他方法进行编码,功能实现不统一
Review的人需要检查是不是漏了 HiddenInput特性
在使用工具的情况下,如果事先和日方约定好了,[Key项目,无法通过视图编辑],使用 HiddenInput ,那么,完全可以做到 0 BUG编码。
有些项目,日方可能会提出各种特性的顺序问题,当需要多个特性的时候,必须按照指定顺序写。
例如,先是 Required,然后是Range。手工编码的时候,一忙起来,编码规则都会忘记,如果用工具的话,这种问题完全可以保障。


很久之前,我接触过一个日本的项目框架,大概意思就是,在系统里面保存一张路由表(迁移配置),里面包含了,某个页面会调用什么模块,然后根据不同的返回值,迁移到不同的页面。一个MVC项目,其实,MVC代码完全可以全自动化生成的,如果业务和MVC分离的好的话,Action里面也应该调用一个BL方法,然后根据返回值,决定不同的视图。如果路由规则也可以可视化编辑,Controller,Action可以做到表格化设计,整个MVC可以完全通过设计文档生成代码。或者,再深入考虑,Controller,Action,Route这些东西,为什么不能是IOC的呢?

暂时先将MVC框架的自动编码工具开发完成,如果可以的话,希望能够开发一个前端代码自动完成的工具。
MVC自动生成的View已经很不错了,但是,很多式样的修改,还是要依靠手工,
当然,通过修改模板可以做到自定义,但是,能不能让这个工作更高效率呢?
例如,我在XML里面编写好左边的菜单结构,然后一键将菜单的DOM生成好,修改起来也会很便利。

当然,一切都有个度,有些东西,还是要人来开发的。
提高生产性工具 - Model代码生成器(二)的更多相关文章
- 提高生产性工具 - Model代码生成器(NET / JAVA) (一)
原来在上一家公司,整整一年都在做工具,提高生产性,那个项目特别巨大,所以总共为老东家节约了500K左右的美金. (除了表扬之外,我个人什么好处都没有,领导们都升官发财了,郁闷) 到了新公司,也准备开发 ...
- 提高生产性工具(五) - 数据的过滤器和图形化(适用于 MVC5 + MongoDB)
在下面流水账似的文章之前,先将一些感悟说一下. 1.如果一个系统对于某个功能在至少三个地方使用的话,必须将其抽象提炼出来,而且时间点最好是大规模测试之前. 2.提炼出来的功能,如果品质做得好,整个系统 ...
- 提高生产性工具(四) - XML数据库的尝试
首先祝大家新年快乐.身体健康,平安就是福气. 对于一般的个人迷你项目,数据量不大的时候,完全没有必要使用数据库,管理数据使用XML就可以了. 自己尝试写了一个XML数据库,插入1w条小记录,大概3M大 ...
- ASP.NET MVC Model绑定(二)
ASP.NET MVC Model绑定(二) 前言 上篇对于Model绑定的简单演示想必大家对Model绑定的使用方式有一点的了解,那大家有没有想过Model绑定器是在什么时候执行的?又或是执行的过程 ...
- ASP.NET MVC Model验证(二)
ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...
- ASP.NET MVC Model元数据(二)
ASP.NET MVC Model元数据(二) 前言 在上篇中,给大家留个对Model元数据的印象,并没有对Model元数据有过多的讲解,而在本篇中也不会对Model元数据的本身来解释,而是针对于它的 ...
- Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例)
这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...
- 深入浅出的webpack构建工具---DevServer配置项(二)
深入浅出的webpack构建工具---DevServer配置项(二) 阅读目录 DevServer配置项 1. contentBase 2. port 3. host 4. headers 5. hi ...
- embed-it_Integrator memory compile工具使用之二
embed-it_Integrator memory compile工具使用之二 主要内容 使用ish接口自动加载memory的cfg文件运行生成memory 脚本内容 打开Integrate &am ...
随机推荐
- 使用Vue.js时,对Chrome控制台的一点小心得
之前对Chrome控制台的console.log()输出没太放心上,其实仔细研究后,对工作效率有显著的提示.看下面的五段代码: console.log(''); console.log(typeof ...
- javascript获取表单值的7种方式
见代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF- ...
- 《Node.js实战(双色)》作者之一——吴中骅访谈录
- JS---DOM操作有哪一些
一 DOM对象有哪一些 1 windos 1.属性 opener 2.方法 open(),close() 例:<script langguage="javascript&qu ...
- fir.im Weekly - 这是一份强大的 SwiftGuide
大新闻!Apple 10 亿美元融资滴滴!库克大叔对中国 iOS 开发者表达了高度认可,同时也传出 iOS 10 将内置滴滴 App 的消息.想像下,某个加班的深夜飙完代码,最性感的事情莫过于:「Si ...
- webpack配置es6开发环境
webpack.config.js var path = require('path'); module.exports = { entry: "./es6/demo01.js", ...
- sublime text2小技巧
1. 文件快速导航: 这是sublime上面很好用的功能之一,ctrl+p可以调出窗口,菜单上的解释是gotoanythings ,确实如其所言,调出窗口后,直接输入关键字,可以在已打开的项目文件夹中 ...
- hibernate(六)一对一映射
关系映射是指对象之间的关系,并不是指数据库的关系,关系映射是解决当对象处于以下关系之一时,数据库表该如何映射的问题 (一)一对一单向外键关联 1.注解方式配置 创建一个Husband类和Wife类 H ...
- backbone库学习-View
Backbone中的视图提供了一组处理DOM事件.和渲染模型(或集合)数据方法(在使用视图之前,你必须先导入jQuery或Zepto) 视图类提供的方法非常简单,我们一般在backbone.View的 ...
- nodejs图片转换字节保存
fs.readFile('上传图片路径', function(err, data) { if (err) { // 错误处理 return; } var base64str = new Buffer( ...