蛙蛙推荐:一点准程序员工作经验总结

蛙蛙推荐:一点准程序员工作经验总结
做asp程序开发工作两个多月,总结了一下开发过程中的经验以及从别人那里获得的间接经验,结合实际工作中的情况,随便写了一下。当然不可能把所有有用的经验都罗列出来的,但至少已经有一定的工作指导作用了,拉下的经验或者你自己的亲身经验,请回帖补充一下,谢谢

1.所有的超级管理员初始帐户为admin,初始密码为www.21hb.com
2.在发布之前要经过至少2个人的测试;
3.对链接使用使用ALT和Title属性;
4.设置IMG的width和height属性;
5.对数据库的操作一般要包含增加,删除,修改,查询,分页,列表几个功能;
6.要考虑客户屏幕分辨率和屏幕颜色数;
7.适合大多数低版本浏览器,考虑他们对ActiveX、RDS、XML、DHTML、Java Applet的支持状况;
8.对输入和输出进行缓存;
9.减少数据库的存取:缓存变换后的结果;
10.避免失效和错误的链接;
11.使用meta标签:
 <meta name="keywords" content="九州信息网络,电子商务">
 <meta name="description" content="河北九州信息网络有限公司始创于1996年8月,是河北省

较早开展互联网接入(ISP)业务的网络服务商。公司成立之初,把为河北省政府信息化规划发展提供咨

询作为公司主要工作之一。目前,公司在河北省三分之二以上市、县设有互联网连锁增值服务,并有遍及

全省的,覆盖工、农、商、服务四大产业数十个行业的稳定客户1200余家,庞大的网络体系和客户群使九

州公司旗下的《河北之窗》(www.hebei-window.com)当之无愧地成为河北省最著名的国际互联网服务网

站。作为国际互联网行业的开拓者和先行者,河北九州公司秉承进取、创新的精神,已经发展成为一个拥

有雄厚技术实力、富有活力和竞争力的高新技术股份公司。
">
 <META NAME="Author" CONTENT="九州信息网络有限公司">
12.所有的表单输入要做必要的客户端验证,还有服务端过滤sql注入的措施;
13.网站整体设计风格要统一;
14.要有良好的整站业务流程导航;
15.程序员写好开发说明文档:
 .明确客户的需求分析
 .页面功能分配说明
 .程序主要功能说明以及功能实现分析说明
 .数据库设计说明,详细到每个表,每个字段,每个存储过程,视图的功能和t-sql语句
 .给客户写好程序使用帮助说明
 .写出主要业务流程的sql执行语句
16.所有的程序必须至少有3个不同开发程度版本的备份;
17.要有良好的错误处理功能,不能给用户提供太详细的错误描述,但自己要清楚出错的原因;
18.使用#include 重用代码,凡是有两处以上使用同样代码的都封装成函数;
19.#include 文件不要使用.INC后缀,使用.ASP或者设置.INC的应用程序映射;
20.把MDB文件存放在非WEB路径下,发布时数据库文件名字改成.asp文件,并在名字前加#字符;
21.程序中要有合理的缩进和适当的注释;
22.指定ADO调用的缺省参数,避免出错,准确地指定Command Type,善于使用recordset的field属性;
13.大型程序使用sqlserver数据库,使用存储过程;
14.用Server.Transfer代替Server.Redirect;
15.尽量晚的打开数据库,尽量早的关闭数据库;
16.在底部写好版权声明,保护知识产权;
17.考虑用cookies,隐藏表单域,querystring等来替代session维持状态;
18.善于使用application来缓存静态或者不时经常更新的内容;
19.在合适的地方使用Response.Expires=-10000语句和Response.Buffer=True语句;
20.不要在Session或者Application中存储大数组,记录集,和数据库连接实例;
21.减少Session.Timeout,和script.timeout;
22.关闭脚本调试;
23.善于使用xml,xmlhttp,js,css,vml等客户端技术来分担服务端工作;
24.尽量使用oledb的数据库提供者连接数据库;
25.不要使用Select *,把字段写出来;
26.能使用getstring和getrows方法的时候尽量使用;
27.工作要有条理,干活儿前现好好想想,设计安排好工作流程,做完后再仔细检查,发现有不好的地方

一定要修改过来,不能凑合,要做就做最好,与其让客户发现错误,不如先把错误改过来。如果你正在赶

