提高生产性工具 - 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 ...
随机推荐
- [PCB设计] 2、畸形PCB板子的制作核心——AD14导入dwg格式文件的方法
本文参考园友:The Zone of up.Craftor http://www.cnblogs.com/craftor/archive/2012/06/28/2567259.html 硬件工程师在做 ...
- 诡异的 未处理的IOErrorEvent 2035
今天游戏发布上线之后,总是随机的出现卡死. 换了个safari之后,看到抛了 IOErrorEvent. 问题是,我所有的Loader都加入了contentLoaderInfo监听.而抛出来的又没有堆 ...
- MySQL 5.7新特性之Generated Column(函数索引)
MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...
- 模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站,并实现退出登录功能
Login <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...
- fir.im Weekly - iOS9 适配开发教程
期待已久的 iOS 9 发布了,很多人更新完毕得出结论:这是值得升级的版本.随之而来的是适应 iOS9 开发技术.本期 Weekly 收集了一些关于 iOS9 相关的开发资源,希望对你有帮助. iOS ...
- Android笔记——了解SDK,数据库sqlite的使用
一.adb是什么? adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具 ...
- 在Ubuntu搭建.NET Core环境
Ubuntu16.04配置.net core环境 Ubuntu 16.04 desktop下载地址:http://www.ubuntu.com/desktop 本次是用vmware安装该系统. ...
- Nexus3.0私服搭建
官方文档:http://books.sonatype.com/nexus-book/3.0/reference/install.html 1.下载 http://www.sonatype.com/do ...
- ASP.NET MVC 4使用PagedList.Mvc分页
ASP.NET MVC中进行分页的方式有多种,在NuGet上有提供使用PagedList.PagedList.Mvc进行分页. 1. 通过NuGet引用PagedList.Mvc 在安装引用Paged ...
- 【转】SQL 操作类
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D ...