代码改变世界

我有2个Windows Live Messenger的邀请。

2006-01-14 13:38 by Colin Han, 497 阅读, 0 推荐, 收藏, 编辑
摘要:前几天在Channel9上得到了别人的邀请,可以试用微软新的IM系统——Windows Live™ Messenger,MSN Messenger的升级版。现在,我有2个邀请可以送出。如果有人想要,可以在下面跟贴,留下你们的Hotmail或MSN邮箱地址。 阅读全文

[Bug] .NET 2.0 的Bug —— ComboBox中不能添加Component.

2006-01-13 16:34 by Colin Han, 1784 阅读, 0 推荐, 收藏, 编辑
摘要:按照ComboBox的设计,我们可以在ComboBoxItemCollection中添加任何对象。同时,ComboBox使用DisplayMember属性来决定在列表中如何显示这些对象。例如:下面的语句可以将几个TextBox的Text显示在ComboBox的DropDown列表中。publicvoidAddItem(){comboBox1.Items.Add(this._textBox1);co... 阅读全文

[WPF]WPF中如何实现数据与表示分离。(一) —— XAML

2006-01-05 14:40 by Colin Han, 5054 阅读, 0 推荐, 收藏, 编辑
摘要:软件复用一直是现代软件工程所追求的目标。提高软件复用性的一个关键点就是“数据与表示分离”(表示:数据的展示方式)。这个系列文章将以“如何分离数据与表示”做为主线,能够概要的介绍一些在WPF中引入的新的编程技术和概念。在这个系列里面,我们将使用Kevin Moore的ColorPicker作为一个例子,通过逐渐深入的引入WPF中的新概念,来演示这些新概... 阅读全文

[WinFX]WinFX 12月份CTP发布,其中包含了XAML设计器

2005-12-21 13:54 by Colin Han, 2018 阅读, 0 推荐, 收藏, 编辑
摘要:WinFX 12月份CTP发布,这一次发布和以前CTP不同的是其中包含了Orcas,一个XAML所见即所得的编辑器。感兴趣的朋友们可以到下面的网址下载试用。WinFX Runtime Componentshttp://www.microsoft.com/downloads/details.aspx?familyid=BD3BA2D5-6ADB-4FB2-A3AA-E16A9EA5603F&... 阅读全文

[VS2005]Bug or Design?

2005-12-09 13:14 by Colin Han, 1269 阅读, 0 推荐, 收藏, 编辑
摘要:在VS2005以前的版本,如果我们调用下面的逻辑//Form中包含一个ComboBoxControl。publicvoidForm_Load(objectsender,EventArgse){this.comboBox1.DropDownStyle=DropDownStyle.DropDown;//注意不是DropDownList.this.comboBox1.Items.Add("Test1")... 阅读全文

人生小故事,看完后想十秒钟,你会获益匪浅

2005-12-08 14:18 by Colin Han, 502 阅读, 0 推荐, 收藏, 编辑
摘要:今天看到一篇开心就好的帖子,感触很多。我没有开心那么好的文笔,又想说些什么。引用一篇以前看过的文章,大家共厉吧! 有一对兄弟,他们的家住在80层楼上。有一天他们外出旅行回家,发现大楼停电了!虽然他们背着大包的行李,但看来没有什么别的选择,于是哥哥对弟弟说,我们就爬楼梯上去!于是,他们背着两大包行李开始爬楼梯。爬到20楼的时候他们开始累了,哥哥说“包包太重了,不如这样吧,我们把包包放在这里... 阅读全文

对于最近一段时间热门的新技术的感想

2005-09-26 16:37 by Colin Han, 1898 阅读, 0 推荐, 收藏, 编辑
摘要:上一周是一个新技术周,PDC 2005和中国Tech.ED两大微软技术大会都在这一周进行。一些新的技术也开始在开发人员中活跃起来。C#3.0, VB 9.0, WPF, WCF, WWF, LINQ 等等。我认为今年是新一轮技术周期的开始,因此在未来的几年,我们有很多的机会。我们需要更多的关注这些新技术的走向,从而乘坐下一轮技术的快车,实现更高的发展。 关于这些新技术,我在其中发现了几个关键词... 阅读全文

[Avalon] Avalon中的Conditional Formatting.

2005-08-22 20:52 by Colin Han, 1244 阅读, 0 推荐, 收藏, 编辑
摘要:大家应该都知道Excel中的Conditional Formatting的功能吧。我们可以设置一些条件,当条件满足时修改格子的格式信息。 例如:一个学生成绩表中,我们可以设置当学生成绩低于60分时,将文字颜色改为红色。 如果我们要在我们的应用程序中实现这样的功能,就必须写比较多的代码。但是,在Avalon中集成了对此项功能的支持。下面是一个XAML描述。 ... 阅读全文

[FxCop.性能规则]1. 避免调用需要Unboxing

2005-08-10 21:20 by Colin Han, 1936 阅读, 0 推荐, 收藏, 编辑
摘要:1. 避免调用需要Unboxing 翻译概述: 在Java和C#中,所有的数据类型都是从System.Object继承来的,包括数值型类型。这样的设计使我们可以用相同的方式处理引用类型和值类型。从而为我们提供了很大的灵活性,实现更加通用的算法。 但是,将所有数据都放在堆中进行管理无疑会降低程序的性能。因此,C#(包括Java)中都将数据类型分为值类型和引用类型,在常规状态下,值类型局部变量... 阅读全文

[Avalon]如何实现自定义MarkupExtension.

2005-08-10 13:41 by Colin Han, 1505 阅读, 0 推荐, 收藏, 编辑
摘要:在Avalon中,微软提供了对XAML扩展的功能——MarkupExtension。按照文档以及参考了Binding,NullExtension类的实现,我认为只要自定一个类型从MarkupExtension类型继承,实现其中的抽象方法,就可以再XAML中使用如下的语法进行引用。类型定义: using System.Windows.Serialization;namespace MarkupEx... 阅读全文

[FxCop.设计规则]16. 不要在封闭类中声明虚成员

2005-08-08 20:04 by Colin Han, 1007 阅读, 0 推荐, 收藏, 编辑
摘要:16. 不要在封闭类中声明虚成员 翻译概述: 一条比较无聊的规则,并且VB.NET和C#编译器都已经内嵌的禁止代码违反这条规则。 引起的原因: 一个公共的封闭类型中包含虚成员。这条规则不检查delegate类型。因为delegate肯定符合这条规则。 描述: 一个类型声明虚成员是为了它的继承类型可以重载虚成员的实现。但是,你不能继承一个封闭类型。因此声明封闭类型的虚成员是没有意义的。 ... 阅读全文

[FxCop.设计规则]15. 不要在范型类中声明静态成员

2005-08-01 20:37 by Colin Han, 1977 阅读, 0 推荐, 收藏, 编辑
摘要:15. 不要在范型类中声明静态成员 翻译概述: 又是一个关于范型的规则。据说微软公司开始很反对将范型引入到C#语言中来,认为范型会严重的影响代码的易理解性。但是范型所提供的强大功能,以及它确确实实提高了开发效率和降低了维护成本。在.NET 2.0中,微软不得不将范型的概念引入到C#中来。 但是范型过于强大的语法能力确确实实影响了代码的可读性,因此微软在C#中对标准C++中的范型语法作了裁减... 阅读全文

什么是Avalon的“思想”?

2005-07-23 18:15 by Colin Han, 1636 阅读, 0 推荐, 收藏, 编辑
摘要:最近一直在考虑一个问题,什么是Avalon的“思想”?XAML?xaml可以说是Avalon的一个核心部分,Avalon中的大多数设计都在其中得到了体现。但是它是Avalon的“思想”吗?个人觉得似乎并不是。更多的是一个Avalon设计思想的表演舞台。Styling?Styling应该说是一个并不新鲜的概念,HTML中的CSS就是这种概念的一种实现。在Avalon中,这种概念被充分的引入到Wind... 阅读全文

Avalon学习笔记 之 路由事件

2005-07-12 23:09 by Colin Han, 2265 阅读, 0 推荐, 收藏, 编辑
摘要:Avalon中又一个非常吸引人的功能——路由事件(Routed Event).在某些概念上和附加属性有些类似。概述Avalon提供了一套事件路由技术,从而我们可以在父节点上接收和处理子节点的事件。下图是路由事件的会意图。微软定义了两种路由事件,分别称为深入(Tunneling)事件和冒出(Bubbling)(附:微软还定义了一种直接(Direct)事件,个人认为不能称之为路由事件)对于深入事件,事... 阅读全文

[FxCop.设计规则]14. 不要在封闭类中定义保护型成员

2005-07-10 19:05 by Colin Han, 1858 阅读, 0 推荐, 收藏, 编辑
摘要:14. 不要在封闭类中定义保护型成员 翻译概述: 使用Sealed声明密封类可以提高程序的执行效率(详细内容可以看:sealed能提高性能),因此比较推荐将不再需要继承的类型声明为密封类型。 当一个类型被声明为密封类型后,在其中定义保护型成员就变得没有意义了。同时,这样做可能会增加将来的维护成本(见本文中的例外段)。 个人认为,密封类型并没有被编译器优化从而增加程序的效率(使用IL... 阅读全文

Avalon学习笔记(二)——从属属性 和 附加属性

2005-07-01 00:00 by Colin Han, 2983 阅读, 0 推荐, 收藏, 编辑
摘要:在Avalon设计模型中引入了两个新的概念——从属属性(Dependency Properties)和附加属性(Attached Property)通过它们,我们可以实现风格化(Styling),数据绑定,默认值,动态属性(animation)等等一系列非常酷的功能。一个动态属性(animation)的例子:Rectangle拥有一个从属属性“Opacity”,例子中使用DoubleAnimati... 阅读全文

[FxCop.设计规则]13. 定义自定义属性参数的访问属性

2005-06-28 00:01 by Colin Han, 1788 阅读, 0 推荐, 收藏, 编辑
摘要:13. 定义自定义属性参数的访问属性 翻译概述: 一个比较无聊的规则,实在看不出在什么情况下,一个开发者会做出违反这条规则的设计。没有别的内容,只是说应该为自定义特性的构造函数中的参数提供一个相关的属性去读取它们的值。 一个让我比较费解的规则,即没有看出其中所传达的设计思想,也没发现任何优秀的设计技巧。 原文引用: Define accessors for attribute ar... 阅读全文

Longhorn将集成RSS支持。

2005-06-27 13:35 by Colin Han, 1343 阅读, 0 推荐, 收藏, 编辑
摘要:在微软的新一代操作系统Longhorn中将集成RSS的支持。主要的似乎提供了如下三个功能:1. 公共Feed列表2. 公共RSS数据存储3. RSS平台同步引擎通过这些平台支持,应用程序可以访问同一份公共的数据。实现各自所侧重的方面,将RSS的获取、存储、同步等一些功能交给操作系统完成。更多的内容,可以参考这篇Blog : http://www.longhornblogs.com/robert/a... 阅读全文

Avalon学习笔记

2005-06-26 17:22 by Colin Han, 2339 阅读, 0 推荐, 收藏, 编辑
摘要:这两天在学习Avalon,总体感觉其中包含很多的新技术和思想 其中很多的思想和以前我们经常做WinForm开发所用的思想很不一样,有点像Web开发。让我想到了张无忌学习太极拳时的情景,可惜我资质平平,没有那么好的忘记能力。 目前看到的几个不同的部分有: 1. XAML 这个似乎就不需要说了。地球人都知道。2. Style 有点像CSS的东西,Style用来在Control的外部来管理... 阅读全文

[FxCop.设计规则]12. 不要捕获所有异常

2005-06-20 19:14 by Colin Han, 2549 阅读, 0 推荐, 收藏, 编辑
摘要:12. 不要捕获所有异常 翻译概述: 在传统的C++中,对于大多数错误逻辑使用返回错误码的方式来定义。从而使程序逻辑中充斥了大量的条件判断逻辑,严重的影响了代码的可维护性和美观。而异常机制为开发提供了一套相对独立和易管理的错误处理方式,因此,在目前的大多数程序设计语言中都提供了对异常的支持,包括C++。 但是,异常属于一个脱离程序逻辑之外的控制流程,因此,对异常的滥用很多时候反而会降低程序... 阅读全文

[FxCop.设计规则]11. 不应该使用默认参数

2005-06-14 23:02 by Colin Han, 1818 阅读, 0 推荐, 收藏, 编辑
摘要:11. 不应该使用默认参数翻译概述: 在MSDN中对于调用使用默认参数的函数的说明如下: .NETFramew... 阅读全文

[FxCop.设计规则]10. 类型应该被声明在命名空间中

2005-06-09 20:15 by Colin Han, 2274 阅读, 0 推荐, 收藏, 编辑
摘要:10. 类型应该被声明在命名空间中 翻译概述: 命名空间的概念在C++中已经存在,但是对于大多数C++程序员来说,命名空间却很少被用到,C++程序员更喜欢在一组相关的类型前面添加相同的缩写,当项目变得越来越大时,这种传统的处理方式就很难适应软件系统规模。因此,在新的面向对象开发语言中无一例外的强化了命名空间的概念。 毋庸置疑,将类型放在全局命名空间中是一个很不好的设计。FxCop设计规则的... 阅读全文

[FxCop.设计规则]9. 事件句柄声明不恰当

2005-06-08 18:20 by Colin Han, 1928 阅读, 0 推荐, 收藏, 编辑
摘要:9. 事件句柄声明不恰当翻译概述: 微软在.NET中使用了一种新的数据类型——委托,通过委托实现了动态挂接和挂断程序执行逻辑,从而降低了模块之间的耦合度,提高了类型的可重用性。在.NET中,事件就使用了委托来实现。但是委托为我们提供了灵活性的同时,也为滥用提供了很大的便利性。因此,在本文中,微软建议了一个比较标准的事件声明格式,从而减低程序员或用户了解设计的难度。 在目前的程序设计语言中... 阅读全文

[FxCop.设计规则]8. 也许参数类型应该是基类型

2005-06-07 21:45 by Colin Han, 1553 阅读, 0 推荐, 收藏, 编辑
摘要:8. 也许参数类型应该是基类型 翻译概述: 这条规则中,微软建议为了提高代码的可重用性,如果可能,尽量将参数类型修改为它的基类型。但是,这条规则并不是一条强制规则,在最后,微软提到,如果需要,使用子类型作为参数可以提高代码的健壮性。 关于这一点,译者比较趋向于尽量使用子类型作参数的类型,因为这样可以减少函数被滥用的情况(个人认为滥用比起重用的优先级更高一下)。而且,如果将来发现确实需要,我... 阅读全文

[FxCop.设计规则]4. 避免太多的范型参数

2005-06-02 19:43 by Colin Han, 2149 阅读, 0 推荐, 收藏, 编辑
摘要:4. 避免太多的范型参数 原文引用: Avoid excessive parameters on generic types TypeName: AvoidExcessiveParametersOnGenericTypes CheckId: CA1005 Category: Microsoft.Design Message Level: Error ... 阅读全文