提高生产性工具 - 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 ...
随机推荐
- Spring-Context之八:一些依赖注入的小技巧
Spring框架在依赖注入方面是非常灵活和强大的,多了解点一些注入的方式.方法,绝对能优化配置. idref idref属性可以传入一个bean的名称,虽然它是指向一个bean的引用,但是得到的是该b ...
- Redmined的历史记录显示 "Updated by {{author}} {{age}} ago"
最近Redmine出了点问题,简单查了一下,是ruby的本地冲突包i18n导致的, 先到redmine中跑命令: gem list --local, 查出本地ruby安装的所有的包 这里可以看到i1 ...
- linnux 3
kill [信号代码] 进程ID 以优雅的方式结束进程# kill -l PID-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程.当使用该选项时,kill命令也试图杀死所留下的子进程. ...
- xamarin UWP平台线程交互问题
先吐槽一下,xamarin到现在为止,虽然开发一下应用尚可,对于一些简单的app开发使用xamarin-forms方式开发,虽然有一些优势,可以省下开发三个平台共同功能的时间,但是当我们随着项目深入的 ...
- 每天一个linux命令(51):lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 ...
- Atitit 图像处理—图像形态学(膨胀与腐蚀)
Atitit 图像处理-图像形态学(膨胀与腐蚀) 1.1. 膨胀与腐蚀1 1.2. 图像处理之二值膨胀及应用2 1.3. 测试原理,可以给一个5*5pic,测试膨胀算法5 1.4. Photoshop ...
- iOS-MVC模式
提到ios中的mvc不得不提2011秋季斯坦福课程的老头,他的iphone开发公开课是所有描述ios中mvc模式最为准确并且最为浅显易懂的. 模型-视图-控制器 这个模式其实应该叫做MCV,用控制器把 ...
- MongoDB 简介
MongoDB 简介 介绍:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.特点:高性能.易部署.易使用,存储数据非常方便.主要功 ...
- javascript_core_06之正则、Math、Date
1.RegExp:Regular Expression,创建封装正则表达式: ①正则直接量:var reg=/reg/ig:②var reg=new RegExp(“reg”,“ig”): 2.Reg ...
- 安卓中的数据存储方式以及ContentProvider的简单介绍
1.介绍android的数据存储方式 File存储 sharedPrefrence存储方式 conmtentprovider sqlitedatabase 网络存储 2.请介绍下ContentPr ...