下载 >  开发技术 >  Java > 软件开发沉思录
4

软件开发沉思录

摘要: 优秀设计背后的核心概念其实并不高深。比如内聚性、松耦合、零重复、封装、可测试性、可读性以及单一职责。这七条评判代码质量的原则就已经被广泛接受了。然而真正困难的是如何把这些概念付诸实践。理解了封装就是隐藏“数据、实现细节、类型、设计或者构造”,这只是设计出良好封装的代码的第一步而已。因此,本文接下来是一系列实践规则和练习,它可以帮助你将良好的面向对象设计原则变得更加具体,从而在现实世界中应用那些原则。
2011-11-17 上传大小:1.3MB
想读
分享
收藏 (1) 举报

评论 共3条

zuiaiduoduo520 书不错,看了比较有感触,很有帮助
2014-01-17
回复
kuang_yf 不是很全,不过有参考价值
2013-04-24
回复
weijiang1010 简洁版,实际内容不多
2013-03-20
回复
软件开发沉思录(高清版)

软件开发沉思录(高清版) 收藏专用 编码提高的圣经

立即下载
软件开发沉思录 ThoughtWorks文集

本书对当前软件开发中存在的问题进行了广泛的探讨。包括公司创始人 roy singham在内的许多 thoughtworks员工参与到了这本文集的编写工作中,他们针对如何在软件开发生命周期中提高效率提出了多种可行性建议,内容涉及设计、架构、测试、领域特定语言的使用、构建和部署过程等。 本书的独特之处在于,它是由资深管理者和一线工程师共同创作完成的,各篇文章的作者以自己独到的视角对主题进行了分析,将其在特定领域积累的经验心得悉数奉上,从而能让更多的读者从中受益。本书条理清晰、思维严谨却又不乏生动活泼之处,而即便是书中专业性最强的文章,也不会让人觉得难以理解,除了技术人员外,本书对相关的非技术人员也很有价值。

立即下载
软件管理沉思录:SEI的项目管理、人际沟通和团队协作要诀,完整扫描版

本书为软件工程领域权威人士之作,书中首先深入讲解了计划类型和计划过程,接着分析了项目团队建设和激励,然后描写了如何与经理共事,如何说服他们采用最佳实践,最后探讨了个人职责、承诺和过程。 本书适合软件项目管理人员阅读。

立即下载
快速软件开发 -- pdf

******************************* 快速软件开发 ******************************

立即下载
《C++沉思录》(高清版)

这是一本C++名著,建议下载后多看几遍,相信每看一遍,你都会有新的收获!!

立即下载
软件管理沉思录(英文)

软件管理沉思录

立即下载
C++沉思录_中文版_清晰 带书签目录.pdf

《C++沉思录》基于作者在知名技术杂志发表的技术文章、世界各地发表的演讲以及斯坦福大学的课程讲义整理、写作而成,融聚了作者10多年C++程序生涯的真知灼见。全书分为6篇32章,分别对C++语言的历史和特点、类和继承、STL与泛型编程、库的设计等几大技术话题进行了详细而深入的讨论,细微之处几乎涵盖了C++所有的设计思想和技术细节。全书通过精心挑选的实例,向读者传达先进的程序设计的方法和理念。

立即下载
交互设计沉思录:顶尖设计专家JON KOLKO的经验与心得(原书第2版),完整扫描版

