Hello World
Spiga

归档:2009年08月

使用表达式树构建DomainRoute的URL

2009-08-31 15:48 by 老赵, 5246 visits
摘要:由于DomainRoute支持针对URL域名的捕获和构造,这有些破坏了ASP.NET Routing所制定的“协议”(ASP.NET Routing只支持Path),因此在上一篇文章中,我们需要自己构造一个辅助方法来获得一个“包含域名”的URL。不过根据尽可能强类型的原则,我们应该使用的是类似于MvcFutures中定义的基于表达式树的辅助方法。由于MvcFutures已经提供了非常充足的辅助功能,因此这其实并不需要耗费我们多少代价。 阅读全文

使用Lambda表达式编写递归函数

2009-08-31 01:40 by 老赵, 12538 visits
摘要:其实这从来不是一个很简单的事情,虽然有些朋友认为这很简单。如果您把委托变量的声明和Lambda表达式分开写为两行,那么其实这已经是一中“伪”递归了。可能已经有朋友知道“标准”的做法是什么样的,不过我这里还想谈一下我当时遇到这个问题时想到的一个做法。比较笨(非常符合我的特点),但是可以解决问题。但是装配脑袋很早给了我们更好的解决方法,希望在以后的某一天,我可以把这部分内容融会贯通地理解下来,并且可以详细地解释给大家听。在这之前,我还是听脑袋的话,把Fix强行记在脑袋里吧。 阅读全文

与protected成员有关的单元测试方式

2009-08-28 17:33 by 老赵, 6469 visits
摘要:protected是一个有趣而有用的修饰符,它把方法的访问成员严格限制在自身或自己的子类身上。换句话说,在使用过程中,protected成员对外部是开放的(因为其他类可以通过继承来使用该成员),又是封闭的(不是自身或子类的一切成员都无法访问)。而对于单元测试来说,protected成员又是尴尬的,因为它的“开放”意味着我们必须对它进行单元测试,而“封闭”又阻碍了我们在单元测试中涉及protected成员。 阅读全文

所有的成员都应该是virtual的吗?

2009-08-28 10:56 by 老赵, 7551 visits
摘要:这是一个由来已久的讨论,由于Java默认所有的方法都是可以被override的(除非手动写成final),因此从C#语言设计起初就有此番争论,甚至让Anders都出来解释了一下。最近又有人在讨论这方面话题了,虽然我的看法并没有超出这些人所涉及的范畴,但是我还是打算谈一下我的理解。退几步说,就当补充一些“实例”吧。 阅读全文

趣味编程:函数式链表的快速排序

2009-08-27 17:50 by 老赵, 8594 visits
摘要:前一段时间有朋友问我,Haskell快速排序的代码,是否可以转化成C#中等价的Lambda表达式实现。我当时回答,C#中缺少一些基础的数据结构,因此不行。经过补充之后,就没有任何问题了。后来,我觉得这个问题挺有意思,难度适中,也挺考察“基础编程”能力的,于是就自己写了一个。如果您感兴趣的话,也不妨一试。 阅读全文

再谈public类型中internal成员的坏味道

2009-08-27 10:49 by 老赵, 5929 visits
摘要:上一篇文章里我讨论了一个类中internal成员可能会造成的坏味道,并且认为如果您的类型中出现了这个情况,可能就值得检查一下设计上是不是有问题了。文章中我提出了三种可能出现internal的情况,其中两种争议不大,不过对于“public类中是否应该出现internal成员”这一点似乎引起了一些争议。从评论中发现,讨论的一部分焦点并不是我的本意,这可能是我前文描述地较为简单而造成的,因此我现在对于这个方面再进行略为详细的探讨。 阅读全文

类中的internal成员可能是一种坏味道

2009-08-26 16:54 by 老赵, 7970 visits
摘要:最近除了搞ASP.NET MVC之外,也在思考一些编程实践方面的问题。昨天在回家路上,忽然对一个问题产生了较为清晰的认识。或者说,原先只是有一丝细微的感觉,而现在将它和一些其他的方面进行了联系,也显得颇为“完备”。这就是问题便是:如何对待类中internal成员。我现在认为“类中的internal成员可能是一个坏味道”,换句话说,如果您的类中出现了internal的成员,就可能是设计上的问题了。 阅读全文

支持DomainRoute的URL构造辅助方法

2009-08-26 12:18 by 老赵, 5716 visits
摘要:上一篇文章中我们构造了DomainRoute类,这是一个将URL Routing扩展至域名的Route组件,于是现在我们便可以轻易地从一个URL的Domain部分中捕获数据并在程序中使用。不过作为URL Routing的另一个重要部分,在URL构建方面,我们还需给DomainRoute补充额外的支持。 阅读全文

配合域名作URL Routing

2009-08-25 16:00 by 老赵, 8070 visits
摘要:经常有朋友问我,如何对域名作URL Routing,他们可能希望根据域名(或自域名)来获得一些值,最终影响Controller,Action或某些参数的选择。之前我只是简单地说“扩展一下ASP.NET Routing吧”,而现在由于自己也正好需要使用这个功能,便实现了一个扩展。使用下来,效果不错。 阅读全文

