摘要:
好代码、坏代码之三7.线程安全很重要线程安全是重要的,在数据共享或同步的场合应将线程安全作为必须考虑的因素,不安全的代码将在多线程运行时造成严重的问题。例如,单例模式就是这样一个需要特别注意的例子:publicsealedclassSingleton{Singleton(){}publicstaticSingletonInstance{get{if(instance==null){instance=newSingleton();}returninstance;}}privatestaticSingletoninstance=null;}因此,你可以考虑通过“双锁”机制来保证线程的安全,不过在. 阅读全文
摘要:
好代码、坏代码之二4.多注释,少废话代码,一定是给人看的,而代码本身的逻辑又决定于方法、类型和依赖的关系之中,所以,必要的注释,是必需且必要的。通过注释的进一步解释,来辅助性地告知代码的逻辑、算法或者流程,不仅是好习惯,更是好代码。另一方面,注释不是“无病呻吟”,没有必要表述那些显而易见的逻辑或者说明,同时注意区分单行注释和多行注释的应用。在.NET平台下,XML格式的注释还肩负了另一项重要的使命,那就是根据注释生成代码文档。例如:///<summary>///根据用户信息,构建标签信息///</summary>///<paramname="member 阅读全文
摘要:
好代码、坏代码之一1.命名很重要,让代码告诉你它自己命名到底有多重要呢?重要到这几乎是很多软件项目成功或者失败的“罪魁祸首”,究其原因,代码不光支撑了0和1在计算机系统中运行的业务逻辑,同时也是开发者进行交流与研究的标准语言。没有意义或者有歧义的命名,就像两个等待交流的人,面对了一堆火星文无从下口,让交流变成灾难,也就导致很多问题。同时,好的命名是自说明的,让代码告诉开发者“我是谁,我做什么,我怎么做”。当然,除了静态式的必要的注释说明之外,动态式的代码也可以包含传递信息的作用,让代码告诉你它自己,因为代码是“活的代码”。例如,以某个缓存容器为例,泛型参数明确了容器的Key和Value的关系, 阅读全文
摘要:
设计由何而来设计,从何而来?是需求。是重构。设计原则是系统设计的灵魂,而设计模式是系统开发的模板,灵活自如的应用才是设计以不变应万变的准则。例如,实现一个用户注册的方法,首先会想到://初次设计publicvoidRegister(stringname,Int32 age){}在一定的需求条件下,这个方法已经能够经受系统的考验,安全而平稳地向数据库中不断插入新的用户信息。然而,当需求发生变化时,你可能不得不对此做出调整,而我们就将这种调整称为重构。但是重构远不是扩充,而是设计。例如,现在的注册项发生了变化,还需要同时注册性别、电话,没有设计的调整,就被实现为://需求变更publicvoidR 阅读全文
摘要:
解构控制反转(IoC)和依赖注入(DI)1.控制反转控制反转(Inversion ofControl,IoC),简言之就是代码的控制器交由系统控制,而不是在代码内部,通过IoC,消除组件或者模块间的直接依赖,使得软件系统的开发更具柔性和扩展性。控制反转的典型应用体现在框架系统的设计上,是框架系统的基本特征,不管是.NET Framework抑或是Java Framework都是建立在控制反转的思想基础之上。控制反转很多时候被看做是依赖倒置原则的一个同义词,其概念产生的背景大概来源于框架系统的设计,例如.NET Framework就是一个庞大的框架(Framework)系统。在.NET Fram 阅读全文
摘要:
对象创建的依赖关于依赖的哲学,最典型的违反莫过于对象创建的依赖。自面向对象的大旗树立以来,对于对象创建话题的讨论就从未停止。不管是工厂模式还是依赖注入,其核心的思想就只有一个:如何更好地解耦对象创建的依赖关系。所以,在这一部分,我们就以对象创建为主线,来认识对于依赖关系的设计轨迹,分别论述一般的对象创建、工厂方式创建和依赖注入创建三种方式的实现、特点和区别。1.典型的违反一般而言,以new关键字进行对象创建,在.NET世界里是天经地义的事情。在本书7.1节“把new说透”中,就比较透彻地分析了new在对象创建时的作用和底层机制。对.NET程序员而言,以new进行对象创建已经是习以为常的事情,大 阅读全文
摘要:
从此重构设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢?最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功,软件开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。一个在简历中轻描淡写的“10年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象编程、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里 阅读全文
摘要:
NET也有闭包在.NET中,函数并不是第一级成员,所以并不能像JavaScript那样通过在函数中内嵌子函数的方式实现闭包,通常而言,形成闭包有一些值得总结的非必要条件: 嵌套定义的函数。 匿名函数。 将函数作为参数或者返回值。在.NET中,可以通过匿名委托形成闭包:delegatevoidMessageDelegate();staticvoidMain(string[]args){stringvalue="Hello,Closure.";MessageDelegatemessage=delegate(){Show(value);};message();}privat 阅读全文
摘要:
你必须知道的.NET(第2版)王涛编著ISBN978-7-121-14128-7 2011年7月出版定价:79.00元16开548页宣传语:以深入浅出的笔法,触摸.NET底层和框架的有趣角落,了解.NET平台的开发、设计与框架,剥丝抽茧,探微知著。从语言细节到设计架构,娓娓道来,一本经验结晶,一部面试宝典,一段技术百科内 容 简 介本书来自于微软MVP的最新技术心得和感悟,将技术问题以生动易懂的语言展开,层层深入,以例说理。全书主要包括了.NET基础知识及其深度分析,以.NETFramework和CLR研究为核心展开.NET本质论述,涵盖了.NET基本知识几乎所有的重点内容。全书分为5个部分, 阅读全文
摘要:
你的名字比我生命更重要我是新中国恢复高考后的第一届(77 级) 大学生,大学及硕士毕业后到美国继续深造,在加州理工学院获得博士学位后加入英特尔并工作至今。从RCG[1] (应届毕业生)成长为英特尔为数不多的女性首席工程师,我在自己喜欢的这个岗位上已工作了17 年,美国的工作与生活都按部就班,恬淡舒适。与此同时,我也时时能感受到中国的巨大变化。这种飞速甚至看似有些“疯狂”的变化,让我在倍感自豪之余也心生艳羡。在美国学习工作的早期,没有人真正了解China 是什么样子,没有人知道这个国家每天都在发生些什么。慢慢的,随着改革开放力度的加大,超市里的“Made in China”从无到有直至随处可见, 阅读全文