摘要: 随着软件行业的不断发展,历史遗留的程序越来越多,代码的维护成本越来越大,甚至大于开发成本。而新功能的开发又常常依赖于旧代码,阅读旧代码所花费的时间几乎要大于写新功能的时间。 我前几天看了一本书,书中有这么一句话: “复杂的代码往往都是新手所写,只有经验老道的高手才能写出简单,富有表现力的代码” 此话 阅读全文
posted @ 2015-09-26 14:07 richiezhang 阅读(18680) 评论(110) 推荐(137) 编辑
摘要: 很多人喜欢用Try...Catch把每一个方法都包裹起来,可是真的有必要么?为什么要这样做?我估计是大家被BUG吓怕了,生怕生产环境出现各种莫名其妙的错误,比如最经典的NullReferenceException,可问题是你用Try...Catch包裹起来后错误是不会爆出来了,但是执行结果是你想要的... 阅读全文
posted @ 2015-09-02 17:06 richiezhang 阅读(13048) 评论(104) 推荐(35) 编辑
摘要: 最近接手了新的项目,突然间有点不适应了,越发感觉到了Clean Code是多么重要,那么什么样的代码算是优雅的代码?Bjarne Stroustrup,C++之父:逻辑应该是清晰的,bug难以隐藏;依赖最少,易于维护;错误处理完全根据一个明确的策略;性能接近最佳化,避免代码混乱和无原则的优化;整洁的... 阅读全文
posted @ 2015-08-29 22:17 richiezhang 阅读(1245) 评论(2) 推荐(2) 编辑
摘要: 大家是如何对webApi写测试的呢?1.利用Fiddler直接做请求,观察response的内容。2.利用Httpclient做请求,断言response的内容。3.直接调用webApi的action,这种方式的测试跟真实的调用还是有一定差距,不够完美。接下来我介绍一种webApi的in-memor... 阅读全文
posted @ 2015-07-19 14:49 richiezhang 阅读(5264) 评论(1) 推荐(5) 编辑
摘要: 当我们用在MVC总使用IoC时,大家的Controller生命周期(lifestyle)是以哪种方式注册的呢?之前我一直没有思考过这个问题。众所周知在MVC开发过程中,大部分的组件都是以PerWebRequest的方式注册到容器的,Controller也不例外,以Castle为例,注册Control... 阅读全文
posted @ 2015-07-12 12:28 richiezhang 阅读(1119) 评论(0) 推荐(0) 编辑
摘要: 表达式树是LINQ To everything 的基础,同时各种类库的Fluent API也 大量使用了Expression Tree。还记得我在不懂expression tree时,各种眼花缭乱的API 看的我各种膜拜,当我熟悉expression tree 后恍然大悟,不用看代码也能知道别人的API 是如何设计的(^_^)。 接下来这篇博客就谈谈如何使用expression t... 阅读全文
posted @ 2015-06-07 13:14 richiezhang 阅读(2008) 评论(6) 推荐(5) 编辑
摘要: 由于项目需求,需要使用angular 实现列表的增、删、改,并且列表支持拖拽。看了下angular-ui 里面的sortable组件,使用起来也是非常简单,几十行代码就完成了所需功能。我现在懒得想如何使用jquery完成该功能,不过我能肯定的是使用jquery完成这个功能,代码至少多几倍效果如下:本... 阅读全文
posted @ 2015-04-12 18:22 richiezhang 阅读(1704) 评论(0) 推荐(0) 编辑
摘要: 提起函数式编程,大家一定想到的是语法高度灵活和动态的LISP,Haskell这样古老的函数式语言,往近了说ruby,javascript,F#也是函数式编程的流行语言。然而自从.net支持了lambda表达式,C#虽然作为一种指令式程序设计语言,在函数式编程方面也毫不逊色。我们在使用c#编写代码的过... 阅读全文
posted @ 2015-04-06 15:59 richiezhang 阅读(15816) 评论(5) 推荐(5) 编辑
摘要: 系列主题:基于消息的软件架构模型演变 说起观察者模式,估计在园子里能搜出一堆来。所以写这篇博客的目的有两点: 观察者模式是写松耦合代码的必备模式,重要性不言而喻,抛开代码层面,许多组件都采用了Publish-Subscribe模式,所以我想按照自己的理解重新设计一个使用场景并把观察者模式灵活使用在其中 我想把C#中实现观察者模式的三个方案做一个总结,目前还没看到这样的总结 现在我们来假设... 阅读全文
posted @ 2015-03-29 16:38 richiezhang 阅读(15957) 评论(11) 推荐(20) 编辑
摘要: 我们经常使用的一些框架例如:EF,Automaper,NHibernate等都提供了非常优秀的Fluent Interface, 这样的API充分利用了VS的智能提示,而且写出来的代码非常整洁。我们如何在代码中也写出这种Fluent的代码呢,我这里介绍3总比较常用的模式,在这些模式上稍加改动或者修饰... 阅读全文
posted @ 2015-03-22 18:42 richiezhang 阅读(4115) 评论(1) 推荐(14) 编辑