提高生产性工具 - 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 ...
随机推荐
- [stm32] STM32 Interrupts and events 系统了解(EXTI)及槽型光电开关tp850电路研究
中断和事件 1 嵌套向量中断控制器 特性: ● 68个可屏蔽中断通道(不包含16个Cortex™-M3的中断线):● 16个可编程的优先等级(使用了4位中断优先级):● 低延迟的异常和中断处理:● 电 ...
- [硬件项目] 2、汽车倒车雷达设计——基于专用倒车雷达芯片GM3101的设计方案与采用CX20106A红外线检测芯片方案对比
前言 尽管每辆汽车都有后视镜,但不可避免地都存在一个后视镜的盲区,倒车雷达则可一定程度帮助驾驶员扫除视野死角和视线模糊的缺陷,提高驾驶安全性.上一节已经分析清倒车雷达的语音模块(上一节),本节将深入分 ...
- 使用MYSQL命令直接导入导出SQL文件
很多时候,我们的数据开发都会用到很多开发利器,比如powerdesigner, navicat等这些软件,虽然好用,但是要收费,在公司里面是禁止使用盗版软件的,怕罚款各方面的,所以我们也不敢直接在公司 ...
- Azure China (9) 在Azure China配置CDN服务
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China Update 2015-11-20:Azure China CDN服 ...
- C++ 引用
本文主要记录了C++中的引用特性,总结了一下代码示例和错误. 简单的引用 引用是C++的特性,指针是C语言的特性.上面代码结果如下: 20 20 100 20 true 引用和被引用的对象是占用同一个 ...
- Redis数据库的使用场景介绍(避免误用Redis)
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/122.html?1455854235 Redis 是目前 NoSQL 领域 ...
- Java程序员的日常 —— 多进程开发IO阻塞问题
本篇仍旧是源于最近的工作,总结一下纪念那些年埋下的坑... 背景故事 需求:"使用进程方式启动另一个程序!" 开发:"OK! Runtime.getRuntime().e ...
- SQL Server 2012 数据库笔记
慕课网 首页 实战 路径 猿问 手记 Python 手记 \ SQL Server 2012 数据库笔记 SQL Server 2012 数据库笔记 2016-10-25 16:29:33 1 ...
- nginx上部署python web
nginx上部署python web http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
- Python魔法 - MetaClass
Python魔法 - MetaClass metaclass The class of a class. Class definitions create a class name, a class ...