代码改变世界

随笔分类 - 基本技术

“外部质量”还是“内部质量”

2011-02-14 16:45 by Colin Han, 3308 阅读, 收藏, 编辑
摘要: 这几天看了看《硝烟中的Scrum和XP》,其中作者将产品质量分为两种——“外部质量”和“内部质量”。作者认为,在项目工期紧的时候,外部质量是可以妥协的。而内部质量是不容妥协的。但是,哪些问题属于内部质量呢? 阅读全文

[经验总结] 关于单元测试

2009-08-26 09:33 by Colin Han, 3060 阅读, 收藏, 编辑
摘要: 今天看到@jeffz_cn在twitter上问:“私有方法真的不应该单元测试吗?为什么?我觉得有的组件只是逻辑复杂一些,因此会提取私有方法,并且测试这些私有方法的逻辑。如果把这些内容统统从外部“注入”,这样私有的逻辑就变公开了……但是这样难道没有过渡设计的味道吗?”。然后就想起来我在项目中推动单元测试的经过。觉得还是应该总结一... 阅读全文

避免DateTimePicker闪烁的解决方案

2007-12-29 14:46 by Colin Han, 1524 阅读, 收藏, 编辑
摘要: 1. 在WinForm上放置一个TabControl,并设置其Dock属性为Fill。2. 在其中的一个Tab页上放置一个DateTimePicker控件你会发现,当你在XP系统下,ResizeForm时,DateTimePicker会闪烁。研究了很长时间,没有结果。最终放弃C#和Spy++,使用Google研究了一下 :-) 得出结论如下:需要为DateTimePicker控件添加WS_EX_C... 阅读全文

.NET 开发中容易被忽略的问题--MDA

2007-08-15 18:56 by Colin Han, 1583 阅读, 收藏, 编辑
摘要: 我们开发中经常看到一些比较奇怪的异常.发生时机不确定,调用堆栈没有。异常信息也很晦涩。 最可怕的是,他们往往不可重现。以前,我总以为这些是IDE调试程序的Bug。并且,似乎对程序正确执行没有任何影响。因此也就很少重视。 今天在研究StreamWriter的过程中,才发现…… 阅读全文

多线程下WinForm开发应该注意哪些问题?

2007-03-21 13:30 by Colin Han, 6849 阅读, 收藏, 编辑
摘要: 昨日,与一同事一起在修一个多线程下使用我们的控件产品的Bug。现将相关的经验发布在这里。1. 标准WinForm控件不支持多线程访问这一点,其实是Windows的机制。.NET 中每一个Control其实都是一个Window,使用这些Window,原则上都应该在创建这个Window的线程中。否则,会产生异常。这一点,似乎Windows也没有强制约束。某些操作可能会扔异常,而有些情况下却不会。比如:... 阅读全文

配置IIS使用ASP.NET 2.0

2007-03-03 13:41 by Colin Han, 6728 阅读, 收藏, 编辑
摘要: 一般情况下,安装VS 2005时,安装程序会自动配置本地IIS服务使用ASP.NET 2.0。我们可以直接在VS 2005下编写或调试WEB应用程序。 但是,如果我们先安装了VS2005,然后才安装的IIS。这时,IIS会设置为使用ASP.NET 1.0。我们在VS2005中建立WEB程序是会出现下面的提示: The site 'http://localhost/xxxxxx' has not ... 阅读全文

出乎意料

2006-08-27 15:55 by Colin Han, 7289 阅读, 收藏, 编辑
摘要: 因为工作需要,写了个简单的测试程序测试了一下List<T>, LinkedList<T>, Dictionary<TKey, TValue>, SortedList<TKey, TValue>的性能。测试结果中有两点出乎意料:1. LinkedList的内存占用很大,比List大了将近60%。 我没有细看为什么多出这么多内存占用。但是如果用我自己写的... 阅读全文

[转载]高性能托管应用程序设计入门

2006-08-07 15:36 by Colin Han, 524 阅读, 收藏, 编辑
摘要: 一篇不错的文章,介绍了.NET开发中性能的方方面面。看起来也是翻译过来的,翻译的确实不太好 *_*! 但是值得学习和参考。首页:http://pingce.zhongsou.com/SoftChannel/72342380484755456/20030828/1724489.shtml关于JIT优化的章节,可以直接看其中的第四页。其中介绍了JIT在什么时候会将一个函数内联编译,从而降低方法调用的开... 阅读全文

.NET下跨线程访问Control。

2006-06-23 13:00 by Colin Han, 2279 阅读, 收藏, 编辑
摘要: 在.NET中,一个Control是属于一个特定的线程的。如果要在另外一个线程中访问这个Control的Handler(其实,Control的很多属性都会访问到Control的Handler)。.NET 或 操作系统会抛出一个异常。但是,某些时候我们必须这样使用。微软已经在.NET Framework中为我们包装好了方法,供我们使用: public Object Control.Invoke ( D... 阅读全文