Patterns & Better Code
jameszhouhvs
.NET: WinForm > ASP.NET > MVC > Silverlight > WP > Xamarin
展开
-
布尔变量 - simple is beautiful
看到很多代码都这么使用bool类型的变量,例如如下的C#代码: if (result.IsLoaded == false) { result.Load(); } 更agile和readable的写法应该是: if (! result.IsLoaded) {原创 2009-05-12 13:01:00 · 1318 阅读 · 0 评论 -
Silverlight - Attached Behavior + Command
CAL (Prism)中的Command绑定非常好用,可以将某个button的click事件绑定到ViewModel中的某个方法上,简单明了。但是, CAL (Prism)中的Commands对Silverlight的支持有一个限制,只实现了对ButtonBase的Click事件的Command Binding:The command support in Silver原创 2009-08-11 17:11:00 · 3188 阅读 · 0 评论 -
Tip - 小心:泛型方法重载非泛型方法
今天发现有段代码没有返回预计结果,该代码使用了另一个同事写好的一个类: public class ServiceResponse { public ServiceResponse(T _result){..} public ServiceResponse(string _errorMessage){..}...}原创 2009-07-09 10:22:00 · 2271 阅读 · 1 评论 -
嵌套/内部类型
public class A{ public static class B {..} public class C {..} ...} classB, class C 是嵌套/内部类型。那天有人问道:为什么会有嵌套/内部类型? 今天读到一篇文章,觉得是比较好的解释嵌套类型应用场景:1. 嵌套类型需要访问被嵌套类型的私有方法2. 避免嵌套类型“原创 2009-07-10 14:16:00 · 1061 阅读 · 0 评论 -
参加了PMI在北京组织的Mega Exam Development Workshop
这次活动在北京的香格里拉饭店举行。第一天下午的那个session主要是了解PMI以及PMI China的一些情况: PMI China 2008年由代表处升格为公司,并在深圳开了分公司中国是除美国本土外PMP人数最多的国家90%的中国PMP集中在北京、上海、广州三地国外的PMP社区活动Chapter发挥了主要作用,但是目前中国还无法采用此模式(PMP China负责人语) --原创 2009-12-14 15:08:00 · 1537 阅读 · 4 评论 -
事件导致的内存泄露及Weak Event Pattern
事件绑定的背后当事件接收受对象的订阅源对象的某个事件时:oneControl.EventFired += anotherControl.OneControl_EventFired会生成一个事件源对象到事件接收对象的强引用 内存泄露的原因源对象的生命长于接收对象的生命(程序预期的生命), 且没有取消事件订阅:oneControl.EventFired -= anotherControl.OneControl_EventFired那么只要源对象未被"垃圾回收",由于那个强引用的存在,垃圾回收器也不会回收那个接收原创 2010-06-03 15:23:00 · 2287 阅读 · 0 评论 -
闭合 (Closure)与隐藏的引用
上一篇blog提到了Delay的Weak Event Pattern, 使用了如下代码:_weakEventListener.OnDetachAction = (weakEventListener) => newNotifyCollectionChanged.CollectionChanged -= weakEventListener.OnEvent;在上面的匿名委托中使用了一个参数,避免使用closure而导致隐藏的引用造成内存泄露。什么是Closur原创 2010-06-03 17:07:00 · 963 阅读 · 0 评论