时间做工作,那说明你没有把工作合理的安排。一般首先把注意力放在最重要的事情上,其次是最主要的

,再其次是最基础的,最后是其它的,合理安排自己的时间往往会让工作事半功倍;
28.同样的失误不要犯第二次,善于总结经常的,经典的,容易出现的错误,要养成改进自己以前程序的

习惯,使之性能更好,逻辑更顺畅,可读性更好,程序更完美;
29.做一些通用的,可重用的模块,建立自己的教本库和函数库,放在适当的地方,并保证需要它的时候

快速的定位找到它;
30.一定要让别人知道你的工作,虽然沟通是一件技术人员和外行之间很头疼的一件事,但你要尽力让领

导知道你已经做了些什么。用进度表来指导工作是很不错的想法,这首先需要你把工程分成若干个可单独

完成的小模块,有时候要了解一些软件工程的常识,指导自己的工作;
31.时间就是声明,效率高于一切,想尽一切办法提高你的工作效率,当然是在尽量保证作品质量和安全

的前提下;
32.多运动,多休息,多陪家人和朋友,多与人沟通,这些差不多是所有程序员所缺少的。

本文部分内容参考了《蚂蚁电商》的“如何写出优秀的ASP商业应用?”一文,原文地址:
http://bhasp.com/article/html/200411/BHAsp-6869-24122.html

蛙蛙推荐:蛙蛙牌儿IIS备份器

05-18

蛙蛙推荐:蛙蛙牌儿IIS备份器rn把下面所有代码保存成一个.hta文件,然后双击就可以了rnrnrn New Document rn rn rnrnrn备份名称 rnrnrnrnrnrn rn rn 问:这个小软件有什么用?rn 答: 这个小软件用来手工备份和还原IIS配置,如果IIS元数据库严重受损,IIS 将无法启动,这个小软件可以做的小帮手,帮助你在IIS出错的时候选择合适的备份来恢复IIS配置.rn 问:重装机器后如何恢复IIS配置?rn 答: 做虚拟主机的时候如果重装了系统,一般需要手工一个一个的添加网站,网站很多的话,非常费时费力,而象IIS备份精灵,IISExport都需要注册才能无限制使用.其实在Internet 信息服务管理器控制台(也称为 IIS 插件)中所设置的属性和值默认情况都储存在 C:\winnt\system32\inetsrv\metabase.bin (如果是windows 2003+iis6是C:\WINDOWS\system32\inetsrv\MetaBase.xml)文件中。可以简便地使用 xcopy、scopy 或任何其他复制程序来复制这个 文件。但这时最好先停止 Internet 服务(在cmd命令模式下里键入 net stop "IIS Admin Service"来停止Internet服务,net start "IIS Admin Service"来启动IIS服务,或者在服务管理器在界面模式下操作,),以保证元数据库是最新的并且不在使用状态中。 重装系统的时候先停止internet服务,然后覆盖那个目录,IIS配置就恢复了.rn rn rn rn 问:请提供一些关于IIS管理和编程的文章rn rn 答: rn 1.Internet Information Services SDK rn http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/b1073d67-0cfd-42cb-b62b-97e670a4eafb.asp rn 2.Backing Up and Restoring the IIS Metabase rn http://www.windowsitpro.com/Web/Article/ArticleID/9159/Web_9159.htmlrn 3.有关 Internet 信息服务的 5 个热点问题及其解答 rn http://www.microsoft.com/china/technet/community/columns/insider/iisi0602.mspxrn 4.IIS 内幕 rn http://www.microsoft.com/china/technet/community/columns/insider/default.mspxrn 5.Internet Information Services rn http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/cd7a8a8d-dc9d-45be-b5f8-b7d548053b3f.asprn rn rn rnrnrnrn

蛙蛙推荐:置疑纯ORM方案

07-23

