Best Practices for Exception Handling
摘要:原文:http://onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1One of the problems with exception handling is knowing when and how to use it. In this article, I will cover some of the best practices for exception handling. I will also summarize the recent debate about the use of checked exceptio
阅读全文
posted @
2011-08-31 23:25
Angelo Lee
阅读(146)
推荐(0)
C# Code Review Checklist
摘要:Ted GraHam 提到了39 条 CheckList, 我觉得还是总结的挺全面.Are exceptions used to indicate error rather than returning status or error codes?使用异常来只是错误而不是使用状态或者错误代码值 Are all classes and public methods commented with .NET style comments?? Note that comments should discuss the "what" of public methods.? Discu
阅读全文
posted @
2011-08-31 09:18
Angelo Lee
阅读(495)
推荐(0)
C# Code Reviews using StyleCop
摘要:Table of ContentsIntroductionC# Code Reviews using StylecopComparing FXCOP with StyleCopIssue of Code Review using FXCOPStyleCop Code Parsing LogicMaking the Custom Rules ClassLet Us Do Something PracticallyIntroductionIn this article, we will discuss an upcoming code review tool StyleCop. We will u
阅读全文
posted @
2011-08-30 15:13
Angelo Lee
阅读(327)
推荐(0)
Asp.Net中global.asax文件的描述
摘要:Global.asax文件的作用:1.定义Application级别,Session级别的变量,对象和数据;2.定义在Application中的,基于Application,Session的事件;定义Application,Session级别的变量:使用Application对象来定义Application范围的变量,使用Session对象定义Session范围的变量。//设置变量Application("myApplicationScopeVar")="MyValue";Session("mySessionScopeVar")=&q
阅读全文
posted @
2011-08-30 09:37
Angelo Lee
阅读(152)
推荐(0)
Log And Exception Practice
摘要:1 log1.1 用log.error表示系统级错误1.2 用log.warn表示应用级错误1.3 服务初始化或结束用log.info1.4 用log.debug替代out,debug要判断isDebugEnable1.5 用log.warn("",e)替代e.printstack1.6 用log4e生成log相关代码1.7 Log信息要保证可读性,需记录现场信息,如当前处理id等2 exception2.1 try catch内的代码不要太长2.2 因为性能原因,try catch少放循环内2.3 尽量避免catch(Exception)这样的写法2.4 不同模块定义不同
阅读全文
posted @
2011-08-20 21:38
Angelo Lee
阅读(160)
推荐(0)
Managing Unhandled Exceptions in .NET
摘要:IntroductionOne of the things that impressed me when I first started learning .NET was its enhanced exception-handling functionality. By this I mean such features as easy access to the type of exception thrown, full stack trace and inner exceptions. This makes it easy to still get full information i
阅读全文
posted @
2011-08-20 19:58
Angelo Lee
阅读(231)
推荐(0)
Exception Handling Best Practices in .NET
摘要:ContentsIntroductionPlan for the worstCheck it earlyDon't trust external dataThe only reliable devices are: the video, the mouse and keyboard.Writes can fail, tooCode SafelyDon't throw new Exception()Don't put important exception information on the Message fieldPut a single catch (Except
阅读全文
posted @
2011-08-20 19:54
Angelo Lee
阅读(145)
推荐(0)
代码的坏味道,重构,模式
摘要:读完《重构——改善既有代码的设计》和《重构与模式》,有了些许感想,先与大家分享一下。当我们已经对设计模式倒背如流时,却往往发现在实际代码编写中有生搬硬套的感觉。设计模式是前人经验的总结,直接拿来用合不合适呢?这让我想起了大学一位老师告诉我们的一条学习的道路“知识,理论,智慧”。设计模式是很一种优雅的“智慧”,但对于我们初学者来说还仅仅是留存于文字的“知识”。把“知识”融合到自己的开发中,在不断探索和总结中形成自己“理论”,再应用到实际中,那么这才是是真正属于我们自己的“智慧”。重构恰恰是由“知识”到“理论”的必经之路,而书中的各种重构方法无疑是这条路上清晰的路标。代码的坏味道大家一看都不会陌生
阅读全文
posted @
2011-08-20 18:15
Angelo Lee
阅读(209)
推荐(0)
Globalization
摘要:本地化、全球化、国际化测试的概念I18N--是“Internationalization”的缩写,由于“Internationalization”单词较长,所以为了书写简便,通常缩写为“I18N”。中间的 18 代表在首字母“I”和尾字母“N”之间省略了 18 个字母。单词“Internationalization”翻译成中文是“国际化”的意思-是使产品或软件具有不同国际市场的普遍适应性,从而无需重新设计就可适应多种语言和文化习俗的过程。真正的国际化要在软件设计和文档开发过程中,使产品或软件的功能和代码设计能处理多种语言和文化习俗,具有良好的本地化能力。G11N-- 是“Globalizati
阅读全文
posted @
2011-08-20 18:04
Angelo Lee
阅读(1098)
推荐(0)
Refactoring
摘要:What Refacing:重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。经典的Refacing Definition:(1)Refactoring means rewriting existing source code with the intent of improving its design rather than changing its external behavior. The focus of refactoring is on the structure o
阅读全文
posted @
2011-08-18 22:46
Angelo Lee
阅读(270)
推荐(0)
结对编程的利与弊
摘要:结对编程(Pair-Programming)可能是近年来最为流行的编程方式。所谓结对编程,也就是两个人写一个程序,其中,一个人叫Driver,另一个人叫Observer,Driver在编程代码,而Observer在旁边实时查看Driver的代码,并帮助Driver编程。并且,Driver和Observer在一起时可以相互讨论,有效地避免了闭门造车,并可以减少后期的code review时间,以及代码的学习成本。有实验证明,平均下来,结对编程所花费的时候比单人编程增加了10%,但也会比单人编程减少15%的代码BUG。如果再算上后期代码的维护和学习成本,结对编程比单人编程更有效率,还更为节省成本。
阅读全文
posted @
2011-08-17 22:28
Angelo Lee
阅读(138)
推荐(0)
如何写出无法维护的代码
摘要:酷壳里有很多我觉得很不错的文章,但是访问量最大的却是那篇《6个变态的Hello World》,和它能在本站右边栏“全站热门”中出现的还有“如何加密源代码”,以及编程真难啊等这样的文章。可见本站的读者们的偏好,我也相信你们都是“身怀绝技”的程序员。所以,今天给大家推荐这篇文章,相信一定能触动大家的兴奋点。这篇文章的原文在这里(http://mindprod.com/jgloss/unmain.html),我看完后我想说——什么叫“创造力”,创造力就是——就算是要干一件烂事都能干得那么漂亮那么有创意的能力。什么叫“抓狂”,抓狂就是——以一种沉着老练的不屈不挠的一本正经的精神一点一点把你推向崩溃的边
阅读全文
posted @
2011-08-17 21:55
Angelo Lee
阅读(127)
推荐(0)
怎样做一个 Program Manager
摘要:我个人认为,这是一篇不错的文章,虽然我不是Program Mananger,但是我几乎在做着和这个职位很相似的工作。在这里,我把这篇文章推荐给所有的程序员,我相信,这篇文章会让你明白,只有技术是远远不够的,因为没有Program Manager这个角色,程序员们只不过一些手中拿着利器却不知所措的散兵游勇。我希望我的导读和原文能给所有的程序带来启示。原文在这里:“How to be a program manager”http://www.joelonsoftware.com/items/2009/03/09.html这篇文章的作者叫Joel Spolsky,在Microsoft做过Progra
阅读全文
posted @
2011-08-17 21:54
Angelo Lee
阅读(160)
推荐(0)
非常不错的编程技术教程
摘要:下面是一些非常不错的编程教程,当然,全是英文版的。不过因为是新手教程,所以非常容易阅读,可以在学习技术的同时加强一下自己的英语阅读能力。如果你是一个新手,建议你把本页设为你的收藏夹。CIntroduction to C ProgrammingC Optimization TutorialCompiling C and C++ Programs on UNIX Systems- gcc/g++Building and Using Static and Shared C LibrariesProgramming in C: UNIX System Calls and Subroutines Usi
阅读全文
posted @
2011-08-17 21:52
Angelo Lee
阅读(145)
推荐(0)
Top 200的全球开发者BLOG
摘要:本文源自这里,文中列出了全球前200名的开发者的BLOG。有的可能你很熟悉,有的你可能还不知道。这些BLOG的排名通过查看,Google PageRank,Technorati Authority,Alexa Rank, Google links, Twitter Grader Rank等等,形成的综合排名。如果你对此感兴趣的话,你可以看看这篇文章——《如何制作一个Blog排名》下面是前200名的排名。希望对那些有日常浏览Blog习惯的人有帮助。大家可以下载更为详细的Excel表格。本排名截止至:2009年第二季度其中:TT = This Time 本次名次LT = Last Time 上次名
阅读全文
posted @
2011-08-17 21:05
Angelo Lee
阅读(253)
推荐(0)
程序员犯的非技术错误
摘要:对于程序开发者来说,有两种技术需要我们掌握,一个是技术上的能力,另一个是非技术上的能力。不幸的是,许多程序员过多地关注了技术上的能力,而忽略了非技术上的能力的培养,因此,我们的程序员们经常会有一些很不好的习惯,这里我们例举了程序员们最常犯的5个非技术的错误,与大家共勉。1.- 缺乏团队纪律“Discipline is the bridge between goals and accomplishment.” Jim Rohn.纪律是一个最有价值的技能,不仅仅只是在软件开发领域,同样在其它领域也是一样的。但对于现实来说,我们很难找到即有才华又有纪律的人。这正如足球队一样,非洲的球员们才华相当的出
阅读全文
posted @
2011-08-17 21:01
Angelo Lee
阅读(119)
推荐(0)
质量管理经中的八个法则
摘要:质量管理在软件工程中是非常非常重要的一个环节,无论你有多么精妙的算法,或是使用了多么先进的技术,还是拥有了多少强的设计,在质量控制或质量管理面前,这些都可能什么都不是。这里,有一些质量管理的法则,可以让软件的用户从中受益。如果对质量管理一言以蔽之:面对一个长期不断需要改善的软件,当其用户或是管理者们来说,他们对某个组织所提供的标准有一种完全和最基本的信任。下面,我们给出8个质量管理的法则:1. 始终从用户角度出发: “无论何时何地,我们都需要明白用户当前的或未来的需求,并能够达到用户的需求,甚至超出用户的期望。”这是整个软件工程的重中之重。质量管理从某种意义上来说,就是实现用户需求的质量的管理
阅读全文
posted @
2011-08-17 20:42
Angelo Lee
阅读(217)
推荐(0)
Code Review
摘要:Why Code Reivew:浅层次的Code Review是基于代码规范的,代码规范是通过可读性、易修改性来解决团队协作、提升项目可维护性。深层次的Code Review会检查技术和业务逻辑实现的正确、优雅性,类似于黑盒测试。Code reviews 通过大家的建议增进代码的质量。Code reviews 是一个传递知识的手段,可以让其它并不熟悉代码的人知道作者的意图和想法,从而可以在以后轻松维护代码。Code reviews 鼓励程序员们相互学习对方的长处和优点。Code reviews 确认自己的设计和实现是否清楚和简单。我们没有提到可以帮助找到程序的bug和保证代码风格和编码标准。这
阅读全文
posted @
2011-08-17 20:31
Angelo Lee
阅读(325)
推荐(0)
Fix Bug的五个阶段
摘要:一个非常严重和困难的bug,能够成就一个饱经沧桑深受压力的有经验的专业程序员的职业生涯。经受这种考验的创伤程度,相当你受到了一次严重的身体伤害,离婚,或是家庭成为的离世。研究人员在研究了计算机编程心理学后,得出了一个程序员们在解决一个困难的bug时的心路里程。这些不同的境界,很像为大众所知的Kübler-Ross Stages of Grief(这个模型描述了人对待哀伤与灾难过程中的5个独立阶段(否认,愤怒,耍赖,抑郁,接受)。绝症患者被认为会经历这些阶段),而且原因都很相似。就好像死亡所伴随的悲伤一样,fix一个bug是一个过程其初始化了一个事件,一开始是拒绝相信,其造就了你苦闷的
阅读全文
posted @
2011-08-17 19:28
Angelo Lee
阅读(271)
推荐(0)
版本控制Subversion相关资源
摘要:入门教程Subversion Cheat Sheet(PDF version)The Subversion BookSubversion Official DocumentationSVN 1-Click SetupSubversion客户端Tortoise SVN (Windows only)Cornerstone (Mac only)WorkbenchSmartSVNVersions (Mac only)SubclipseSubcommanderFSVS“Fast System Versioning”,Syncro SVN Clientscplugin (Mac only)iPhone S
阅读全文
posted @
2011-08-17 19:24
Angelo Lee
阅读(160)
推荐(0)
Extended WPF Toolkit 新控件介绍
摘要:Extended WPF Toolkit 可以说是WPF Toolkit 的一个补充,也包含了许多WPF 控件供开发者使用。本篇将介绍Extended WPF Toolkit 1.4.0 中新增的一些控件。安装Extended WPF Toolkit Extended WPF Toolkit 安装其实很简单,利用nuget 可以快速将控件库添加到项目中。右键References 选择“Add Library Package Reference...”在搜索框中输入"Extended WPF Toolkit"名称即可找到控件库,点击“Install” 安装。在XAML 中加入
阅读全文
posted @
2011-08-17 19:14
Angelo Lee
阅读(806)
推荐(1)
简单实用的Code Review工具
摘要:Code Review中文应该译作“代码审查”或是“代码评审”,这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法。由此,我们可以审查代码的风格、逻辑、思路……,找出问题,以及改进代码。因为这是代码刚刚出炉的时候,所以,这也是代码重构,代码调整,代码修改的最佳时候。所以,Code Review是编码实现中最最重要的一个环节。长时间以来,Code Review需要有一些有效的工具来支持,这样我们就可以更容易,更有效率地来进行代码审查工作。下面是5个开源的代码审查工具,他们可以帮助你更容易地进行这项活动。1. Review board:Revie
阅读全文
posted @
2011-08-17 19:13
Angelo Lee
阅读(345)
推荐(0)
C# Dictionary Examples, Keys and Values
摘要:You want to use Dictionary in your C# program for constant lookup times and to associate keys with values. Look at some examples of using Dictionary with Keys and KeyValuePair, as well as with classes and methods. This document has tips and examples for using Dictionary with keys and values using th
阅读全文
posted @
2011-08-17 19:13
Angelo Lee
阅读(549)
推荐(0)
[SCM]源码管理 - 简介
摘要:一 源码管理工具源码管理(SCM/Source Code Management),也称为版本控制系统(VCS/Version Control System)。1)为什么我们需要SCM/VCS 1. 备份和恢复:源码是软件公司的财富,备份和恢复用来防止意外的损失;2. 同步:同一项目中多程序员间实现代码的共享和同步;3. 短期的撤销:通常的如果某个开发人员的提交导致了break,则可以撤销导致break的提交;4. 长期的撤销:如果某个BUG是很久以前的提交导致,则可以撤销到当时提交的版本来debug;5. 跟踪改变:每次改变的提交都有注释,改变的历史会被保存,我们还可以看到提交的时间,作者等信
阅读全文
posted @
2011-08-17 19:13
Angelo Lee
阅读(619)
推荐(0)
Some Software Design Principle
摘要:Principles Of Object Oriented DesignLink:http://www.surfscranton.com/architecture/ObjectOrientedDesignPrinciples.htmDon’t Repeat Yourself (DRY)DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些合适的参数调用这个
阅读全文
posted @
2011-08-17 19:05
Angelo Lee
阅读(154)
推荐(0)
Code Annotation
摘要:好的注释风格:一、注释Why注释应该是注释Why,而不是How和What。代码告诉你How,而注释应该告诉你Why。但大多数的程序并不知道什么是好的注释,那些注释其实和code是重复的,毫无意义。应该避免的代码注释一、自恋型注释public class Program
{ static void Main(string[] args) { string message = "Hello World!"; // 07/24/2010 Bob Console.WriteLine(message); // 07/24/2010 Bob ...
阅读全文
posted @
2011-08-17 18:52
Angelo Lee
阅读(239)
推荐(0)
API Hook完全手册
摘要:文章来源: http://blog.csdn.net/atfield原文作者: ATField整理日期: 2008-07-16注:本文是根据我两年前写的一个系统行为监测程序写成(参考了一些书籍和文章)。最近在论坛上看到有不少人在问关于API Hook的问题,便写成此文,希望能对朋友们在写API Hook代码的时候能够有所帮助。1 基本原理API Hook是什么我就不多说了,直接进入正题。API Hook技术主要有下面的技术难点:1. 如何将自己的的代码Inject到其他进程2. 如何Hook到API1.1 代码的Injection常用的方法有:1. 使用注册表HKLM\Softwa...
阅读全文
posted @
2011-08-15 14:05
Angelo Lee
阅读(178)
推荐(0)
The S.O.L.I.D. Object Oriented Programming(OOP) Principles
摘要:IntroductionWhat does it take to be an Object Oriented Programmer? There was a time where I believed all that meant was that you worked with a language such as C#, C++, or Java. However, the more I get acquainted with newer technologies, the more I realize that there is a set of fundamentals core to
阅读全文
posted @
2011-08-12 23:24
Angelo Lee
阅读(184)
推荐(0)
OO设计的开闭原则
摘要:The Open-Closed Principle (OCP) - OO设计的开闭原则Software entities (classes, modules, function, etc.) should be open for extension, but closed for modification.软件实体(模块,类,方法等)应该对扩展开放,对修改关闭。 开闭原则(OCP:Open-Closed Principle)是指在进行面向对象设计(OOD:Object Oriented Design)中,设计类或其他程序单位时,应该遵循:- 对扩展开放(open)- 对修改关闭(closed)
阅读全文
posted @
2011-08-12 23:12
Angelo Lee
阅读(277)
推荐(0)
OO设计的里氏替换原则
摘要:Liskov Substitution Principle (LSP) - OO设计的里氏替换原则里氏替换原则LSP的概念解说Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.所有引用基类的地方必须能透明地使用其子类的对象。也就是说,只有满足以下2个条件的OO设计才可被认为是满足了LSP原则:- 不应该在代码中出现if/else之类对子类类型进行判断的条件。以下代码就违反了LSP定义。if (obj
阅读全文
posted @
2011-08-12 23:11
Angelo Lee
阅读(206)
推荐(0)
OO设计的依赖倒置原则
摘要:Dependency Inversion Principle (DIP) - OO设计的依赖倒置原则该文提出了依赖倒置原则的2个重要方针:A. High level modules should not depend upon low level modules. Both should depend upon abstractions.B. Abstractions should not depend upon details. Details should depend upon abstractions.中文意思为:A. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象B. 抽象不应该
阅读全文
posted @
2011-08-12 23:09
Angelo Lee
阅读(193)
推荐(0)
OO设计的接口分隔原则
摘要:nterface Segregation Principle (ISP) - OO设计的接口分隔原则概要Clients should not be forced to depend upon interfaces that they do not use.不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。它包含了2层意思:- 接口的设计原则:接口的设计应该遵循最小接口原则,不要把用户不使用的方法塞进同一个接口里。如果一个接口的方法没有被使用到,则说明该接口过胖,应该将其分割成几个功能专一的接口。- 接口的依赖(继承)原则:如果一个接口a依赖(继承)另
阅读全文
posted @
2011-08-12 23:05
Angelo Lee
阅读(291)
推荐(0)
OO设计的单一职责原则
摘要:Single Responsibility Principle (SRP) - OO设计的单一职责原则概要There should never be more than one reason for a class to change.永远不要让一个类存在多个改变的理由。换句话说,如果一个类需要改变,改变它的理由永远只有一个。如果存在多个改变它的理由,就需要重新设计该类。SRP(Single Responsibility Principle)原则的核心含意是:只能让一个类有且仅有一个职责。这也是单一职责原则的命名含义。为什么一个类不能有多于一个以上的职责呢?如果一个类具有一个以上的职责,那么就
阅读全文
posted @
2011-08-12 22:56
Angelo Lee
阅读(197)
推荐(0)
URL特殊字符需转义
摘要:URL中一些字符的特殊含义,基本编码规则: 1、空格换成加号(+) 2、正斜杠(/)分隔目录和子目录 3、问号(?)分隔URL和查询 4、百分号(%)制定特殊字符 5、#号指定书签 6、&号分隔参数 转义字符的原因:如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如表单的action为list.jsf?act=go&state=5则提交时通过request.getParameter可以分别取得act和state的值。如果你的本意是act='go&stat
阅读全文
posted @
2011-08-12 22:33
Angelo Lee
阅读(488)
推荐(0)
系统host文件的使用
摘要:一 Host文件的作用:系统中的host文件其实是一个纯文本的文件,它的作用是包含IP地址和Host name(主机名)的映射关系。我们知道在网络上访问网站,要首先通过DNS服务器把网络域名(http://www.xxxx.com/)解析成61.XXX.XXX.XXX的IP地址后,我们的计算机才能访问。要是对于每个域名请求我们都要等待域名服务器解析后返回IP信息,这样访问网络的效率就会降低,而Hosts文件就能提高解析效率。系统在进行DNS请求以前,会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用这个IP地址映射,如果没有再向已知的DNS 服务器提出域名解析。也就是说Host
阅读全文
posted @
2011-08-05 13:56
Angelo Lee
阅读(231)
推荐(0)
浅谈HOOK
摘要:摘要: 本文针对HOOK技术在VC编程中的应用进行讨论,并着重对应用比较广泛的全局HOOK做了阐述。 一、引言 Windows操作系统是建立在事件驱动机制之上的,系统各部分之间的沟通也都是通过消息的相互传递而实现的。但在通常情况下,应用程序只能处理来自进程内部的消息或是从其他进程发过来的消息,如果需要对在进程外传递的消息进行拦截处理就必须采取一种被称为HOOK(钩子)的技术。钩子是Windows操作系统中非常重要的一种系统接口,用它可以轻松截获并处理在其他应用程序之间传递的消息,并由此可以完成一些普通应用程序难以实现的特殊功能。基于钩子在消息拦截处理中的强大功能,本文即以VC++ 6.0为..
阅读全文
posted @
2011-08-03 15:55
Angelo Lee
阅读(288)
推荐(0)