博文
提高C#编程水平的50个要点(2008-09-08 17:35:00)
摘要:提高C#编程水平的50个要点
1.总是用属性 (Property) 来代替可访问的数据成员
2.在 readonly 和 const 之间,优先使用 readonly
3.在 as 和 强制类型转换之间,优先使用 as 操作符
4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if
5.总是为自定义类重载 ToString 方法
6.区别值类型和引用类型
7.使用不可变的值类型(Immutable Atomic Value Types)
8.在值类型中,确保0是一个合法的数据
9.理解 ReferenceEquals, static Equals, instance Equals 和 比较运算符(==)之间的关系
10.理解 GetHashCode方法的缺陷
11.在编写循环时,优先使用 foreach.
12.在定义变量的时候就将其初始化
13.使用静态构造函数来初始化静态成员变量
14.用多个构造函数时,利用构造函数链
15.使用using和try/finally来处理资源的释放
16.尽量避免产生资源垃圾
17.尽量避免使用装箱(boxing)和拆箱(unboxing)
18.实现类的 Dispose 方法
19.在接口和继承(Inheritance)之间,优先使用接口(interface)
20.区分接口和重载(overrides)
21.用委托(delegate)来实现回调(callback)
22.用事件(event)来定义外部接口
23.避免返回类内部成员的引用
24.使用元数据来控制程序
25.优先使用可序列化(serilizable)类型
26.对需要排序的对象实现IComparable和IComparer接口
27.避免使用 ICloneable接口
28.避免使用类型转换操作符
29.只有当基类加入了与派生类中现有的函数名称相同的函数时,才需要使用 new 操作符
30.尽量使用 CLS-Compliant
31.尽量编写短少,简单的函数
32.尽量编写比较小的程序集(assembly)
33.限定......
用javascript作类似于QQ用户上线的消息提示框,兼容IE7,firefo(2008-07-20 12:22:00)
摘要:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> http://yzrj.programefan.com </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="耗子先生" />
</head>
<body>
<script type="text/javascript">
<!--
document.writeln(" <div id=\"ShowAD\" style=\"position:absolute; z-index: 100;\"> ");
document.writeln(" <div id=\"ImgLayer\" style=\"position:absolute; z-index:1; left: 0px;\"> ");
document.writeln(" <img src=\"http://www.vzhangmen.com/images/200x130.gif\" width=\"200\" height=\"130\" border=\"0\" usemap......
巧妙的利用XHTML中不常用的标签元素(2008-07-20 02:18:00)
摘要:玩XHTML的朋友对div,span,ul,li这样的标签元素相信已经非常熟练了,但有时一个页面里需要对一些特别的文字做一些特别的渲染,我们常用的做法可能是在CSS里定义一个类选择符,定义一些特别的渲染效果,然后用<span class="类名">XXX</span>这样的方法来达到效果,当然是可以的,但才子在这里要介绍另外一种方法,那就是利用一些我们不常用的标签来达到效果。
其实XHTML里还有许多我们并不常用的标签元素,并不是W3C建议放弃使用的标签,而且很短,我们可以好好利用一下。
例如q标签,em标签等等,q标签原本是用来分离引语的,而em标签原本就是表示强调文本的。例如:
<p>我说:<q>“好呀!”</q></p>
<p>我们都是<em>优秀的程序员</em></p>
但我们实际应用中,几乎没人这样用,这么好的短标签浪费了多可惜,嘿嘿。我们来好好利用一下。
例如我们把这个q标签改成加粗的字体,把em标签改成红色加粗的字体,这两个标签以后就当成我们页面中的引起用户注意的强调关键字来用。
怎么做呢?相信大家都想到了,直接在CSS里定义两个标签选择符嘛。对,没错。如下:
q {font-weight:bold;}
em {color:red;font-style:normal;font-weight:bold;}
有人会问em标签里干嘛加个font-style:normal;呢?这是因为默认的em标签的字体是斜体字,所以我们把它改成标准字体。
以后我们应用时就这样:
p>才子喜欢玩<q>XHTML</q>,对网站的<em>前台开发</em>颇有兴趣,欢迎大家有空来逛逛<em><a href="http://www.54caizi.org" title="才子小窝">才子小窝</a></em></p>
这样一来,我们代码也显得更简洁了,代码也变得更短了,何乐而不为呢?
XHTML里还有很多这类型的标签,主要......
access下仿Sql存储过程的分页方案(2008-08-29 13:37:00)
摘要:
CODE:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Web;
/**//**//**//**//**//// <summary>
/// 名称:access下的分页方案(仿sql存储过程)
/// 作者:cncxz(虫虫)
/// from:http://bbs.51aspx.com
/// </summary>
public class AdoPager
{
protected string m_ConnString;
protected OleDbConnection m_Conn;
public AdoPager()
{
CreateConn(string.Empty);
}
public AdoPager(string dbPath)
{
CreateConn(dbPath);
}
private void CreateConn(string dbPath)
{
if (string.IsNullOrEmpty(dbPath))
{
string str = System.Configuration.......
如何学DocNet编程[3](2008-08-30 12:39:00)
摘要: 今天我要回答的是:我们在学习DocNet编程的过程中应该注重那个方面?
在我所看到的学DcoNet编程的学生中,很大一部分都比较努力,其实这是件好事,但我还是有一些怀疑的感受,为什么呢?这里我想讲的是,学习的方法和技巧问题。
我们从人们在数千年的实践过程中,可以看出来,学习和开发科学技术最核心的思想是探索和总结,然而,我们大部分的入门者在这方面却观念比较贫乏,或者说不够重视。换句话说缺少创新意识和创新结果。
当然,这个也不能全责学生们,中国的教育还是有点问题的。中国的广大百姓都当教育是全能的,然而结果却不是这样的。
在我的教学中,我不会很强调学生们一定要跟著我的教学进度来学习,但前提是你必须掌握了我所教的东西。在这个前提下,我会强调我的观念,那就是,你应该具备探索的专研精神和善于总结的概述能力,我会让那些在这方面做出点成绩的学生们进行他们的成果分享,然后重点说明或建议几个问题。
在上一篇文章中,我已说过,独立自主的开发自己的一项系统不尽是锻炼个人的开发能力,更能让自己清楚自己未来的职业规划和倾向。
所以在教学中,我逐步会给学生们相关的技术资料,这些资料就是能帮助和激发学生在学习和开发项目的过程中去发现问题和解决问题,在这我需要说明的是,不要太相信这些资料,但前提是你必须要有自己的实践经验和理论来进行反馈。
总之,除了掌握基本的理论和实践的开发的基础上,我们更应该具备科学的探索精神和善于总结的概述能力的塑造,在技术上,没有创新就是一条死河,没有创新的具体应用就是瞎干活。
......
用三层架构与设计模式思想部署企业级数据库业务系统开发(2008-07-17 16:03:00)
摘要:用三层架构与设计模式思想部署企业级数据库业务系统开发
1关于架构架构这个词从它的出现后,就有许许多多的程序员、架构师们激烈地讨论着它的发展,但是架构一词的出现,却是随着三层架构的出现才出现的。当然,目前应用三层架构开发也正是业界最关注的主题。那么这里我们来看看单层、双层、三层甚至多层架构到底是怎么一回事。单层结构是80年代以来小型应用的结构,在那个结构化编程充斥的时代,还没有出现架构的概念,典型的是基于Dbase、Foxbase等小型数据库的应用。双层结构的同义词可以理解为传统的客户/服务器结构,尽管目前占统治地位的结构,但是其封装移植等方面的缺陷,已使它步入暮年,典型是基于Oracle、Infomix等大型数据库的C/S应用。三层结构是传统的客户/服务器结构的发展,代表了企业级应用的未来,典型的有Web下的应用。多层结构和三层结构的含义是一样的,只是细节有所不同。之所以会有双层、三层这些提法,是因为应用程序要解决三个层面的问题。
1.2三层架构概述随着软件工程的不断进步和规范以及面向对象编程思想的应用,人们对封装、复用、扩展、移置等方面的要求,使得双层架构显然更加臃肿繁琐,三层程序架构体系应运而生,可以说,三层架构体系结构是面向对象思想发展中的必然产物。当然三层架构对于目前来说早已经不是什么新鲜事物了,最早听到这个词应该是几年前使用java知道的吧, j2ee三层架构体系流行了这么多年,一直没有使用过,不过j2ee三层架构体系的提出,对软件系统的架构产生了巨大的影响,Microsoft、Boland这些公司自然不甘落后,例如Microsoft的.net平台,更有甚者,称.net之c#为java的儿子。那么何谓三层架构?所谓三层架构,是在客户/服务之间加入了一个"中间层",也叫组件层。它与客户层、服务器层共同构成了三层体系。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才有三层体系结构,三层是指逻辑上的三层。通过引入中间层,将复杂的商业逻辑从传统的双层结构(Client-Server)应用模型中分离出来,并提供了可伸缩、易于访问、易于管理的方法,可以将多种应用服务分别封装部署于应用服务器,同时增强了应用程序可用性、安全性、封装复用性、可扩展性和可移置性,使用户在管理上所花费的时间最小化,从而实现了便捷、高......
给所有想从事软件研发的年轻工程师的建议(2008-08-05 17:34:00)
摘要:
一.我为什么写这篇文章:
这几天,在某个IT论坛的软件培训与认证栏目中,看到了很多处于迷惑之中的人们,也看到了许多大家普遍感到困惑的问题,写此文章的目的,是想将我这些年在软件行业从业的一些经验和体会讲给大家听,并对大家普遍关心也普遍困惑的问题进行一些阐述,我将尽我最大的可能告诉大家我所理解的事实真相,同时也衷心希望大家能够理智而清晰的看待自己的方向,前途,发展策略等问题,避开自己发展的误区。
我目前在国内一家大型软件公司里做软件开发总监,由于本文中涉及了我个人对一些公司和机构的评论,有好的方面,也有坏的方面,所以我不方便透露太多关于我个人的一些信息;另外由于本人写的比较仓促,加之工作忙碌,也就没有在文字上以及文章结构与逻辑等方面做一些整理,所以可能有些地方看起来有些乱。我想乱与不乱都是次要的,关键是,我希望我的这篇文章能够让大家将一些事情看透,从而防止自己在软件行业内走入误区,以便能够在软件行业取得更大的发展与进步。
二.该怎样规划自己的技术发展方向以及人生发展的总体思路?
1) 要永远相信“物以稀为贵”,我这些年的经历发现,现实中有很多软件工程师存在严重的“跟风”行为,也就是:只要市场上或者媒体上对某个领域或潮流进行“吵作”就无形中引导着这些工程师的学习方向与学习行为。如果我们纯粹以发展前景与“钱景”作为个人技术发展方向的衡量标准的话,则一个普遍的规律是:跟上最流行的技术并不一定拿到高薪;大家可以看到,同样是用C++编程语言开发软件,在Windows平台下的VC工程师,要比Unix平台下的C++工程师明显薪水低一档,为什么?原因就是一个公司可以在人才市场上很容易找到会VC的工程师,但找到有Unix平台下的C++软件系统开发经验的工程师相对要难找的多;
2) 中国软件市场是典型的内需驱动型的市场,所以中国的软件公司需要不同领域的软件开发工程师,而且不同领域的软件开发工程师在薪水方面有很大的差别,在个人职业方展过程中应“随需应变”
3) 不要局限于技术,一个人在自己事业上的成功或者说狭隘的说是个人财富的积累是一个人的“资源整合能力”的综合结果,而绝对不是一个人的技术能力单方面决定着的;在过去的经历中,我遇到了太多的“头脑聪明,技术高超”年轻工程师,他们在技术领域很聪明,但是缺乏在公司具体的人际关系环境下生存的“基本人际关系网络”管理能力......
如何学DocNet编程[2](2008-08-30 12:39:00)
摘要: 今天回答的是:我们本身那些知识掌握的不够?
在回答这个问题之前,我先说明一下,知识的掌握够与不够是个很容易混淆的词语。如果光说技术上的先进性和非要跟紧潮流的话,那一个人一生能掌握的知识结果也是片面的,为什么呢,个人的精力绝对是有限的,积累和掌握知识都是一个相对性的。
所以,今天我所发表的意见是界定在入门与初步工作的范围。
简而言之就是我们在正式工作之应该具备什么样的技术知识。根据自己学习和工作的经验来看,学DocNet web编程,最基础的知识:C + C# +sql编程+算法与逻辑结构,这一部分知识需要掌握到什么样的程度才好呢,应该具备解决一般的现实问题。只要这一关能告以段落,那接下来就开始面向对象web编程吧。
然而web编程却是个大的学问,前面说了,入门容易,做好很难。在这主要是从单纯的技术上解释它。web编程单从DocNet上来说,它的技术分类很多,要学的知识也很多。我在这里简单的介绍一下,总的来说分两大类:一是界面开发类,二是业务逻辑编写类。
界面开发类所要积累的编程知识和开发工具就目前来说有:掌握编程 html ,css,javascript ,actionscript,vbscript,Ajax以及一般的控件设计和使用;掌握工具 photoshop,dreamweaver,vs2005,flash等等
业务逻辑编写类所要积累的编程知识和开发工具就目前来说有:掌握编程 C,C#,数据结构,Asp.Net,Asp,Sql,XML等;掌握软件工程:模式与架构,性能测试,代码测试,数据挖掘,编档等;掌握工具VS,dreamweaver,sql Server,oracle,UML等
从上面简单的解释来看,好像需要的掌握的东西比较多,那么我们应该掌握多少才能说明我们到入职的层次呢,这才是今天我们讨论的重点。
实际上,我们不必关心我们要掌握上面所有的知识,我们只关心我们要做出一个项目来所必须要掌握的东西就行,在上岗之前的知识积累,我建议一个项目一个人独立完成,这样一来,你会发现自己的开发方向及将来职业的倾向,不能单方面理解是锻炼个人能力。
总之,基本的计算机知识掌握后,你就能适应和承担基本的工作任务,其后的职业理想的实现......
C#书写规范(2008-07-17 00:04:00)
摘要:C#书写规范
一、命名
对于理解应用程序的逻辑流,命名方案是最有影响力的一种帮助。名称应该说明“什么”而不是“如何”。通过避免使用公开基础实现(它们会发生改变)的名称,可以保留简化复杂性的抽象层。例如,可以使用 GetNextStudent(),而不是 GetNextArrayElement()。
命名原则是:
选择正确名称时的困难可能表明需要进一步分析或定义项的目的。使名称足够长以便有一定的意义,并且足够短以避免冗长。唯一名称在编程上仅用于将各项区分开。表现力强的名称是为了帮助人们阅读;因此,提供人们可以理解的名称是有意义的。不过,请确保选择的名称符合适用语言的规则和标准。
以下几点是推荐的命名方法。
1、方法、属性、变量规范
避免容易被主观解释的难懂的名称,如方面名 AnalyzeThis(),或者属性名 xxK8。这样的名称会导致多义性。
在面向对象的语言中,在类属性的名称中包含类名是多余的,如 Book.BookTitle。而是应该使用 Book.Title。
使用动词-名词的方法来命名对给定对象执行特定操作的例程,如 CalculateInvoiceTotal()。
在允许函数重载的语言中,所有重载都应该执行相似的函数。
只要合适,在变量名的末尾或开头加计算限定符(Avg、Sum、Min、Max、Index)。
在变量名中使用互补对,如 min/max、begin/end 和 open/close。
鉴于大多数名称都是通过连接若干单词构造的,请使用大小写混合的格式以简化它们的阅读。另外,为了帮助区分变量和例程,请对例程名称使用 Pascal 大小写处理 (CalculateInvoiceTotal),其中每个单词的第一个字母都是大写的。对于变量名,请使用 camel 大小写处理 (documentFormatType),其中除了第一个单词外每个单词的第一个字母都是大写的。
布尔变量名应该包含 Is,这意味着 Yes/No 或 True/False 值,如 fileIsFound。
在命名状态变量时,避免使用诸如 Flag 的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值。不是使用 documentFlag,而是使用更具描述性的名称,如 documentFormatType。 (......
如何学DocNet编程[1](2008-08-30 12:38:00)
摘要: 我在这里想说点,关于如何学.net编程问题.我的出发点是针对那些在校计算机专业的自学爱好人士.
经过一段时间教学来看,我发现了一些在学.net方面的学生有以下几种情况.
1,C基础扎实,数据结构知识掌握不错的这方面的学生,学习起来比较轻松。
2,C基础一般,数据结构也一般前期掌握起来比较困难,但到后面也很不错。
而.net本身是怎么样的呢,一般人都清楚,入门容易,但做的好却很难。事实上,也是这样的。但为什么学好却很难呢,这里的难到底难在什么地方?我们本身那些知识掌握的不够?我们在学习应该注重那个方面?我们能估计将来的职业成效?
今天早上,我们解决第一个问题,就是难在什么地方?
学计算机的,最难的地方是自己不动手,不思考,不总结。这是我给我的门生下的结语!
从知识积累来看,在入门之前有扎实的C和数据结构知识固然很好,但如果因此而不求上进,不多敲下键盘,那他还是觉得这个技术难。相反!一个计算机基础为0的学员如果能比别的同学每天能在计算机前多呆1hour的话,并且坚持下去,他却很容易成功,成为计算机高手!难与不难都是相对的,人们在几千年的实践中得到很多智慧,那就是对成功从来不奢望,对失败从来不失望。但对现实却充满希望,因为每天每人的时间是公平的,而能抓住时间的提高成功机率的却是那些朴实的劳动者和那些站在最平凡岗位的人。
请网友朋友们继续阅读(
如何学DocNet编程[2]
):http://blog.programfan.com/article.asp?id=36756......