随笔分类 - 读书笔记
读书是学习的一个重要途径,做读书笔记是如何更好的读书的一种有效方法,在这里,都是一些我认为不错的书的笔记。
摘要:Item 2. Define Constraints That Are Minimal and Sufficient
阅读全文
摘要:Item 1. Use Generic Replacements of 1.x Framework API Classes
阅读全文
摘要:Working with Generics
阅读全文
摘要:上周,编辑和我说,《Programming ASP.NET 3.5 第四版》出版了,心里的一块石头终于落地了,终于也有一本书封面上署着自己的名字了,今年计划的两件事情算是完成一件了。 这是一本Step by Step的书籍,原作者前三版都很畅销,因此前三版也都有对应的中文版,我认为该书对初学者还是很有帮助的。说起翻译这本书的动机,其实很简单,就是想锻炼一下自己的意志,工作一段时间后,发现自己变得异...
阅读全文
摘要:Grady Booch关于面向对象编程的讨论:“我对面向对象编程的目标从来就不是复用,相反,对我来说,对象提供了一种处理复杂性问题的方式,这个问题可以追溯到亚里士多德:您把这个世界视为过程还是对象?在面向对象兴起运动之前,编程以过程为中心,例如结构化设计方法。然而,系统已经到达了超越其处理能力的复杂性极点。有了对象,我们能够通过提升抽象级别来构建更大的、更复杂的系统—&md...
阅读全文
摘要:没有正确的生活,就不会有卓越的人生。要想改变现状,必须先改变自己,要想改变自己,必须先改变自己对事情的看法。“思维定式”来源于希腊,最初是一个科学名词,现在多用来指某种理论、模型、认知、假说或参考框架。但广义上是指我们“看”世界的方法,这种“看”和视觉无关,主要是我们的感知、理解和诠释。我们可以把思维定式比作是地图,地图不代表...
阅读全文
摘要:第二十三章 编程领域大观——不同的编程分支不存在一个比其他语言都要好的编程语言,有许多不同的问题类别要在许多不同的环境下得到解决,解决方法的区别不仅仅是技术上的,它们在技巧上也会有所区别。熟悉你的领域并懂得它所独有的问题,这非常重要。编程有各种各样的类型,分别处于不同的问题域汇总,没有类型都有其独特的问题,并需要特定的技能和经验。应用程序有两个主要市场:塑装软件和定制应用程序。塑装软件是为大规模市...
阅读全文
摘要:第二十二章 程序秘方——代码开发的方法和过程同一个系统可以采用许多不同的方式来构建,这些方式不一定要有优劣之分。优秀的程序员知道他们是如何编程的——构成他们工作的方法和实践。编码的风格描述了软件问题是如何安排解决的,以及它的解决方案是如何分解并使用目标语言来构建模型的,编码风格确定了我们如何将一个项目分割成许多可管理的小块,它适用于表达代码意图的设计泛型。编码风格主要分为两类:命令式和声明声明式。...
阅读全文
摘要:第二十一章 软件时间范围估计的魔术虽然很多人对进行软件估计不赞成,但是毫无疑问,它是非常重要的。估计的质量主要取决于你对所要估计的任务理解的有多好,也就是说,你真正理解的有多好,而不是你认为自己理解的有多好。软件时间范围估计需要进行有根据的推测,每次估计都应该伴有你对结果的强烈信心。良好的估计是推理出的,有根据的,而糟糕的估计则无异于在黑暗中进行探索。之所以很多人认为进行估计很难,是因为:有大量的...
阅读全文
摘要:第二十章 代码审查——执行代码审查评审与自杀相比有一个优势:自杀是你拿自己出气,评审是你拿别人出气。“代码审查”是我们大多数人提高自己的最佳方式。代码审查所带来的责任,会使你的编码质量提高。审查将会把源代码放在显微镜下,这并不是为了取笑或者惹恼作者,而是为了提高团队制作的软件的质量。我们可以采取以下方式来避免代码审查:配对编程。这样你的代码在编写的过程中就得到了有效的审查。开发源码。这样允许任何人...
阅读全文
摘要:第十九章 注意细节——编写软件规范编写和处理规范是程序员应该具备的一项非常重要的技能。用自然语言沟通,与用代码沟通一样重要。规范使一些正式文档,它们构成了开发过程的一部分,用于提供内部的软件文档。规范有助于你更加聪明的工作,并编写出更好的软件,不过,糟糕的规范会起到完全相反的作用。对于软件开发过程而言,重要的不仅仅是软件规范是否存在,而且还有软件规范的质量。规范是团队内部和团队之间进行沟通的一种形...
阅读全文
摘要:第十七章 团结就是力量——团队合作与个人程序员在大多数行业中,优秀的产品都是优秀团队的杰作,软件开发也不例外。在现实中,任何规模较大的软件开发公司都会具有很多团队合作的层次,可以从公司、业务单位、项目、团队到个人。虽然公司是一个有效率的大型团队,但是你却常常发现各个部门和各种集体之间,人们会在心里称呼对方和自己为“他们和我们”,从而使公司内部出现断层。这并不是一个高效产品开发的理想环境。开发团队的...
阅读全文
摘要:第十八章 安全措施——源代码控制和自我控制代码非常宝贵,要以尊重和谨慎的态度来对待它。作为尽责的软件匠人,我们必须对我们的工作承担责任,我们不仅需要编写高质量的代码,还必须确保我们的工作:1. 安全可靠;2. 可访问;3. 可复制;4. 可维护。对于软件开发来说,源代码控制是一种必不可少的工具。它对团队的安全合作至关重要。糟糕的源代码管理可能会与源代码控制结合在一起,产生令人头疼的开发问题。源代码...
阅读全文
摘要:第十六章 代码猴子——培养正确的编程态度和方法面对同一件事情,不同的程序员会以不同的方式工作,他们会各有各的解决方法,总是会有“不止一种方法来做这件事情”的想法,不同程序员的态度也会导致他们作出截然不同的决策。软件工厂中居住着许多奇怪的不能适应社会的人,我们把他们叫做代码猴子,任何重要软件系统都是由这些人来构建的,他们具有不同的技术水平和态度,并且都为同一个目标而努力。我们在一起工作的方式以及我们...
阅读全文
摘要:第十五章 改良与革命——代码是如何成长的软件是一种有生命的实体。我们确实有机会来反复提高代码的质量,这在某种程度上模拟了进化的过程。优秀的代码也会遇到糟糕的事情。永远都不要低估代码在其生命周期内出现缺陷和瑕疵的能力。软件开发的维护阶段通常是软件成长的最长阶段。不管你做什么,最初的代码都会被更改,腐烂就是从这里开始的,这是一种你“做也不是,不做也不是”的情况,不管你做什么,代码都会腐烂。即使你的确在...
阅读全文
摘要:第十四章 软件体系结构——奠定软件设计的基础我们已经建造出很多的建筑物,其历史要远远超过我们编写软件的时间,我们现在仍然要学习掌握制作优秀的软件体系结构的要素。体系结构视图的缺失对于软件造成的影响是很大的。这样的系统很难处理,也很难理解,其功能随机的散步在各个模块之间,它的状态糟糕到你唯一能做的事就是把它扔掉。软件体系结构是一种顶级定义,是一种对系统的全面概览,其中刻意避免了过多的细节,它是宏观层...
阅读全文
摘要:第十三章 崇尚设计——如何创作出优秀的软件设计成熟程序员的判断标准就是他或她的代码的设计质量。一种错误的想法: 设计是一个需要在开始编写代码之前完成的阶段,这个阶段的成果就是某种形式的设计规范。其实编程本身就是一种设计活动。编程的过程将检验初始的设计决策,并完成剩余的设计工作。编程是一种设计活动,它是一项富含创造性和艺术性的工作,而不是机械呆板的代码生成过程。在编写代码之前先进行思考,创建一种条理...
阅读全文
摘要:第十二章 不安全感综合症——编写安全的程序大多数的软件系统都是需要一定的安全水平,无论软件系统处理的是否是敏感数据。要了解你拥有哪些重要的资源,你是否拥有攻击者可能会希望得到的非常敏感的信息或特定的能力。为什么会有人攻击你的系统呢?因为你拥有他们想要的东西,包括:你的处理能力。你发送数据的能力。你存储的私人信息。你的权限。你对更令他们感兴趣的远程系统的连接。只要存在一个不安全的程序,就会让整个计算...
阅读全文
摘要:第十一章 追求速度优化是一个悬浮在软件开发上的幽灵,很多编程错误都是以效率的名义犯下的。“优化”指改善某个事物以使它更好,对于更好,从不同方面看,有不同的理解:1. 使程序运行速度更快;2. 减少可执行文件的大小;3. 提高代码的质量;4. 提高计算结果的准确性;5. 将启动时间减到最小;6. 增加数据的吞吐量;7. 减少存储开销。对于优化,建议如下:不要做优化。一种错误的想法:只有在开发结束使你...
阅读全文