做一个项目,平时都用到哪些工具提高效率(上)
做一个项目,平时都用到哪些工具提高效率(上) 转载
做.NET 相关项目,Visual Studio 2008,SQL Server 2000/2005是标准的配置,但是,除此之外,还可以应用哪些工具来提高工作效率,让项目做的更轻松。
1 需要一个代码生成工具,生成实体层,数据访问代码,和接口层,界面绑定代码,也有能直接生成界面代码的. 遵守的基本模式是Table—> TableEntity—> EntityDAL—> EntityService
然后就是代码组合的技术,这是基本的表数据的增删改。如果做有关联的主从表模式,还要额外处理一下主从表之间的关系。
代码生成器如下
这里有一个界面生成器的原型,在园子里有他的最新版,可以成倍的提高效率。感谢作者的辛勤老动,这个软件还在一直更新中。
把重复的劳动(dirty work)交给计算机,自己去做更有价值的工作。
2 要有一个ASP.NET Web服务器,可以随时看到网上的例子,方便的拿来研究和吸收.
Visaul Studio 2005/2008已经内置了这个服务器,可以不用IIS直接运行ASP.NET网站,但是我还是认为不方便,写个小程序,调用WebServer.exe,如图
3 需要一个压力和性能测试工具,找到系统的问题,适当改进。这个我选Application Center Test,内置于VS2003中,现在虽然有Test Complete和LoadRunner,这两个都是大家伙,还不会用。等项目的空闲时,再来好好研究这2个东东。程序员做测试有天赋,因为会编码,那些录制的脚本很容易看懂,容易学习,其它的人学测试,感觉比较难点。
4 需要一个数据库恢复工具。发生错误是难免的,当不小心把运行中的数据弄错了,你还要有办法,能应付自如。在实际使用中,我就经常发现有老板批错了,有经理把数据看错了,有的人EQ高,他就将错就错,不说,有的人一弄错了,就过来告诉你,弄错了,要你帮忙他改一下。对于有些数据,你可以帮忙他改,有些数据你也不知道他原来的值是多少。
用这个Log Explorer for SQL Server东东,通过查询SQL日志文件,你可以将恢复数据到某一时刻。
它导出的数据格式是XML或SQL表数据,SQL表数据需要重新写SQL导入到数据库中,我喜欢导出为XML,它的格式固定,XML格式如下图
园子里有牛人写了个XML解析工具,直接把XML文件数据转化为SQL Insert语句,直接放到SQL 查询分析器中执行,数据恢复完成。
5 需要一个Reflector,碰到好的功能,你要看看它的实现,以后将来用到自己的项目中。
需要一个SQL Assistant,加速你的SQL代码书写速度和正确率
需要一个SnippetCompiler,遇到小的片段代码,不想动用笨重的Visual Studio,直接把代码拷贝进去执行晃可以知道答案。
如果接触过大量的数值计算,你发现.NET中没有直接的用于四舍五入的方法,如下的三个等式
Math.Round(3.44, 1) = 3.4 Math.Round(3.45, 1) = 3.4 Math.Round(3.46, 1) = 3.5
如果你不相信,把这段代码拷贝到SnippetCompiler中,很快就知道答案。
6 需要一个原型工具,用于沟通设计。
原型工具用于快速构建界面原型,在新项目开始时,一般只有boss同意你的界面方案,你才能继续做下去,否则到后面改起来很费力.
桌面系统的原型工具用GUI Studio,这个已经做的很完美了
网站型项目的原型工具有Axure RP Pro,这个东东有CTP版,不用花银子。
7 需要一个数据自动输入工具。项目做好了,模拟大数据量时,系统的性能,响应时间,系统需要很多数据,要是在界面上人手工输入,那要输的手指抽筋的。做个小工具,批量为表生成测试数据,几秒钟就搞定几十万行,方便。
既然快速生成了大量数据,你的页面自然考虑分页,于是又弄个生成分页存储过程的东东
有了这些小工具,平时的工作效率应该是有改善的。
如果每三个月到半年,思考一下如何改进现有流程,提高工作效率,几年之后,我们的效率将会比现在成倍的提高。你不开始想,不开始思考,永远就没有开始,从现在开始思考一下,你怎样改善你的工作效率,对公司有益,对自己的职业生崖也有益,两全其美,何乐而不为。
Let’s keep going
8 要有一个持续的改进项目的方案(CIP)。后台界面长什么模样,前台的业务操作界面什么样子,要有模板可供拷贝。此外,你要进行持续的改善和修订,直到它变得很成熟。
做一个新项目,直接从里面拷贝模板,后台和前台都可以拷贝,如果有改进,可以把这些模板升个级,有利于以后做新的项目。
模板里面还要提供基础框架,像部门编辑器,员工信息编辑器这些基础的功能,你要有准备,不必开始一个新项目时,要从头开始建立用户,建立部门,那样没有效率。直接打开现有系统,建立一个新的应用,添加部门,用户,角色,权限关系也分配好,做起项目来又快又稳。
9 要有一套稳定的公共类库,用于一些常用的功能的直接调用,每次有新的功能需求,要到网上找,而且以前用过的代码,稳定。
这套代码涵盖的功能有访问数据,记日志,发送提醒邮件,字符串操作,客户端代码验证,操作PDF文件,生成EXCEL报表,比较常用的功能都放到这个类库中,不断完善。
如下图,还有一个更完善的版本
有时候,这个东东的产生,是对现有的.NET BCL不熟悉导致的,有时候是因为类库提供的接口不方便直接用,还要写样板代码,所以,弄个基础框架库,有利也有弊。
10 要有一套稳定的数据访问层。有自己写过的SqlHelper,有Application Block,还有DbHelpSQL, NHibernate,NBear,这么多组件,以前做项目都折腾过,现在变老实了,把Enterprise Library用熟练,用会,必要的时候去做扩展,坚决不再用别的类库,不再折腾自己。
尝试过Enterprise Library3.0,4.0,有些问题不好解决。有时候可以装上,运行时有异常,痛苦了几个晚上后,强迫自己坚决不升级,不折腾,只用2006 Jan.的企业库。
以前去富士康面试的时候,人家问我,企业库中的里面的工厂模式之类的问题,是怎么设计的,我的回答令人家很失望。我的观点是务实,把项目做稳定,做好,客户满意,老板满意就行。要是你有时间去折腾里面的模式,那是你的本事,我没有心思去折腾,我只会用,用的很稳定的,估计我这个水平,下次还会还被他cut.
之前提到过,我用代码生成器生成代码,运行的时候,还得有类库支持。建立一个新的项目时,添加引用到ASP.NET Factory Runtime,项目就可以跑起来,不必去找很多依赖类库。
虽然为Data Access项目弄过很多公共实用程序,但现在都不用了。专心用好Enterprise Library 2.0
11 需要一批文档模板,打上公司的banner和logo,有support的联系方式,方便沟通。
有需求变动,需要做过记录,系统有bug,也要有人follow,下一个版本要做那些事情,都有凭有据。
把每个人的工作写出来,文档化,可以改善沟通的效率.
因为是公司内部项目,我发现,越是Title比较高的职务,越是不愿意做这件事。可能是怕说的,写的,做的有出入,不好对上司交代;也可能是怕对以后的career有影响;我的Title不低,倾向于做这个。
12 需要有一些常见的问题的解决方案,遇到问题了,直接拿来就用
这里面的内容比较多,只举几个常见的例子
1) 多语言项目的解决方案。到目前为止,有几个方案:用XML文件(zh-cn.xml,zh-tw.xml,en-us.xml); 用资源文件,配合StringResourceTool2生成类库;用ASP.NET自带的方案,生成网站资源;
这些方案的样板代码都要写好,可以直接拷贝,或者封装成库,直接调用。
2) 日志。一般分为系统日志,业务日志,审计日志;有稳定的封装好的方法直接调用,也要方便扩展
最好还要弄个日志管理器,查看系统日志;日志的格式也要可扩展的,数据库中用ntext格式,如果是SQL 2005,直接用XML类型;程序中把日志消息序列化成XML字符串,这样扩展性好一点,不必为多加一个日志项而去改动表结构。
3 )常见的javascript脚本要准备好,打开一个新窗口,父子窗口传值,窗体提交前的数据验证,这些脚本很常用,要提前准备好,用的时候直接拷贝;你也可以学会熟练用JQuery之类的JavaScript类库,实现代码复用。
4)项目的验证方式,要提前配置好,到用的时候直接拷贝;你用Form验证,还是有一队样板代码和配置要弄,提前准备好可以运行的代码和配置文件,用Windows验证,提前弄好IIS的配置,最好截个图放在那里,下次不至于在IIS中找不到option在哪里;用Windows验证时,最好也弄个域用户管理的小工具,操作AD,读取用户信息,直接导入到系统的当前用户表中;
5)常见的一些特效控件,也要准备好例子; PageMethod怎么用,UpdatePanel里面不能放哪几个ASP.NET控件,ComboBox,DropDownList绑定XML数据源或SQL数据源;好看好用的GridView样式,也要准备好,不能总是从头开始
13 做数据库类的软件,数据库设计工具要准备好。小项目,十几个表的,用SQL企业管理器可以应付,再大一点,要弄个Power Designer,E/R Win之类的工具,从整理上了解自己设计的表,而且这个工具可以帮忙你快速查看别人的数据库的表结构设计。
常见的表结构也要准备好,员工表(Employee),用户表(User), 配置表(Param)都可以提前准备好,这些表的变化不大,都是与系统基础功能相关的;最好把金蝶用友的数据库也保存到自己的本机中,弄个架构图,自己设计数据库的时候好参考一下,人家的系统是经过数次的更新换代修订而成的,一定有他的优势和道理;最近用Power Designer看一个系统的表结构图,发现数据库的字段直接用中文,这样好,减少维护的痛苦,还有一个系统,在字段名字加i,f,c之类的表示字段类型,这样也很不错。
看看这个图,直接用中文,简单易懂,减少误会,我们的英语水平都不怎么样,Name,UserName, Last name, First name,Family name,Login ID,这些名字,一定会把人弄晕的,你相信吧。
14 有空的时候,常整理一些技术笔记和文档,用的时候可以很快的完成任务。
常见的文档,你的电脑里都要有,《GridView 72般绝技.doc》,《JavaScript应用技巧集合.doc》,《Net编程规范.doc》,《RDLC报表开发.doc》,这些文档,有空的时候多整理一下。
还有常见的技巧,如下图,我不会写,我就整理别人分享的知识,
手里一份打印版,装订的像一本书一样,电脑里一份电子版,平时没事就看看,用到的时候再仔细看。
这些技巧网上都有,只在于平时你是否有积累。文档积累多了,又有个问题,不好找,在硬盘里面找,还不如到google中找的快,于是硬盘搜索工具要派上用处
这样找东东要快很多,积累久了,定期把它们整理成有目录的电子文档,如CHM,PDF,现在自动生成帮助文档的工具多,制作电子书相对容易。
我一直想把博客园里的文章整理成PDF文档,有些成系列的文章很好,于是找个爬虫工具,把文章自动下载放到本地,然后用批量数据转换工具,转换成DOC格式,根据需要取舍,制作成PDF格式的文件。
后来由于工作忙,这个计划没有持续多久;一方面这是借口,另一方面有很多知识文章是很好,但是用不上,整理起来要花时间,但是用不上,还不如等用的时候再去折腾。
Let’s take a break. see you .
接上回,继续分享.NET开发中关于工具的使用经验
15 报表工具。数据的导入导出是系统的一项基本功能,我们让用户辛苦的输入那么多数据,现在是让用户享受成果的时候,你的程序要能用各种方法分析用户的input,甚至你也要帮忙用户分析performance.
常用的报表Weekly report,Monthly report,Efficiency report by group/by employee,WIP report都要熟练掌握。
以前的一个项目选用Crystal report,SQL Server 2005发布后,我们又多了一种选择:Reporting Services. 微软的工具一向简单好用,入门容易,尽管如此,你还是要熟练掌握给报表传参数,设计报表公式,区分RDLC和RDL(本地模式和服务器模式),还有动态调用报表。
报表还支持调用自定义程序集。以前做的一个项目,在报表里面实现多语言版本,所有的label的Text属性都是调用DLL的类中的属性,做得相当漂亮。
截一个图,分享一下
参数选择区域
报表结果
报表中的Logo和公司相关的内容已经被我去除)
最好还做一个报表管理器,集中管理所有的报表。
16 任务记划,Bug追踪。
这个内容在之前我已经分享过,请看这里
软件错误报告与反馈
17 需要熟练掌握SQL脚本书写,最好有大量的SQL代码供你参考。SQL Server本身自带的联机从书就是很好的SQL代码库,你的电脑中最好有SQL Server 2000,SQL Server 2005,SQL Server 2008三个版本的联机从书,查找SQL代码才会轻松自如。另外,经常看的书的随书源码也要保存好,必要的时候都可以参考
《SQL Server精华.chm》这本电子书也最好要用,关于SQL的问题,总结的很全面。
如果你做过报表项目,你对SQL的理解应该是超过一般人的。写程序的时候,SQL不好写的,可以放到程序中去实现,比如字符串处理(权限字符串的分解与判断),计算处理(decimal的精度计算)。
但是,在做报表的时候,你没有办法这么做,你必需老老实实的在SQL脚本中考虑好所有问题的处理方法,然后用T-SQL写好,于是,痛苦过后是对SQL脱胎换骨的理解。
报表开发商注意到这个问题,现在Reporting Services支持调用程序员自己开发的Assembly,非常方便,报表的开发商为程序员打开一座后门,你可以从那里逃走,不必在冰天雪地,360度空翻,裸求SQL的写法,呵呵。
18 需要了解一些常见的生产业务系统的动作流程。
做了几年的程序,我们程序最了解的系统应该是系统管理(System Administration),一些常见的部门用户角色权限之类的系统,这样还不够,你还需要了解一些业务系统。
以行业来分,做哪一行,对该行业的生产运作流程,大概应该有个了解,
以通用性来分,生产管理(operation managment),项目管理(project management),品质管理(QC management),人力资源管理(HR management), 采购管理(purchase management),你都应该有所了解。
看书是一种学习的方法;有机会到他们的工厂去参观一下,也是一种方法,而且印象更深刻;
把人家的产品文档,用户手册下载下来,对照软件和用户手册一起看,一边操作,也是一种办法;
以我的理解,每个细分的领域,还是有很多项目可做。通常人家不愿意花银子做,请不起开发人员;想做软件的人(user)没有决定权,有决定权的人(boss)没有做软件的想法;或是找不到信任的人,宁愿不做,还是用EXCEL的版本,春去冬来,年复一年。
19 需要大量的例子程序,编程的时候想都不用想,代码拷贝过去程序就做完了。
这里面需要积累,不是一朝一夕能完成的。做过的项目,好好整理一下,实在认为惨不忍睹(项目被改的面目全非,完全不是当初规划的样子,设计和编程完全脱节),把技术要点整理一下,下次做新的项目好用;还有,微软定期公布的demo,training kit, 你也要下载下来,保存好。
我记得.NET 1.1发布的时候,101 sample code, 一个MSI文件,6MB左右,被我拷贝了很多份。每学一次,就按照自己的理解去改动一下它的例子,看看能不能运行,结果是否是预期的。
最近微软又在大肆宣传它的Visual Studio 2010和.NET 4.0,现在还是beta 2,预计下个月就RTM。
你可以视而不见,当做没有这回事。也可以像我一样,把你电脑里的美女帅哥图片删除一些,留点空间给这些demo,sample code,training kit存放。跟着微软混,这些东东迟早是要的。
20 需要一个合理的流程。boss开过很多次会,都提到过这个流程,分享给大家
讨论需求-->设计,开发-->调整,培训,推广-->反馈,跟进,完善—> 再讨论,演化
你可以把软件工程书里的那个流程那拿来和这个流程比较,以此评判我们公司的水平有限,我的水平有限。以公司的角度,
按时按质的完成任务,是职业化员工的必备技能。
每到一个公司,都有他自己的文化,你会发现书中所说的都是理想的状态。这种文化有时候是好的,是做事的一种默契,有时候也有弊端,他会抗拒变化,因为承担不起变化的责任而拒绝变化,抗拒改变。
做一个项目要老老实实的分析需求,设计,开发;实施一个项目要有一些为人处事的伎俩和手段;在我手里,也有失败的项目,不是程序不好,
程序可以持续改进,可以做CIP,从demo—>trial—> trial run,至始至终,向上得不到支持,向下面对一大群EXCEL终实用户的反抗,那个项目真是累死人,
我只好give up.
21 业务开发平台。这个东东,可能是管理软件开发的终极解决方案,像工厂一样,生产企业管理软件。
平时我们见到的factory,是生产产品,现在可以生产企业管理软件的factory诞生了。
以我的理解,需要这四个东东
1) 业务实体设计器,可以生成业务实体,同时导出为SQL代码和C#程序代码
2) 窗体设计器,可以生成用户界面
这是《俊先企业管理软件开发平台》中的例子,一个完整的窗全设计器,可以生成窗体代码,在运行时用反射技术,加载窗体,执行。
我自己私下里也折腾过这个东东
用XML文件来表示窗体,运行时动态解析窗体文件。XML文件可以放到硬盘里,也可以放到数据库中。
CREATE TABLE [dbo].[Form](
[GUID] [uniqueidentifier] NOT NULL,
[Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Text] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Definition] [xml] NULL,
[DataTable] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[LastUpdateTime] [datetime] NULL,
[Workflow] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_Form] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
3) 流程设计器 直接用工作流本身的流程设计器,自己提前先设计好接口加再进去,否则那些外部方法和事件可能会找不到接口而不能编译通过
有些工具是自己折腾的,有些东东是别人的作品,我只是拿来用,有些工具是在别人基础上,进过我的重新规划设计;这些东东只是自己的私房工具,没事的时候瞎折腾,并没有在公司的产品中应用,我敢截图出来与大家分享。不要向我索取,很多东东你都用不上,你只是好奇,真的,相信我。
22 需要一个门户站点,来管理任务,问题,项目。
推荐你用SharePoint Services,这东东70MB多,如果买了Windows Server 2003的License,这个工具包是免费的,好用,稳定,可扩展。
下一个版本我打算把公司的WCF服务器驻留在这里,把报表服务器也驻留在这里,成为公司内部的team site。
美观大气,可扩展性好。
写到这里,也写的差不多了,还有几个条目,没想好具体内容,暂且不表。
应该说,不是这些工具重要,而是人更重要,人对了,软件和项目就对了,整个世界就对了。
如果你错过了前面的内容,这里还有两篇,与大家分享,
做一个项目,平时都用到哪些工具提高效率(中)
做一个项目,平时都用到哪些工具提高效率(上)