摘要: 在开发中经常使用加密/解密对一些内容进行处理,比如密码在存入数据库之前先经过加密处理等等,这里就把一个加密帮助类代码贴出来,供以后查找使用。 这个帮助类主要功能是对字符串和字节数组进行加密解密处理。 public class EncryptionHelper { //默认密钥向量 private static readonly byte[] DefaultKe... 阅读全文
posted @ 2014-02-25 11:02 CandyZkn 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 在构思项目的工作方法时,可以运用ECRS(四巧工作简化法)技术,即E取消、C合并、R重排、S简化等四种技巧。 1、取消(Eliminate) 对所做的项目,首先应当考虑取消的可能性。如果所做的项目、工序、操作可以取消的话,那当然就是一个最大的改善。例如,不必要的工序,不必要的搬运、不必要的检验,不必要的动作等,一律都应取消。 2、合并(Combine) 当生产过程被划分为许多工序后,由于工序之间... 阅读全文
posted @ 2014-02-19 17:49 CandyZkn 阅读(3552) 评论(0) 推荐(0) 编辑
摘要: “5W1H分析法”也叫“六何分析法”,它是一种分析方法也可以说是一种创造技法。是对选定的项目、工序和操作,都要从原因(Why)、对象(What)、地点(Where)、时间(When)、人员(Who)、方法(How)等六个方面提出问题进行思考。这种看似很可笑、很天真的问话和思考办法,可使思考的内容深化、科学化。 对六个方面的问题经过分析后,就应着手提出改进意见,建立新的最... 阅读全文
posted @ 2014-02-19 17:43 CandyZkn 阅读(3034) 评论(0) 推荐(0) 编辑
摘要: 转载地址:http://www.cnblogs.com/lovecherry/archive/2008/05/23/1205565.html自从学习LINQ以来,我发现了很多使用LINQ来改善代码的方式。每一个技巧都让代码写起来更简单,可读性更强。这里总结了这些技巧。我会介绍如何使用LINQ来:初始化数组在一个循环中遍历多个数组生成随机序列生成字符串转换序列或集合把值转换为长度为1的序列遍历序列的所有子集如果你在LINQ方面有心得也欢迎在评论中一起分享。1.初始化数组通常,我们需要把数组的值初始化为相同的值或递增的序列值,或者可能是一个步进不为1的递增/递减序列。有了LINQ,我们可以在数组的 阅读全文
posted @ 2014-02-19 16:25 CandyZkn 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 单例模式:确保一个类只有一个实例,并提供一个全局访问点。 应用场景:数据库连接、线程池、缓存、对话框、处理偏好设置、注册表的对象、日志对象、充当打印机、显卡等设备的驱动程序对象、任务管理器、网站的计数器、Web应用的配置对象的读取、操作系统的文件系统。 几种实现方法代码: (1)简单的实现(惰性实例化) public sealed class Singleton { priva... 阅读全文
posted @ 2014-01-13 16:10 CandyZkn 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 所有工厂模式都用来封装对象的创建。工厂方法模式通过让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的。 依赖倒置原则(Dependency Inversion Principle):要依赖抽象,不要依赖具体类。 阅读全文
posted @ 2014-01-13 14:51 CandyZkn 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 究竟什么占据了人们的时间?这是一个经常令人困惑的问题。 著名 管理学家科维提出了一个时间管理的理论,把工作按照重要和紧急两个不同的程度进行了划分,基本上可以分为四个“象限”:既紧急 又重要、重要但不紧急、紧急但不重要、既不紧急也不重要。 时间管理理论的一个重要观念是应有重点地把主要的精力和时间集中地放在处理 那些重要但不紧急的工作上,这样可以做到未雨绸缪,防患于未然。在人们的日常工作中,很多时候往往有机会去很好地计划和完成一件事。 但常常却又没有及时地去做,随着时间的推移,造成工作质量的下降。因此,应把主要的精力有重点地放在重要但不紧急这个“象限”的事务上 是必要的。要把精力主要放在重... 阅读全文
posted @ 2014-01-10 16:18 CandyZkn 阅读(3241) 评论(0) 推荐(0) 编辑
摘要: 装饰者模式:动态地将责任附件到对象上。若要扩展功能,装饰者提东了比继承更有弹性的替代方案。装饰者和被装饰对象有相同的超类型你可以用一个或者多个装饰者包装一个对象。既然装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象(被包装的)的场合,可以用装饰过的对象代替它。装饰者可以在所委托被装饰者的行为前与/或之后,加上自己的行为,已达到特定的目的。对象可以在任何时候被装饰,所以可以在运行时动态地、不限量地用你喜欢的装饰者来装饰对象设计原则:类应该对扩展开放,对修改关闭(开放-关闭原则)。遵循开放-关闭原则,通常会引入新的抽象层次,增加代码的复杂度。你需要把注意力集中在设计中最有可能改变的地方,然 阅读全文
posted @ 2014-01-09 16:16 CandyZkn 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 观察者模式:定义了对象之间一对多的依赖关系,这样一来,当一个对象的状态发生改变时,它的依赖者将会受到通知并且自动更新。有一个模式可以帮你的对象知悉现况,不会错过该对象感兴趣的事,对象甚至在运行时可以决定是否要继续被通知---这就是观察者模式。观察者模式提供了一种对象设计,让主题和观察者之间松耦合。设计原则:为了交互对象之间的松耦合设计而努力。要点:观察者模式定义了对象之间的一对多关系。主题使用一个共同的接口来更新观察者。观察者和主题之间用松耦合的方式结合,主题不知道观察者的细节,只知道观察者实现了观察者接口。使用此模式你可以从主题出“推”或者“拉”数据(然而,推的方式被认为更“正确”)。有多个 阅读全文
posted @ 2014-01-09 11:03 CandyZkn 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 策略模式(Strategy Pattern):定义了了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户端。第一个设计原则:找出应用中可能需要变化之处,把他们独立出来,不要和哪些不需要变化的代码混在一起。理解1:把会变化的部分取出来并[封装]起来,好让其他部分不会受到影响。理解2:把会变化的部分取出并封装起来,以便以后可以方便的扩充此部分,而不影响不需要变化的部分第二个设计原则:针对接口编程,而不是针对实现编程。[针对接口编程]真正的意思是[针对超类型(supertype)编程],[针对接口编程]的关键就在于多态,利用多态,程序可以针对超类型编程,执行时会根据 阅读全文
posted @ 2014-01-08 17:02 CandyZkn 阅读(212) 评论(0) 推荐(0) 编辑
摘要: HeadFirst设计模式读书笔记(1)-策略模式(Strategy Pattern)HeadFirst设计模式读书笔记(2)-观察者模式(Observer Pattern)HeadFirst设计模式读书笔记(3)-装饰者模式(Decorator Pattern) 阅读全文
posted @ 2014-01-08 16:19 CandyZkn 阅读(143) 评论(0) 推荐(0) 编辑
摘要: Mock对象:真实对象在调试期的替代品。使用Mock对象进行测试的3个关键步骤:使用一个接口来描述这个对象为产品代码实现这个接口以测试为目的,在mock对象中实现这个接口mock对象:伪装出真实世界的某些部分,使你可以集中精力测试好自己编写的代码。一个可以面向任何一种.Net语言来创建mock对象的框架:DotNetMock框架它是一个框架,让你可以有组织的创建mock对象。它包含一小套预先定义的mock对象,让你可以拿来测试你的程序。它还有一套技术,动态mock,让你能够在不编写乱七八糟的代码的前提下,就可以创建mock对象。 阅读全文
posted @ 2014-01-08 14:12 CandyZkn 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 单元测试之道读书笔记(一)单元测试之道读书笔记(二)单元测试之道读书笔记(三)单元测试之道读书笔记(四)单元测试之道读书笔记(五)单元测试之道读书笔记(六)单元测试之道读书笔记(七)单元测试之道读书笔记(八)单元测试之道读书笔记(九) 阅读全文
posted @ 2014-01-07 18:23 CandyZkn 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 总结:一般原则:测试任何可能失败的地方。测试任何已经失败的地方。对于新加的代码,在被证明正确之前,都可能是有问题的。至少编写和产品代码一样多的测试代码。针对每次编译都做局部测试。签入代码之前做全局测试。要回答的问题:我如何知道代码运行是否正确呢?我要如何对它进行测试?还有那些方面可能会发生错误?这个问题是否会在其他的地方出现呢?测试哪些方面:使用Right-BICEP Right------结果是否正确(Right)? B----------是否所有的边界(Boundary)条件都是正确的? I-----------能查一下反向(Inverse)关联吗? C----------能用其他... 阅读全文
posted @ 2014-01-07 18:02 CandyZkn 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 没有单元测试的代码--或者没有通过单元测试代码--是不完整的代码。一个方法能够从头到尾的运行是远远不够的,真正的测试是要检查结果的,没有检查结果的测试只是在浪费时间而已。所有的测试必须能偶在所有的机器通过,否则的话,代码就可能存在着问题。”足够接近“有时候也是带有欺骗性的,例如,就精度而言,测试相比真实的要求来说可能还不够。当测试运行的时间太长了,已经妨碍日常编写测试和代码的速度的时候,需要重新检查测试,把那些运行时间比平均运行时间长的测试单独分离出来,并且把这些单独测试重新组合起来。之后,可以有选择地运行这一组测试。测试总是失败时,某些组的测试总是一次一次的失败,一些小的代码改动立刻就会令很 阅读全文
posted @ 2014-01-07 17:56 CandyZkn 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 1.通过使用面向测试的设计方法,更好地分离关注点 通过有意地设计出方便测试的代码,可以让代码具有更好的结构和可维护性。编写代码的时候要记住这个根本性问题:我要如何对代码进行测试呢?如果答案不是显而易见,代码编写的看起来很丑陋或者难以编写的话,就应该修改一些设计,直到易于测试为止。2.通过定义类不变形更好地产品设计意图 类的不变性是指一个或者几个针对类对象的断言。如果一个类对象有效的话,这些断言都必须为。这一点是不可改变的。例如:对一个实现的sorted list的类,它的不变性就是:他的内容必须是有序的。不管外面发生的任何事情,或者调用了该类的任何方法,这个list都必须是有序的--至少从.. 阅读全文
posted @ 2014-01-07 17:02 CandyZkn 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 1.测试代码该如何组织: 1.对于小型项目:组织测试代码的最优先也是最简单的方法就是把测试简单地包含在同一项目、同一程序集之中,紧挨着产品代码。这样的好处是可以访问internal和protected internal成员变量和函数,但是缺点是测试代码到处都是,堆积在产品代码的目录中。 2.使用单独的程序集,在一个独立于产品代码的程序集中创建测试代码。这样做可以清楚的分离测试代码与产品代码,但是缺点测试代码便不可以访问internal和protected internal成员变量和函数了,除非测试代码使用的产品代码的一个子类,并且该子类暴露了必要的成员。 正确的组织测试代码的方式:选中一... 阅读全文
posted @ 2014-01-07 16:29 CandyZkn 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 好的测试所具有的的品质(A-TRIP):自动化(Automatic).彻底的(Thorough).可重复(Repeatable).独立的(Independent).专业的(Professional).1.自动化:调用测试自动化和检查结果自动化。2.彻底的:测试所有可能出现问题的情况,代码覆盖工具:NCover。3.可重复:每个单元测试应独立于其他测试,独立于外部环境,可以以任意的顺序一次一次的执行,并产生相同的结果。这意味着测试不依赖与不受你直接控制的任何外部因素。4.独立的:每个测试应该是简洁和精炼的。每个测试应该有很强的针对性,并且独立于环境和其他测试。在编写测试时,确保一次只测试一个方法 阅读全文
posted @ 2014-01-07 15:48 CandyZkn 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 测试一个类,到底应该测试那些方面?哪些模块容易出问题? 对于经验丰富的大牛,可能很容易就会发现应该重点测试哪些内容,但是如果没有经验的话,想要发现一些深层次的bug,那是有一定的难度滴。因此在bug挖掘方面我们需要一些指导,指导我们哪些地方需要多做测试。 6个值得测试的部位,这6个方面统称为Right-BICEP: Right------结果是否正确? B----------是否所有的边界条件都是正确的? I-----------能查一下反向关联吗? C----------能用其他手段交叉检查一下结果吗? E----------你是否可以强制错误条件发生? P---------... 阅读全文
posted @ 2014-01-07 11:20 CandyZkn 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 开源托管平台 1. github : http://github.com/ GitHub可以托管各种git库,并提供一 个web界面,但与其它像SourceForge或Google Code这 样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的 “fork”的按 钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。 2.Sourceforge : http://www.... 阅读全文
posted @ 2014-01-07 09:21 CandyZkn 阅读(302) 评论(0) 推荐(0) 编辑