SuperSaiyan

I do all aspects related to high performance distributed web application system, such as RIA, Security, databse design and sql, javascript, c#, Asp.net, Software Factory. Among these, the database part is the key to performance.

导航

如何成为真正的代码机器的

最近网上疯传一牛皮,说某女兵90天编40万行程序。按每天十二小时算,相当于一分钟出6-7行,不思考不调试,不拉屎不放屁,连续不断的净出代码。唉,吹牛好歹靠谱点,不懂行就找个懂的先咨询一下,净出亩产万斤的笑话,老革命传统不能丢啊。为什么这破烂牛皮吹出这大动静呢?一是这些习惯于树典型的人,有宣传机器和大笔经费,二来,相比亩产多少,对编程效率问题,多数人外行,看到新奇就跟风转发。

今天,我是来给各位秀一个靠谱的事情,用真实的视频说话,如何在4分钟内产出1780行程序的。虽然比每分钟6行的牛皮速度还多出60倍,但这却是真的,有视频为证。 

其实,这背后用的是软件工厂技术。微软推出Software Factory概念和一些相关技术,已经有几年了,我从一开始就觉得这是好东西,并应用到日常的编程中去。前两天,觉得一个模板有需要修改的地方,本来以为工作量不大,但是,最后居然花了我两天时间。终于弄好,用起来非常顺当。高兴之余,赶上那牛皮到处流行,故秀一下。它的核心是用模板(template)和集成的IDE来让开发人员方便快速的产生代码。这些代码是以调试和优化好的程序模版为蓝图自动生成的,所以质量非常高,还省去很多因小错误而需要的修改和调试时间。其次,架构师可以把自己对架构的要求,包括异常处理了,事务管理等等,具体的实现在模版中,这使得所有人编写的相应模块(比如数据获取层DAL)都能自动的满足架构要求,满足代码规范性要求。所以,这项技术的优点是很突出的。我常用此工具,很多代码都能自动生成。

但是,使用这项技术,首先要能够编出有代表性的高质量的模版。使用T4 语言来编,而且还要和IDE集成,需要了解IDE的又大又繁的object model,编模版挺费劲的。所以,最终的很快的代码生产速度,是以架构师花在软件工具本身上面的高质量高价位的时间为代价的。砍柴还是要好好的磨刀啊。所以,模版越有代表性,使用人员越多,使用频率越高,总的回报越高。

这对于架构师来说,可以说又多加了一项技能要求,就是要会使用这些技术为团队编制软件工具。

 

 

关于软件工厂,再多说两句。如今,工厂也好,(创新)工场也好,都时髦。微软软件工厂的最终目标是,从 DSL和图形化的设计工具开始,到代码模板和集成的IDE,等等一系列的工具,从而实现从概念到代码的一个流水化生产线。然而,微软想实现软件工厂的最终目标,从其复杂程度,和其难以使用程度上来说,仍然是画中的饼,空中的楼。尽管如此,其中还是有不少好的概念和工具可以为我们所用的。创新工场,大概也是出于类似的想法,具体没打过交道,就不瞎扯了。

透露一点秘密,如何在一分钟内写出400行程序的秘密,就是把最普通,最常用的",",写成下面的样子, :

<#= HasIdentityConstructor(identity) ? ", ":"" #>
<# private static bool HasIdentityConstructor(Identity identity)
{
   if (identity.ParameterMappings.Count == 0) return false;
   foreach (PropertyParameterMapping parameterMapping in identity.ParameterMappings)   
       if (parameterMapping.ParameterInstance.Direction != ParameterDirection.ReturnValue)
           return true;
   
   return false;
}#>

 

有人或许会说,没准那女兵也用类似的工具。我的回答是,首先,代码产生工具并不普及,特别是,要根据实际问题,编制代码模板以及一整套的和IDE集成的条件输入UI,技术要求比较高,我怀疑那女兵甚至没听说过这套技术。就算她什么都会,一般代码产生工具至多提高生产效率20-30%(因为,用工具自动生成所有代码是不现实的),扣除这部分,她的编码速度仍然有每分钟4-5行,这仍然远远超出人类的能力!

 

 

 

 

 

 

 

 

 

posted on 2012-06-28 15:17  SuperSaiyan  阅读(5089)  评论(10编辑  收藏  举报