常用辅助方法收集

2009-08-25 15:11 by 老赵, 5717 visits
摘要:在项目里经常会出现一些常用的,好用的扩展方法,因此也想到把它收集起来。如果您有什么好的辅助方法,也可以告诉我,希望可以成为一套丰富的辅助方法,简化我们的开发生活。 阅读全文

基于ParsedRoute的Domain Parser

2009-08-24 18:27 by 老赵, 5343 visits
摘要:之前谈了不少关于ASP.NET Routing中ParsedRoute的内容,例如它的设计以及如何调用它的功能,其目的便是为了如今的使用作准备。现在我们就基于它构建一个Domain Parser,而这个Parser也是为今后的功能打基础的。 阅读全文

再谈ASP.NET Routing中的ParsedRoute

2009-08-24 14:10 by 老赵, 5405 visits
摘要:ParsedRoute是ASP.NET Routing中的内部类,作用是根据既定模式将一段URL解析为一个RouteValueDictionary。上次的文章中我主要谈了如何利用反射使用类库的内部成员,而这次则想分享一些使用ParsedRoute时产生的一些想法。 阅读全文

Kent Beck确认参加敏捷中国大会2009,讲述其35年架构设计心得

2009-08-23 23:47 by 老赵, 4524 visits
摘要:尘埃落定,Kent Beck终于确定他的行程,将于敏捷中国大会(9月11日~12日)前两天来京参会,并以大讲堂的形式分享其在架构设计方面的心得,在大会当天会做"实效的理想主义"的演讲,和另一位敏捷宣传创始人Dave Thomas一同为大会开幕。另外,这也是KB首次来中国,欢迎一起观瞻这个有点传奇色彩的极限编程创始人、敏捷宣言创始人。 阅读全文

书籍推荐:国内第一本ASP.NET 3.5 MVC技术专著

2009-08-23 15:39 by 老赵, 13600 visits
摘要:周五的时候我知道了国内第一本ASP.NET 3.5 MVC技术专著问世了。当时忙着搬家理东西,写代码,写博客,就没有仔细搭理。现在瞅瞅,不得了,了不得,至少有四大亮点值得推荐。 阅读全文

为什么是HttpContextBase而不是IHttpContext

2009-08-21 15:15 by 老赵, 6220 visits
摘要:由于HttpContext很难进行Mock,因此为了提高可测试性,微软随ASP.NET MVC发布了一个“抽象包”,专门用于对HttpContext及其相关组件进行抽象。不过在Preview 1版本中,这些抽象都是一个个接口,如IHttpContext,IHttpRequest等等。而在下一个版本中,立即就成为了一个个抽象类,如HttpContextBase,HttpRequestBase。现在我打算从“使用”角度来谈一下,为什么这里的确应该用抽象类而不是接口。 阅读全文

在单元测试时指定HttpContext的各种Path

2009-08-21 10:02 by 老赵, 6356 visits
摘要:设置HttpContext中各种Path一直是个问题,因为被测试的方法可能用到各种Path中的任何一个,而各种Path之间有一定关联,如果我们完全手动设置Mock对象的话会是一个浩大的工程。还好,这个问题还算容易解决。 阅读全文

C#编译器对泛型方法调用作类型推断的奇怪问题

2009-08-20 16:50 by 老赵, 7443 visits
摘要:范型是.NET平台上重要的功能,范型即为一个“不确定”的类型。C# 3.0中加强了对于类型推断的力度。但是C#的代码推断作的相当不完整,刚才我又遇上了一个奇怪的问题。 阅读全文

支持Area的ControllerFactory

2009-08-20 11:33 by 老赵, 5519 visits
摘要:由于项目需要,把ASP.NET MVC 2中的Area功能搬到1.0上来吧……其实只是借用个Area名头而已,根本不是那么一回事。有时候,我们就为自己的项目做一点简单的扩展,不是很合适吗? 阅读全文

复用类库内部已有功能

2009-08-19 18:59 by 老赵, 7349 visits
摘要:经常看我博客的人可能会知道,我是一个喜欢搞点小技巧来实现某个功能的人。例如博客的皮肤,自己花了不少时间定义,也是为了效果丰富一些。当然,搞得最多的是从框架或类库内部取出一点小功能来用用,节省自己开发的时间。 阅读全文

再谈抽象类和接口

2009-08-19 12:15 by 老赵, 8686 visits
摘要:昨天我质疑了为什么定义RouteBase抽象类,而不是IRoute接口,我谈到对于一个“没有任何实现”的抽象类来说,开发人员应该使用接口。不过在后面的评论中,有朋友给了我启发,让我忽然想到更多的事情。晚上又再次翻了翻《Framework Design Guidelines》之后,打算再谈一些东西,把这个问题讨论地更加清楚一些。 阅读全文
1 2 Next >
使用Live Messenger联系我