《交互设计沉思录:顶尖设计专家Jon Kolko的经验与心得(原书第2版)》由交互设计领域的思想领袖Jon Kolko所著,是交互设计领域的里程碑之作。本书完美地将当代设计理论和研究成果融入交互设计实践中,将对交互设计的阐释和分析推向了新的高度。本书重点阐释了对交互设计领域的最新理解和洞察,以及人与科技之间的联系。作者通过引人入胜的内容实现对设计师的教化,帮助设计师教化商业人士,同时确立交互设计在商业领域中的地位。本书不但探讨了经济局面的变化、互联性的增强和全球化的科技普及如何影响针对人类行为的设计活动和设计本身,而且对交互设计的定义进行了更好地阐释,主要涵盖三个方面:其一,交互设计涉及的各个知识层面;其二,交互设计作为“以人为本”的学科所包含的基本概念;其三,交互设计师在实践当中获得的经验和采用的方法与手段。此外,《交互设计沉思录:顶尖设计专家Jon Kolko的经验与心得(原书第2版)》还讨论了(设计)语言、观点和话术在产品、服务和系统的设计当中所扮演的角色,并介绍了交互设计师处理关乎行为和时间的复杂问题的过程,该过程包括构造大量的数据、考察用户、尝试为随时间不断演化的人类行为提供支持等。

立即下载
《C++沉思录》(完整中文版)

本书基于作者(Andrew Koenig/Barbara Moo)在知名技术杂志发表的技术文章、世界各地发表的演讲以及斯坦福大学的课程讲义整理、写作而成,融聚了作者10多年C++程序生涯的真知灼见。   全书分为6大部分,共32章,分别对C++语言的历史和特点、类和继承、STL与泛型编程、库的设计等几大技术话题进行了详细而深入的讨论,细微之处几乎涵盖了C++所有的设计思想和技术细节。全书通过精心挑选的实例,向读者传达先进的程序设计的方法和理念。   本书适合有一定经验的C++程序员阅读学习,可以帮助你加强提高技术能力,成为C++程序设计的高手。

立即下载
C++沉思录 第2版 (经典必读)

《C++ 沉思录》集中反映了C++的关键思想和编程技术,不仅告诉你如何编程,还告诉你为什么要这样编程。本书曾出现在众多的C++专家推荐书目中。 这将是C++程序员的必读之作。

立即下载
软件开发沉思录<一>
《软件开发沉思录》之实用主义性能测试
C++沉思录完整版(中文版).rar

C++沉思录完整版(中文版).rar

立即下载
SQL沉思录(世界级SQL专家经典著作)--详细书签版

CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 SQL沉思录(世界级SQL专家经典著作) 基本信息 原书名: Joe Celko's Thinking in Sets: Auxiliary, Temporal, and Virtual Tables in SQL 原出版社: Morgan Kaufmann 作者: (美)Joe Celko 译者: 马树奇 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:9787115213952 上架时间:2009-11-13 出版日期:2009 年11月 开本:16开 页码:270 版次:1-1 编辑推荐   世界级SQL专家经典著作   通过大量实例深入揭示SQL编程本质   叫你不同于过程和OO编程的全新思考方式 内容简介    本书通过大量的实例,详细说明了为提高sql编程技术而必须面对的思想方法上的根本转变——由以过程式编程方式思考转变为以数据集的方式来思考。此外,本书还讨论了关于sql编程中查找表、视图、辅助表、虚拟表的应用,并独到地阐明了如何在sql系统中正确地处理时间值以及sql编程中的其他技术难点。    本书适合广大数据库编程人员和sql程序员学习参考。 作译者作者: Joe Celko    Joe Celko 世界著名的数据库专家,曾担任ANSl SQL标准委员会成员达10年之久,参与了SQL-89和SQL-92标准的制定,是世界上读者数量最多的SQL图书作者之一。他曾撰写过一系列专栏,并通过他的新闻组支持和推动了数据库编程技术以及ANSl/ISO标准的发展。除本书外,他还撰写了多部SQL经典著作,包括《SQL编程风格》、《SQL解惑》和《SQL权威指南》,上述作品的中文版均已由人民邮电出版社出版。 目录 封面 -10 封底 271 扉页 -9 版权 -8 版权声明 -7 前言 -5 目录 -4 第1章 SQL是声明式语言,不是过程式语言 1 1.1 不同的编程模型 1 1.2 不同的数据模型 3 1.2.1 “列”不是“字段” 4 1.2.2 行不是记录 6 1.2.3 表不是文件 9 1.2.4 关系键不是记录定位器 11 1.2.5 键的类型 12 1.2.6 关系键的理想属性 14 1.2.7 唯一,但并非不变 15 1.3 表作为实体 15 1.4 表作为关系 16 1.5 语句不是过程 16 1.6 分子、原子和亚原子型数据元素 17 1.6.1 分割表 17 1.6.2 分割列 18 1.6.3 时间值的分割 19 1.6.4 假造的非第一范式数据 19 1.6.5 分子型数据元素 21 1.6.6 异构数据元素 21 1.6.7 检验分子型数据 22 第2章 硬件、数据量和维护数据库 23 2.1 并行处理技术 23 2.2 廉价的主存储器 25 2.3 固态磁盘 25 2.4 更廉价的二级存储器和三级存储器 25 2.5 数据也在改变 26 2.6 思维方式并未改变 26  第3章 数据访问和记录 29 3.1 顺序访问 29 3.2 索引 30 3.2.1 单表索引 31 3.2.2 多表索引 31 3.2.3 索引的类型 32 3.3 散列 32 3.3.1 数字选择 33 3.3.2 除法散列 33 3.3.3 乘法散列 33 3.3.4 合并 33 3.3.5 表的查找 33 3.3.6 冲突 34 3.4 位向量索引 34 3.5 并行访问 34 3.6 行和列存储 35 3.6.1 基于行的存储 35 3.6.2 基于列的存储 35 3.7 联结算法 36 3.7.1 嵌套循环联结算法 37 3.7.2 排序合并联结算法 37 3.7.3 散列联结算法 37 3.7.4 Shin算法 38 第4章 查找表 39 4.1 数据元素的名称 40 4.2 多参数查找表 42 4.3 常量表 43 4.4 OTLT或MUCK表问题 45 4.5 正确表的定义 48 第5章 辅助表 49 5.1 序列表 49 5.1.1 创建序列表 51 5.1.2 序列构造器 51 5.1.3 替换迭代循环 52 5.2 排列 54 5.2.1 通过递归进行排列 54 5.2.2 通过CROSS JOIN进行排列 55 5.3 函数 57 5.4 通过表实现加密 59 5.5 随机数 60 5.6 插值 63 第6章 视图 66 6.1 Mullins视图使用原则 66 6.1.1 高效访问和计算 67 6.1.2 重命名列 68 6.1.3 避免增生 68 6.1.4 视图同步原则 68 6.2 可更新视图和只读视图 69 6.3 视图的类型 71 6.3.1 单表投影和限制 71 6.3.2 计算列 71 6.3.3 转换列 72 6.3.4 分组视图 72 6.3.5 联合视图 73 6.3.6 视图的联结 74 6.3.7 嵌套视图 75 6.4 用表构建类模型 76 6.4.1 SQL中类的层次结构 77 6.4.2 通过ASSERTION和TRIGER工作的子类 79 6.5 数据库系统如何处理视图 79 6.5.1 视图列的列表 79 6.5.2 视图的物化 80 6.6 嵌入式文本扩展 80 6.7 WITH CHECK OPTION子句 81 6.8 删除视图 86 6.9 过时的视图用法 87 6.9.1 域的支持 87 6.9.2 表表达式视图 88 6.9.3 表级CHECK()约束的视图 88 6.9.4 每个基表一个视图 88 第7章 虚拟表 90 7.1 派生表 90 7.1.1 列的命名规则 91 7.1.2 作用域规则 91 7.1.3 公开的表名 93 7.1.4 LATERAL()子句 94 7.2 CTE 96 7.2.1 非递归CTE 96 7.2.2 递归CTE 97 7.3 临时表 98 7.3.1 ANSI/ISO标准 99 7.3.2 厂商的模型 99 7.4 信息模式 99 7.4.1 INFORMATION_SCHEMA声明 100 7.4.2 视图及其用途的快速列表 101 7.4.3 域的声明 102 7.4.4 定义模式 102 7.4.5 INFORMATION_SCHEMA断言 105 第8章 用表实现的复杂函数 106 8.1 没有简单公式的函数 106 8.2 用表实现校验位 107 8.2.1 校验位的定义 107 8.2.2 检错与纠错的对比 108 8.3 算法的分类 109 8.3.1 加权和算法 109 8.3.2 幂和校验位 111 8.3.3 Luhn算法 112 8.3.4 Dihedral Five校验位 113 8.4 声明不是函数,不是过程 114 8.5 用于辅助表的数据挖掘 118 第9章 时态表 120 9.1 时间的本质 120 9.1.1 时间段,不是时间子 121 9.1.2 细分程度 122 9.2 ISO半开放时间模型 123 9.2.1 用NULL表示永远 125 9.2.2 单时间戳表 125 9.2.3 重叠的时间间隔 127 9.3 状态转换表 134 9.4 合并时间间隔 138 9.4.1 游标和触发器 139 9.4.2 OLAP函数解决方案 140 9.4.3 CTE解决方案 141 9.5 Calendar表 142 9.5.1 用表提供星期值 142 9.5.2 节假日列表 143 9.5.3 报告期 145 9.5.4 自更新视图 145 9.6 历史表 147 第10章 用非第一范式表清理数据 149 10.1 重复的组 149 10.2 设计清理表 155 10.3 清理操作使用的约束 157 10.4 日历清理 158 10.5 字符串清理 159 10.6 共享SQL数据 161 10.6.1 数据的发展 162 10.6.2 数据库 162 10.7 提取、转换和加载产品 163 10.7.1 加载数据仓库 164 10.7.2 全部用SQL来完成 165 10.7.3 提取、转换并加载 166 第11章 以SQL的方式思考 168 11.1 热身练习 168 11.1.1 整体,不是部分 169 11.1.2 特征函数 169 11.1.3 尽早锁定解决方案 171 11.2 启发式方法 172 11.2.1 将规范表达为清晰的语句 172 11.2.2 在名词前面添加“所有……的集合”几个字 172 11.2.3 删除问题语句中的行为动词 173 11.2.4 仍然可以使用存根 173 11.2.5 不要担心数据的显示 174 11.2.6 第一次尝试需要专门处理 175 11.2.7 不要害怕抛弃自己在DDL中的首次尝试 175 11.2.8 克制使用DML的冲动 176 11.2.9 不要以方框和箭头的方式思考 176 11.2.10 画圆和数据集示意图 177 11.2.11 学习具体的产品 178 11.2.12 把WHERE子句看做“超级变形虫” 178 11.2.13 使用新闻组、博客和因特网 178 11.3 不要在SQL中使用BIT或BOOLEAN标记 179 11.3.1 标记位于错误的层 179 11.3.2 标记使用不当使正确属性难以理解 181 第12章 组特征 184 12.1 并不是按是否相等来分组 185 12.2 使用组,不看里面是什么 186 12.2.1 半面向数据集的方式 187 12.2.2 分组的解决方案 188 12.2.3 解决方案总结 189 12.3 根据时间分组 190 12.3.1 渐进式解决方案 190 12.3.2 整体数据解决方案 192 12.4 其他使用HAVING子句的技术 192 12.5 GROUPING、ROLLUP和CUBE 194 12.5.1 GROUPING SET子句 194 12.5.2 ROLLUP子句 195 12.5.3 CUBE子句 196 12.5.4 关于超级组的脚注 196 12.6 WINDOW子句 196 12.6.1 PARTITION BY子句 197 12.6.2 ORDER BY子句 198 12.6.3 RANGE子句 198 12.6.4 编程技巧 199 第13章 将技术规范变为代码 200 13.1 不良SQL的标志 200 13.1.1 代码的格式是否像另一种语言 200 13.1.2 顺序访问假设 201 13.1.3 游标 201 13.1.4 糟糕的内聚度 201 13.1.5 表值函数 202 13.1.6 同一数据元素有多个名称 202 13.1.7 数据库中的格式 202 13.1.8 将日期保存到字符串中 203 13.1.9 BIT标记、BOOLEAN及其他计算列 203 13.1.10 跨列的属性分割 203 13.1.11 跨行的属性分割 203 13.1.12 跨表的属性分割 203 13.2 解决方法 204 13.2.1 基于游标的解决方案 204 13.2.2 半面向数据集的解决方案 205 13.2.3 完全面向数据集的解决方案 207 13.2.4 面向数据集代码的优点 207 13.3 解释含糊的说明 207 13.3.1 回归到DDL 209 13.3.2 修改问题说明 211 第14章 使用过程及函数调用 213 14.1 清除字符串中的空格 213 14.1.1 过程式解决方案#1 213 14.1.2 函数解决方案#1 214 14.1.3 函数解决方案#2 217 14.2 聚合函数PRD() 218 14.3 在过程和函数中使用长参数列表 220 第15章 对行编号 223 15.1 过程式解决方案 223 15.2 OLAP函数 226 15.2.1 简单的行编号 226 15.2.2 RANK()和DENSE_RANK() 227 15.3 节 228 第16章 保存计算数据 231 16.1 过程式解决方案 231 16.2 关系式解决方案 232 16.3 其他种类的计算数据 233 第17章 约束类触发器 234 17.1 计算类触发器 234 17.2 通过CHECK()和CASE约束实现的复杂约束 235 17.3 通过视图实现复杂约束 237 17.4 用约束实现视图操作 239 17.4.1 3个基本操作 239 17.4.2 WITH CHECK OPTION子句 240 17.4.3 WITH CHECK OPTION与CHECK()子句 243 17.4.4 视图的行为 244 17.4.5 联合视图 246 17.4.6 简单的INSTEAD OF触发器 247 17.4.7 关于INSTEAD OF触发器的告诫 250 第18章 过程式解决方案和数据驱动的解决方案 251 18.1 删除字符串中的字母 251 18.1.1 过程式解决方案 252 18.1.2 纯粹的SQL解决方案 252 18.1.3 不纯粹的SQL解决方案 253 18.2 数独的两种求解方法 254 18.2.1 过程式解决方案 254 18.2.2 数据驱动的解决方法 254 18.2.3 处理已知数字 255 18.3 数据约束方法 257 18.4 装箱问题 261 18.4.1 过程式解决方法 261 18.4.2 SQL方式 262 18.5 库存成本随时间的变化 264 18.5.1 库存中使用的UPDATE语句 267 18.5.2 回到装箱问题 268 前言   本书讨论的是使用表而不是过程式代码的各种SQL编程技术。我一直跟大家说,学习SQL编程最重要的就是要摒弃原有的过程式编程,但对于那些一直都在以文件和过程代码的方式来思考的人们而言,仅仅这样说不行,还得具体说明如何采用声明式关系语言来完成相关工作。因此我编写了本书,展示实际技术,阐述思想方式。.   与我的其他作品相同,本书的读者对象是那些希望掌握良好SQL编程技术的专业SQL程序员。本书假定读者对SQL语言足够了解,已经能够编写可以运行的代码,具有一年的SQL使用经验。   为什么需要具有一年的经验呢?我通过几十年讲授SQL课程发现,大多数人在由过程式编程语言(如FORTRAN、Cobol、Pascal、C系列语言)、面向对象编程语言等转向SQL语言时,都要经过多个阶段,而这段时间基本为一年。声明式语言与他们此前使用的所有编程语言都不相同。   学习一门新的编程语言就如同学习一门外语。一开始,人们会念错单词,并且总想使用自己母语的词序和语法。接下来,人们会通过努力,根据一种固定模式来正确地造句。最后,人们才能轻松地以该语言来思考和表述,并且不需要再刻意关注语言本身。   SQL编程的初级阶段只不过是闭着眼睛从别人的程序中把现有的代码复制过来,这并不是真正的编程。人们可能还会使用一种具有图形用户界面的工具来从文本文件中把SQL语句组合起来,甚至根本不需要显示自己的实际代码。   接下来的阶段是编写新的SQL代码,但仍然像使用自己最初熟悉的语言那样来操作。这种思维模式的问题在于错用术语。例如,将列称为字段,仿佛仍然在使用顺序文件系统一样。这种问题还表现在使用游标和时态表来模仿顺序文件系统,其中隐含着更大的危险和代价。   在使用SQL进行编程接近一年的时候,程序员的思维方式开始出现变化。他已经见过了优秀的SQL代码,了解了关于RDBMS(关系数据库管理系统)的相关技术,最终开始以SQL的方式来思考。走运的话,这段时间他可能还参加了大学或者其他机构开设的培训课程。   关于这种思维模式问题的最有趣的例子是,我几十年前曾经为一些工程师讲授大学课程,这些工程师只知道FORTRAN和C语言。他们认为SQL肯定也是一些WHILE循环或者IF-THEN结构。其中有一个LISP程序员就很高兴,因为SQL中没有迭代循环和代码模块嵌套,但他无法理解SQL中为什么没有递归结构。..   使用数据库的开发人员不能满足于会使用原有编程语言。2007年3月22日IT媒体上发表的Evans数据公司的一篇文章表明,经过一次为期两年的调查发现,有40%的美国程序员工作中要使用数据库。该调查还表明,仅仅一年前,工作中需要使用数据库的开发者还只占32%。   辅助表、时态表和虚拟表   SQL中只有一种数据结构:表。使用表的方式经常会影响到声明它们的方式。在存储系统中始终存在的有基表(base table)或叫操作表(operational table)。它们保存着数据模型的核心数据,但表的种类并不仅限于此。   如果对中转表(staging table)不加约束或者甚至连键(key)也没有,那么它会变成可怕的怪物。但SQL允许人们创建中转表。人们可以将它作为废旧数据、原始数据的中转区,而不想把这些数据放入自己的整齐、漂亮的基表中。   辅助表用于通过联结操作而不是过程式编程来完成函数运算及计算其他值。此方面一个常见的例子是用于处理编码转换工作的查找表,以及无法简单计算出结果的函数。因为它们并不是实际的实体或者关系,因此不能出现在数据模型的实体-关系图(ER图)中。   时态表是指支持时态查询、历史数据和审计信息的表。尽管它既可以被看做辅助表也可以看做基表,但仍然需要特别关注。这方面的讨论涉及的概念和具体实现都比较复杂。   虚拟表是由SQL引擎物化(或者表面上物化)了的表。实际上在诸如基表这样的模式中,它们并不存在。它们有多种表现形式,可以用于提高SQL语句的性能。   本书还讨论了模式信息表(Schema Information Tables),SQL用它来描述SQL本身的模式。模式信息表有ANSI/ISO标准,但大多数产品各自遵循的标准会略有不同。...    媒体评论   Joe Celko写的所有的书我都买了,这本书是其中写得最好的一本……强烈推荐!   ——Amazon.com读者评论...

立即下载
《软件开发沉思录》之对象健身操
软件开发沉思录--ThoughtWorks文集
C++沉思录C++沉思

C++沉思录C++沉思录C++沉思录C++沉思录C++沉思录C++沉思录C++沉思录C++沉思录C++沉思录

立即下载
c++沉思录(中文版)

中文版本c++沉思录c++沉思录c++沉思录c++沉思录c++沉思录c++沉思录

立即下载
C++沉思录-完整,C++沉思录-完整C++沉思录-完整

C++沉思录-完整 C++沉思录-完整 C++沉思录-完整 C++沉思录-完整 C++沉思录-完整

立即下载
设计模式沉思录.pdf.pdf

设计模式沉思录.设计模式沉思录.设计模式沉思录.

立即下载
关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

软件开发沉思录

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
VIP和C币套餐优惠
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载
您还未下载过该资源
无法举报自己的资源

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可返还被扣除的积分

  • 举报人:
  • 被举报人:
  • *类型:
    • *投诉人姓名:
    • *投诉人联系方式:
    • *版权证明:
  • *详细原因: