大型管理类软件项目开发,为什么必须要有代码生成器的深切体会总结
2009-06-01 14:48 通用C#系统架构 阅读(3707) 评论(42) 编辑 收藏 举报
首先我表个态,我是那种老顽固型的,一般人的建议是听不进去的,觉得世界上只有我才是对的那种人。
我大概在几年前也反对代码生成器,觉得那玩意儿只是个花架子,不可能满足日常开发里那么多复杂的
问题,用了也是白用,怎么可能满足那么多各式各样的复杂情况,其实我错了,代码生成器不是万能的
对他的定位错了,他只是一个开发的辅助工具,不是万能工具,有部分功能用代码生成器是可以大大提
高工作效率的。
因为我多年始终完善维护一个系统架构一个体系,每天修修改改、完善完善,表结构变动不多,也不经
常加表什么的,修修改改,感觉不需要多少工作量,这也是我当初反感代码生成器的原因,说白了我是
走产品路线的,不是走项目路线的这还是有本质的区别的。
后来自己亲身经历了几个项目后,才深刻体会到,我是大错特错,由于大型的管理类软件,会建立很多
表,例如我们的数据表往往会有100个以上,这么多表的读、写、删除等操作都是大同小异,让7-8个
项目组人员,都写出同样风格的代码,那比上天还难,因为每个人都是大爷,都有个性,都喜欢按自己
的方式写,谁也听不进去谁的,谁都自己有一套写法,什么规章制度,检查都是瞎扯蛋没多大实际用,
你不可能罚款吧?把大爷惹毛了人家辞职不干了,还有你凭什么说你的写的就是对的,最好的呢?他的
写法也是对的呀,效率、性能说不定还比你的还高了。
而且这部分对数据的操作纯粹没任何技术含量、而且还需要经常变动,例如增加了几个字段,修改了几
个字段,删除了几个字段等等,改来改去是累死累活,时间长了,这些大爷也都懒得修改,能用就行吧,
能不改就不改吧、很少有有耐心重复去做相同的事情,而且从早到晚都是这样的重复劳动。
还有就是对这么多无聊代码的质量检查及测试工作,也是个头痛的工作,经常会有变动,还真TMD的需
要经常测试验证才能保证质量,这些大爷的写法又乱,你命名规定写在哪个类里,他甚至可能写到页面
上都有可能,因为毕竟这个项目组里啥人都有,不可能是清一色听话的好员工。
我很早的时候,大概在2003年左右见过我们项目组的老大写了一个代码生成器,当时我也是很反感没用,
几年后想想的确是有道理,2007年时我彻底接纳了别人的思想,也写了一个代码生成器,结果花了7天把
生成器写好了,然后用几分钟就生成了接近2万行的高质量的程序代码,真的是磨刀不误砍柴工啊,我平
时一天也就能写1000多行有效代码,用了代码生成器几分钟就写出来2万行代码,而且不用检查,编写
风格、排版、命名是统一的,错误也是集中管理的,后来又在另一个大型项目里,所有项目组成员必须用
这个代码生成器生成,结果上百个表的几万行代码,玩一样生成好了,代码质量也过关,可以偷懒了,检
查都不用检查,用的真的是不亦乐乎啊,大家可以专心写业务逻辑代码了,从繁重的体力劳动里解放了。
因为我们有一些历史积累的原因,我们还没用最新的技术,采用了最新的技术,这部分也不用人工写了,
也可以由开发环境自动生成了,是大大的提高生产率啊,进步不是一步飞上天的,都是靠点点滴滴的积累,
10年前,我就听说过什么智能开发软件什么的,说是用嘴巴说说需求就可以了,或者就一个软件就是万能了
什么什么的,10年过去了这样的神奇软件我连影子都没见过,开发软件还是一步一个脚印的发展。
我们不要当老顽固,有时候需要积极的吸纳新知识、新思想。
用代码生成器的好处总结如下:
1. 效率高,可以在1分钟内生成几万行代码。
2. 代码质量高,因为都是一个生成器生成出来的,代码的风格一致、以后好维护。
3. 不用反复测试,人是最靠不住的,很容易马虎,偷懒,代码生成器不存在这个问题,或者有也好修改。
4. 人是靠不住的,电脑、程序相对来说比人更靠得住一些。
5. 可以把人从重复劳动解放出来,用更多的精力去关注更核心的业务逻辑上,系统的优化上。
手写代码比做是小米加步枪,代码生成器就是【飞机+坦克】,当然小米加步枪也有战胜后者的时候,
打游击战前者优点更多,但是打大仗、正面交锋还是后者更强一些,不承认不行啊,当然也不能过于
夸大他们的功能,不是万能的,要用后者的长处,少用后者的短处。
往往一个大型软件项目来了,都需要快速搞定、迅速组织人马,短期见效,所有还是要有好的武器才可以。
这样才能把大型软件项目及时又快有好的搞定。
代码生成器最好不要用,住着拐棍是永远都走不快的 == 这个是彻底的谬论,大家不要相信这个啊。