Feed on
Posts
Comments

jsLambda使用文档

jsLambda是一个用Javascript实现的工具类,它可以解析字符串形式的Lambda表达式(语法和C#的Lambda表达式99%一样),并生成一个对应的Javascript函数。可在此处下载:

http://sym.7hands.net/projects/jslambda

下面介绍其使用方法:

Continue Reading »

LinkedList是我用Javascript实现的一个双向链表,可在此处下载:

http://sym.7hands.net/projects/jscollections

接下来简要介绍下其使用方法:

1. 代码规范

类名用Pascal命名法,方法用Camel命名法,getter和setter方法的命名规则为get_XXX()和set_XXX()。 Continue Reading »

sin5x~5x

唉,数学功底实在是不行,经常会被一些很“显然”的问题粘住而不得脱身。今天又碰到了个,确切的说应该是前段时间,今天是又一次碰到,但是一开始时还是再次被粘住了,特此写个博客记录一下,免得以后忘记了还有地儿可查。 Continue Reading »

相信很多人在开发Web App时都偏向于使用Firefox来调试,因为IE的javascript引擎真的是慢的没话说(不过听说IE9采用新的js引擎),但如果是用Visual Studio做ASP.NET开发,并且使用VS提供的Development Server来运行网站的话的,又会碰到另一个问题:打开一个页面非常慢,比IE慢非常多,虽然页面加载完之后Firefox执行更流畅。我以前也很苦恼这个问题,但竟然没想到去Google一下,汗。不管怎么,昨天是Google了,并且今天在自己的本子上试了下,太帅了,打开页面的速度一下子提升上去了,嗯,具体做法如下: Continue Reading »

Tip: 检查IEnumerable<T>是否有元素

今天Phil Haack发表了一篇文章Checking For Empty Enumerations,看完后有股醍醐灌顶的感觉,以前我也一直都没注意过这个问题,所以忍不住要来分享下。当然,本文的内容和原文不会完全一样。

问题

以前为了判断一个IEnumerable<T>的集合是否为空,我大都是通过检查IEnumerable<T>.Count()这个扩展方法的返回值是否为0来做的,相信不少人也是这么做,但这有个问题,如果你的IEnumerable<T>实例是一个实现了ICollection<T>,比如List<T>等,那这个Count()方法会直接返回ICollection<T>.Count属性的值,这个速度是非常快的;但如果不是,那Count()方法就会遍历整个集合以计算元素数量,这是很低效的,因为我们想知道的仅是这个集合有没有元素,也就是说,它本可能只检查一个元素(这样就知道有没有元素了),而现在却遍历了整个集合。 Continue Reading »

求幂指函数的导数

有些幂指函数的导数是不好求的,比如,但我们可以通过一个巧妙的办法来解。

不过首先,我们得先知道对数函数的一个性质,那就是:

这个性质可以把指数n给“拉”到下边来,往往“拉”下来后都会比较方便计算,那我们就想,如果对这个等式的两边分边取对数,那指数x就会跑下边来,也就是:

接下来,等式两边再同时对x求导,则变成:

要注意的是,两边是同时对x求导,所以等式左边需要运用复合函数的求导法则,即

进而可得:

再把y=x^x回代,则可得:

这样导数就求出来了,这也就是传说中的“对数求导法”了。

1. 一个违反LSP的例子

一个违反LSP的例子

这是一个来源于Uncle Bob的《Agile Principles, Patterns, and Practices in C#》一书中的例子。如上图所示,Line表示一条直线,P1和P2两个属性分别表示两个点(两个点可以确定一条直线),bool IsOn(Point point)方法用于判断一个点是否在这条直线上。LineSegment表示线段,它重写了IsOn方法,因此只有对在该线段上的点调用IsOn方法才会返回true。Ray表示一条射线,它同样也重写了IsOn方法。

Continue Reading »

1. 概述

Subtypes must be substitutable for their base types.

这是Uncle Bob的书里面对Liskov替换原则(LSP)下的定义:子类型必须可以替换基类型。这初看起来也许不太好理解,那我们来看下LSP作者Barbara Liskov的原文:

Let q(x) be a property provable about objects x of type T. Then q(y) should be true for objects y of type S where S is a subtype of T.

用C#语言来通俗地描述就是,假设SubClass是BaseClass的子类,并分别有实例subInstance和baseInstance;有一个函数(方法)Function(BaseClass baseClass),如果Function(baseInstance)成立,那么Function(subInstance)也必须成立。

Continue Reading »

不要抛出System.Exception

之前我对这点没有太在意,经常为了偷懒不写自定义的异常类,而是直接抛出一个System.Exception,直到最近才注意到这非常糟糕。 Continue Reading »

有时候,我们的类里面会有一两个私有字段(一般不是Primitive Type),它们永远不会被我们显式赋值,但却会在该类中被使用,为什么呢?因为这些字段通过是外部依赖,而我们希望通过一些DI框架(Dependency Injection Framework)给它们赋值,而由于某些原因,这些字段不应该包装成属性公开给外部,也就是它们只该在类内部使用, Continue Reading »

Page 1 of 3123