代码改变世界

事务Isolation Level 例子详解

2014-11-24 17:02 by yanqinqiang, 1295 阅读, 3 推荐, 收藏, 编辑
摘要:举例分析:我们有A表, 包含两条数据。Read uncommitted:假设我们有两个事务Trans1, Trans2.它们的操作如下:Trans 1: 更新A1 -> A11, 然后更新A2 -> A22.Trans 2: 读取A表中的第一条数据.当trans1执行完第一步但还没开始第二部的时候,... 阅读全文

重构第六天:用条件语句替换异常

2014-07-15 16:24 by yanqinqiang, 213 阅读, 0 推荐, 收藏, 编辑
摘要:在工作中经常遇到用异常去控制程序流程,下面是一个普遍的例子:public class Microwave{ private IMicrowaveMotor Motor { get; set; } public bool Start(object food) { boo... 阅读全文

重构第5天:提取方法对象

2014-07-06 22:12 by yanqinqiang, 319 阅读, 0 推荐, 收藏, 编辑
摘要:在一个类中,当我们有一个长方法时,我们一般会采用提取方法的方式去重构,但是有的时候,这种方式会导致在一个方法体中有多个本地变量。在这种情况下,我们最好采用提取方法对象的方式进行重构。把该方法放到另外一个单独的类中,把本地变量变为该类的字段。class Order... double price() ... 阅读全文

重构第四天 : 用多态替换条件语句(if else & switch)

2014-06-30 14:30 by yanqinqiang, 2428 阅读, 0 推荐, 收藏, 编辑
摘要:面相对象的一个核心基础就是多态,当你要根据对象类型的不同要做不同的操作的时候,一个好的办法就是采用多态,把算法封装到子类当中去。重构前代码: 1 public abstract class Customer 2 { 3 } 4 5 public class Employee : Custome... 阅读全文

MSBuild 教程(2)

2014-06-27 11:40 by yanqinqiang, 2414 阅读, 2 推荐, 收藏, 编辑
摘要:如果你没有看过第一部分教程,请先看完后再回到这里来继续我们的第二部分。我们下一步的工作是发布我们的网站,也就是创建Publish target. 为了能使我们的target工作,我们需要给它传递两个属性,WebProjectOutputDir 和 OutDir, 这两个变量将确保我们能把我们的网站文... 阅读全文

为什么Nhibernate中属性和方法必须Virtual的

2014-06-26 12:53 by yanqinqiang, 606 阅读, 0 推荐, 收藏, 编辑
摘要:如果你曾经用过NHibernate 2.0或者更高的版本,那您一定碰到过下面的错误:NHibernate.InvalidProxyTypeException: The following types may not be used as proxies: NHibernateExamples.Ent... 阅读全文

重构第三天:提升方法&下移方法

2014-06-25 22:02 by yanqinqiang, 730 阅读, 0 推荐, 收藏, 编辑
摘要:如果两个子类拥有相同的方法,把它们移动到超类中来Warning! 但是从子类到父类移动方法的时候要注意, 不要过度采用这种方法,否则会出现继承滥用的情况。如果一个父类A有多个方法,假设m1, m2方法,并且该父类有多个继承A1,A2,A3. 如果我们哪天想再给父类A添加一个新的方法m3,那A1,A2... 阅读全文

重构第二天:移动方法

2014-06-24 12:36 by yanqinqiang, 596 阅读, 0 推荐, 收藏, 编辑
摘要:原文地址:http://www.refactoring.com/catalog/moveMethod.html在类A中,当一个方法正在用,或者将要用到的功能和资源大部分存在于另一个类B中,而非A类中时,这时我们要考虑把这个方法移到B类中去。举一个例子: 1 class Project { 2 P... 阅读全文

重构第一天:封装集合

2014-06-23 22:14 by yanqinqiang, 430 阅读, 0 推荐, 收藏, 编辑
摘要:在一些情况下,在一个类中选择不去暴露整个集合给调用者是非常有必要的。比如当我们给一个集合添加/删除item时,我们需要添加一些额外的逻辑。因为这个原因,一个非常好的办法就是让暴露出来的collecction只能被迭代而不能被修改。让我们看下面的例子。public class Order{ pr... 阅读全文

MSbuild 教程

2014-06-23 21:39 by yanqinqiang, 8929 阅读, 4 推荐, 收藏, 编辑
摘要:在.Net framework中,一个不太被大家熟知的工具就是MSBuild。这个命令行工具通过执行XML脚本可以自动生成软件工程文件。但问题来了,“我为什么想要我的生成过程自动化?”。 其实,大部分普通的的项目都有可能包含一系列的生成过程,例如:· 增加版本号· 编译源代码· 针对不同的部署环境选... 阅读全文