戒傲戒惰

2013年8月30日

高效程序的45个习惯---第七章 敏捷调试

摘要: 33 记录问题解决日志维护一个问题及其解决方案的日志。保留解决方案是修复问题过程的一部分,以后发生相同或类似问题时,就可以很快找到并使用了。解决方案日志应该作为思考的一个来源,可以在基中发现某些特定问题的细节。对某些类似但是有差异的问题,也能从中获得修复的指引。平衡的艺术1 记录问题的时间不能超过在解决问题上花费的时间。要保持轻量级和简单,不必达到对外发布式的质量。2 找到以前的解决方法非常关键。使用足够的关键字,可以帮助你在需要的时候发现需要的条目。3 如果通过搜索Web,发现没有曾经遇到同样的问题,也许搜索的方式有问题。4 要记录发生问题时应用程序,应用框架或平台的特定版本。同样的问题在不 阅读全文

posted @ 2013-08-30 17:56 戒傲戒惰 阅读(169) 评论(0) 推荐(0)
高效程序的45个习惯---第六章 敏捷编码

摘要: 25 代码要清晰地表达意图软件设计有两种方式,一种方式是设计得尽量简单,并且明显没有缺陷。另一种方式设计得尽量复杂,并且明显没有缺陷。开发代码时,应该更注重可读性,而不是只图自己方便。代码阅读的次数要远远超过编写的次数,所以在编写的时候值得花点功能让它读起来更加简单。实际上,从衡量标准上来看,代码清晰程序的优先级应该排在执行效率之前。在改动代码以修复bug或者添加新功能时,应该有条不紊地进行。首先,应该理解代码做了什么,它是如何做的。接下来,搞清楚将要改变哪些部分,然后着手修改并进行测试。作为第1步的理解代码,往往是最难的。如果别人给你的代码是很容易理解,接下来的工作就省心多了。明天地告诉阅读 阅读全文

posted @ 2013-08-30 17:55 戒傲戒惰 阅读(166) 评论(0) 推荐(0)
高效程序的45个习惯---第五章 敏捷反馈

摘要: 19 守护天使单元测试。用代码来测试变量的具体值。已经是非常的普遍的做法。你可以选择一个标准的测试框架,来帮忙你完成简单的编写和组织测试的工作,如Java的JUint, C# 或者.Net的NUit等。只要有了单元测试,就要让它们自动运行。也就是每次编译或者构建代码的时候,就运行一次。把单元测试的结果看作是和编译器一样,如果测试没有通过(或者没有测试),那就像编译没有通过一样糟糕。单元测试是最受欢迎者的一种敏捷实践,有很多图书和其他资料可以帮你起步。如果你是新手,建议阅读《单元测试之道》。如果想要自动化地连接单元测试,可以阅读《项目自动化之道》。如果仍然在寻找开始单元测试的理由,下面有很多:1 阅读全文

posted @ 2013-08-30 17:31 戒傲戒惰 阅读(147) 评论(0) 推荐(0)
高效程序的45个习惯---第四章 交互用户想要的软件

摘要: 为了让软件符合用户的需求,要一直做下面的准备工作。为了降低集成新代码带来的破坏性变化,你要提早集成,频繁集成。当然,你不想破坏已有的代码,想让代码一直保持可以发布。10 让客户做决定开发者(及项目经理)能做的一个最重要的决定就是:判断哪些是自己决定不了的,应该让企业主做决定。你不需要自己给业务上的关键问题做决定。平衡的艺术第3章 记录客户做出的决定,并注明原因。好记性不如烂笔头。可以使用工程师的工作日记或日志、Wiki、邮件记录或者问题跟踪数据库。但是也要注意,你选择的记录方法不能太笨重或者太繁琐。第4章 不要用低级别和没有价值的问题打扰繁忙的业务人员。如果问题对他们的业务没有影响,就应该是没 阅读全文

posted @ 2013-08-30 17:30 戒傲戒惰 阅读(171) 评论(0) 推荐(0)
高效程序的45个习惯---第三章 学无止境

摘要: 5 跟踪变化平衡的技术只要你在某些方面成为专家,就能使用同样的方法,很容易地成为新领域的专家。避免在一时冲动的情况下,只是因为想学习而将应用切换到新的技术,框架或者开发语言。在做决策之前,你必须评估新技术的优势。开发一个小的原型系统,是对付技术狂热者的一剂良药。6 对团投资午餐会议□ 读书小组逐章一起阅读一本书,会非常有用,但是要选好书。《7天用设计模式和UML精通…》也许不会是一本好书。□ 不是所有的讲座都能引人入胜,有些甚至显得很不合时宜。不管怎么样,都要未雨绸缪;诺亚在建造方舟的时候,可并没有开始下雨,谁能料到后来洪水泛滥呢?□ 尽量让讲座走入团队中。如果午餐会议在礼堂中进行,有餐饮公司 阅读全文