蛙蛙推荐:置疑纯ORM方案 rn纯orm方案的缺点:rn处理复杂对象查询时有难度。数据模型中的所有表格及关系很复杂,包括关联、引用(也就是主从表)和继承三种关系,甚至包括嵌套的复杂关系,在做or mapping的时候非常复杂。rn对应于表中的连接查询,如果直接写sql语句违背了map 规则,不写,灵活度不够。虽然在一些ORM方案中也可以把数据库表之间的关系也映射到对象层里,但是这样在数据库和数据访问层之间增加了一个映射层,再说了映射用的元数据都是XML格式的,访问这个XML文件的时候还得做额外操作,性能肯定要降低了(当然可以在应用程序启动的时候把元数据都缓存起来)。而且那个什么Opath语言,我看不出来和t-sql相比,他有什么优势,Xpath是查询XML用的,它用来查询Object,但是它的Opath查询,最后还是得转换成SQL来查询数据库呀,而且很可能一条Opath语句查下去可能得生成好几条SQL语句,而且它生成的SQL语句有你自己写的语句可靠吗,有你自己写的sql语句性能好吗?我看呀,以后这人们就都不用学sql了,直接学这个Opath就行了,到时候只有高手才会写SQL语句,就象初学者只会调用.NET封装好的类一样,而不知道这些类是怎么封装了COM和API的。我不是说这不好哦,这样做入门是简单了,可是人们被迷惑了似的,多年以后肯定只有微软自己的人才知道这些类的实现原理,而人们想接触一下底层的东西就很难了,我担心有一天我们的精力不够了,从懂事就开始学编程,一直学到40岁了才算入门,还啥都用不上,因为知识太多了,要想实现一个简单程序就得学10几年的知识,这不是悲哀吗,呵呵,撤远了哦。rnrn下面说说我的想法哦:rn我感觉将关系数据映射到业务实体,还是手工或者半手工做的比较好,因为你完全靠工具来生成OSD,RSD,MSD这些文件肯定不能完全覆盖你在领域分析后得出的问题域,工具哪儿有人智能呀,人有时候还分析不出来呢?rnrn而数据库层面的的业务逻辑实现(细粒度的)还是用存储过程来做比较好,而靠Opath这类的语言生成的sql语句肯定不能达到最优化(你能相信DataAdapter自己生成的数据更新sql语句吗?还是使用自定义命令呀?),而且在集合处理方面还存在问题(你说在内存里建立1000个对象的实例和建立一个有1000行的DataTable哪个开销大?),orm是建立在ADO.NET之上的,以后人们是不是连ADO.NET也不用学了呀,直接把对象组成的ArrayList绑定到DataGrid上呀?rnrn现在这人是越来越懒了,我感觉写一个程序最重要的工作还是业务建模和写业务层的代码,这个层的代码估计除了MDA没什么工具可以生成的吧(个人感觉MDA也不是很合适的软件开发方法)?当然了,向orm这些东西属于次要复杂性,本应该是由工具和语言来完成,而不应该耗费程序员的精力(谁也不会否定面向对象的软件开发比结构化编程有优势,谁也不会否定递归算法很巧妙,尽管它耗费资源),但是我感觉还没成熟到那种全自动的程度吧,在全自动生成和全手工编写之间我们得找一个平衡点儿。rnrn我们的目标是在数据库从sqlserver换成oracle,一个表里增加了两个字段的时候,客户要求再给某个对象增加一个方法的时候我们只要改动数据访问层和业务实体层就可以了,而尽量不改动业务层和表示层的代码,也就是维护方便。我们想利用ORM来达到这种效果,我们认为数据实体层和数据访问层只改动元数据就可以完成维护工作了,可是这些东西用了大量的反射(性能降低了),而业务层代码和UI不用改了吗,这怎么可能呢?你数据表里增加个字段,你的业务层的方法签名不需要改吗(就算你用业务实体(业务实体根据xml确定)做传入参数,但是方法里面处理的时候你不得变呀)?还有你的界面显示的时候不还得变呀,你不做客户端的数据验证代码了吗?这问题多着呢,哪儿能那样一劳永逸呀?现在还除了好多代码生成的工具,甚至界面也能靠XML生成了,人都考虑不过来的东西,让工具去考虑,真是的。rnrn我想我们一定是厌倦了在c#里写那么多重复繁琐的sql处理代码了,我们是想把处理sql或者存储过程的这些代码自动化,我们不想为每个存储过程的调用手工创建一大堆参数,然后给参数赋值,然后再调用DAAB执行,还得考虑参数缓存什么的,我们肯定讨厌这些重复工作了,我们想存储过程修改(无论是存储过程本身改变还是从sql的存储过程改变成oracle的存储过程)后我们的数据访问层能自动适应,自动创建参数,自动赋值。如果想这样,就得给存储过程建立元数据,而不是给表建立元数据,表对应的是Object(实际物体,订单啦,产品啦),而存储过程对应的是Action(例如增加或者取消一个订单)或者Service(例如根据某个条件来生成一个DataView)的数据层实现,当然有人说了“随着在存储过程中实现的业务逻辑的增多,存储过程可以简化维护带来的优势会逐渐减弱”,可是那也比纯用Opath这类更高层次的语言来实现数据访问有优势吧,再说了存储过程只封装细粒度的业务逻辑,返回简单处理后的数据,然后由数据层经过复杂处理才提供给业务层的。我估计光Opath也不能完成粗粒度的业务逻辑吧,也得把结构提供给业务层吧?rnrn我设想了一个架构(抄的,不过感觉很灵活):rnMonitorServices:负责监控和跟踪。rnMonitorServicesLogging:负责日志记录和错误处理。rnConfigurationServices:负责配置服务,从.config里读取配置数据。rnCMPServices:提供CMP处理rn这几个项目提供底层服务,微软发布了7中企业开发模块,里面几乎都包含了上面我提到的这些东西(除了最后一个),我感觉我提出的这几个是必要的,比较通用,加密解密和缓存是可选的,有的项目里用不到吧,看项目需要再做添加。rnrn别的好说,微软的企业开发模块里都包括了,在设计模式和实际操作上都给了一些指导,微软好像有视频下载,下载下来看看,理解一下,再参考MSDN的类库开发人员指南,写出自己的类库就行了。rn着中看一下CMPServices类库,在这里执行操作存储过程,首先肯定得有个类负责读取存储过程的元数据,元数据里包括了存储过程的名字,参数的信息,以及对应的业务实体类(业务实体类可以用代码生成器生成再改改),这些元数据放在.config里,如果这些东西改了,调用存储过程的代码自动就改了。而不象petshop里那样为oracle和sqlserver写两个dal层,然后用通过接口和工厂类来确定使用哪个类库,这还算好的,普通的方案的BLL层里调用DAL层的方法的时候用的是RunSqlserverSP(strSP)或者RunOracleSP(strSP)这样的方法,DAL层和BLL层是紧密耦合,这些都属于托管组件持久性(Component Managed Persistence),而我想用的是托管容器持久性(Container Managed Persistence)。当然这个类库里还要设计好几个类来提供业务实体的持久性,简单介绍一下。rnCMPConfigurationHandler:读取.config里的XML数据生成容器映射和命令映射类,并缓存起来。rnCommandMapping:命令映射类,存储过程的名称,参数等,对应一个命令。 rnCommandParameter :存储过程的参数,包括参数的类型,长度,方向等rnContainerMapping :容器映射类。rnContainerMappingSet :一组容器映射类。rnPersistableObject :持久类,和业务实体类差不多。rnPersistableObjectSet 一组业务实体类,如果一个select语句返回1000个记录,与其生成1000个PersistableObject的实例,不如保存在Dataset里。rnStdPersistenceContainer:这是个容器基类,定义实现容器映射的成员,每个容器可以执行CRUD四个命令。rnSqlPersistenceContainer :sqlserver的容器实现类,这里利用反射和XML元数据来建立存储过程元数据和持久类之间的关系。rnrn写业务逻辑层的时候可以实力一个容器,然后调用容器的CRUD命令来执行操作,实际上这就是去执行存储过程了,而存储过程里你再去写更细的逻辑,给CRUD命令传递参数的时候可以把这个容器对应的持久类的实例传进去,然后容器自己就会处理持久类实例的属性和存储过程参数的对应关系。这样就相当于把存储过程包装起来了,也在持久对象和数据库间建立了一个层,但这个层比纯ORM的方案灵活吧,你也不用opath这类晦涩的语言执行关系数据库查询,存储过程你爱怎么写怎么写,只要能灵活应用这种架构,就能适应无穷无尽的业务逻辑。如果数据库变了,至少在数据访问层可以做很小修改就能完成维护工作,改元数据呗,至于由于数据库变化导致的业务层和其它中间层,显示层的改动可以通过其它技巧减少一些,肯定不可能一劳永逸的,我们差完全自动生成代码还远呢,你的基础架构越强大,灵活性就越差我感觉,因为动些越多,耦合性越强,到时候架构功能太多,我想去一项服务也不行,本身就难以维护了,是吧,就象.NET框架,部署的时候还得把它部署进去,20多M的东西,我写一愕几十K的程序得部署一个20多M的框架,我能不生气吗?rnrn别人置疑.NET社区,偶就来置疑一下纯ORM吧,呱呱。rn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