posted @ 2013-08-30 17:29 戒傲戒惰 阅读(160) 评论(0) 推荐(0)
高效程序的45个习惯---第二章 心态决定一切

摘要: 1 做事出了问题,第一要点,应该是解决问题。清晰的表达你的目的是解决问题,而不是追究责任,这样会消除他的顾虑。指责是会修复bug.平衡的艺术1 ”这不是我的错”这句话不对,“这就是你的错”,这句话更不对2 如果你没有犯过任何错误,就说明你可能没有努力去工作。3 如果一个团队成员的行为一再伤害屯团队,则他的表现得很不职业,那么他不是在帮助团队,这种情况下必须要求他离开 这个团队,但不一定解雇他。2 欲事则不达优秀的程序员会挖掘更深一层,尽力去理解为什么这里必须要加1,更重要的是,他会想明白产生什么样的影响。通过几年的积累,代码中会成千上万的+1或-1修正,在这样的代码中添加新的功能或者修复bug 阅读全文

posted @ 2013-08-30 17:28 戒傲戒惰 阅读(177) 评论(0) 推荐(0)
高效程序的45个习惯--- 第一章 敏捷--高效软件的开发之道

摘要: 敏捷开发的宣言:一种把以人为本,团队合作、快速响应和可工作的软件作为宗旨的开发方法。它要求团队中的每一个人具备职业精神,并积极的期望项目上能够获得成功的,这并要求所有人都是有经验的专业人员,但必须具有专业的工作态度——每个人都希望尽最大可能做好自己的工作。越早越发现问题,就越早容易修复。敏捷开发就是在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。敏捷团队往往是一个小型团队。在功能有不变的情况下,重新设计部分代码,改善代码的质量,这就是所谓的重构。这是软件开发中不可或缺的一部分,编码永远没有真正意义上的“结束”。要以迭代的方式进行,一般为一周左右的时间进行。 阅读全文

posted @ 2013-08-30 17:27 戒傲戒惰 阅读(136) 评论(0) 推荐(0)
windows核心编程---第九章 同步设备IO与异步设备IO之同步IO

摘要: 同步设备IO所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行。异步IO是指:线程发起IO请求后并不会挂起而是继续执行。IO完毕后会得到设备的通知。而IO完成端口就是实现这种通知的很好的一种方式。线程是我们开发高性能、响应性好的一个必不可少的工具。这样在多处理器上就可以同时执行多个操作,从而提高吞吐量。当线程发出一个同步设备IO请求的时候,它会被临时挂起,直到设备完成IO请求为止。但线程阻塞会损害性能,这里有个问题是我们如何让线程不被挂起。让线程始终进行有用的工作就需要它们相互通信,鼎力配合。Windows经过数年的研究和测试,开发出了一种被称为IO完成端口的机制的技术。它可以帮 阅读全文

posted @ 2013-08-30 17:20 戒傲戒惰 阅读(230) 评论(0) 推荐(0)
windows核心编程---第八章 使用内核对象进行线程同步

摘要: 使用内核对象进行线程同步。前面我们介绍了用户模式下线程同步的几种方式。在用户模式下进行线程同步的最大好处就是速度非常快。因此当需要使用线程同步时用户模式下的线程同步是首选。但是用户模式下的线程同步也存在缺点。如InterLocked系列函数只能对一个值进行操作。关键段虽然可以对一段代码进行操作,但是只能对同一个进程内的线程进行同步。为了解决上述问题,我们将会讨论使用内核对象进行线程同步。与用户模式下的速度快相比较,使用内核对象进行线程同步性能很低。原因就是:在创建或清除内核对象时调用线程必须从用户态切换到内核模式。这种切换非常耗时。除此之外还会造成刷新高速缓存以及未命中。这将耗费更多的cpu时 阅读全文

posted @ 2013-08-30 17:19 戒傲戒惰 阅读(209) 评论(0) 推荐(0)
windows核心编程---第七章 用户模式下的线程同步

摘要: 用户模式下的线程同步 系统中的线程必须访问系统资源,如堆、串口、文件、窗口以及其他资源。如果一个线程独占了对某个资源的访问,其他线程就无法完成工作。我们也必须限制线程在任何时刻都能访问任何资源。比如在一个线程读内存时要限制其他线程对此块内存进行写入。 线程之间的通信很重要,尤其是在以下两种情况下: 1:需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性。 2:一个线程需要通知其他线程某项任务已经完成。 线程同步包括许多方面,windows提供了许多基础设施使线程同步变得容易。 用户模式下的线程同步:方法一,原子访问 线程同步... 阅读全文

posted @ 2013-08-30 17:17 戒傲戒惰 阅读(219) 评论(0) 推荐(0)