- 浏览: 119417 次
- 来自: ...
文章分类
最新评论
可以把这本书重命名为<<C++设计模式>>,也可以重命名为<<C++编程思想>>,甚至还可以叫它<<C++语言的设计和演化>>,总之,Koening谈到了以上所有方面,并且首先是编程思想和设计原则,其次才是C++,而其与Bjarne Stroustrup高度一致的思想,可以让人领略或者叹服一下C++社团的核心文化
基本上没什么可摘录的,因为除了包含很多代码的章节,剩下的几乎可以通篇摘录;很多代码都在标准库中有对应版本,但无论如何,如果能手工重新实现这些代码,一定会获益匪浅
-
用类来表示概念
-
识字最多的人一定是最好的作家吗?能演奏最多音符的人一定是最好的音乐家吗?最勤于挥舞画笔的人一定是最好的画家吗?显然不是,这些观点及其荒谬;然而,我们却经常认为,那些了解语言特性最多的人就是最好的程序员;这一看法同样是荒谬的:编程中最困难的部分并不是去学习语言细节,而是理解问题的解决之道
-
抽象是有选择的忽略,选择忽略什么和何时忽略
-
类设计者的核查表:你的类需要一个构造函数吗?你的类需要一个无参的构造函数吗?你的类需要一个复制构造函数吗?你的数据成员是私有的吗?是不是每个构造函数都初始化所有的数据成员?类需要析构函数吗?类需要虚析构函数吗?你的类需要赋值操作符吗?你的赋值操作符能正确的将对象付给本身吗?你的类需要定义关系操作符吗?记得在赋值操作符和复制构造函数的参数类型中加上了const吗?如果函数参数有引用参数,它们应该是const引用吗?记得适当的声明成员函数为const了吗?
-
设计一个成功的容器不可能是自然而然的;如果真有唯一正确的方法来做这件事,那么倒不如把它内建到语言中罢了
-
软件工程基本定理:引入一个额外的中间层,我们能够解决任何问题
-
函数对象适配器所解决的问题之一,是把信息从使用该函数对象的部分通过程序的另一部分(这一部分对要传递的信息一无所知)传递到第三部分中
-
所有这些改进都得益于数据抽象的概念:如果对某个类对象的所有单个操作都将对象置于一种合理的状态,那么对象的状态就会始终保持合理
-
我们不知道到底哪种策略正确:只要作出决定并写出文档就可以了
-
设计一个好程序库的要求之一就是彻底隔离接口和实现:构造函数和析构函数,成员函数和可见度控制
-
复杂度的守恒:C++采取了折中办法,为了更加灵活,它付出的代价是比我们希望的更庞大--但这就使生活
-
专家就是那种不仅理解你所试图掌握的东西,还能给你解释清楚的人;不能清楚的回答你提出的问题的人,并不是你所想的专家;还有人能清楚的解释事情,但却是完全错误的,幸亏这种人很少
-
继承是关联类型的一种方法,但迭代器不属于类型的范畴,所以这里需要的并不是继承,即使看起来是;可能我们应该称为概念继承,它和迭代器的那些需求一样,都不包含在C++语言和C++库中;相反,它们是构建C++库的概念框架的一部分(在标准库中实际上为了方便和一致,提供了几种迭代器的traits,并且有的实现采用了继承;概念检查是当前讨论的话题,boost提供了通过库来进行概念检查的试验,而对模板参数的约束则可能需要扩展语言来实现)
-
...
注:
-
个人感觉Java的成功主要是工程上的,对编程语言的理论方面作出的贡献不是很大,在编程语言发展史上的地位应该不如LISP,C语言之类,只能作为一种“类C语言”存在;工程上的成功主要决定于功能丰富的标准库,和能够快速形成应用方面的各种标准的机制;C++有意保持了标准库的基础层次,而将应用相关的库留给了开发者;造成的后果就是确实出现了很多高质量的库,然而也造成了资源的巨大巨大巨大的浪费;如果你是C++程序员,数一下你待过的公司、团队、项目中,有多少个socket封装类,多少个dao封装类就知道了
-
Bjarne Stroustrup一直抱怨C++的教育,认为当前的教育培养了使用C++编译器的C程序员,看到Koening实现后缀++操作符时 想到了这件事,揣测了一下原因,呵呵:
Bjarne Stroustrup(苦恼的):为什么我做了那么多努力,人们还是把C++当成C来用? Dennis Ritchie :因为你把这门语言命名为了C++,而不是++C |
发表评论
-
The Object Primer
2004-12-11 11:21 5951,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 761错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 596前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 624前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 47314.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 649同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 614有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 635设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 678关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 714交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 614整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 807一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 755事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 853经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 744BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6891, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 730读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 762十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 713Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 677Event BusinessWare是一个事件驱动的系统 ...
相关推荐
尽管给定文件的部分内容并未直接涉及C++的具体技术细节,但从标题、描述及标签中可以看出,这份材料聚焦于C++编程语言。以下是对C++这一主题的深入解析,旨在提炼并扩展C++的关键知识点。 ### C++概览 C++是一种...
《Ruminations On C++ CN Scan》是由Addison-Wesley出版社出版的一本关于C++编程语言的专业书籍,中文版的扫描版存放在这个压缩包中。这本书深入探讨了C++语言的核心概念、设计原则以及在实际编程中的应用。通过阅读...
《Ruminations-on-CPP.rar》是一部深度探讨C++编程语言的著作,尤其专注于STL(Standard Template Library,标准模板库)和泛型编程。STL是C++库中的核心部分,提供了高效、灵活的数据结构和算法,极大地提高了C++...
22 Ruminations on C++: A Decade of Programming Insight and Experience 23 Inside The C++ Object Model 24 Design Patterns: Elements of Reusable Object-Oriented software 25 Large-Scale C++ Software ...
22 Ruminations on C++: A Decade of Programming Insight and Experience 23 Inside The C++ Object Model 24 Design Patterns: Elements of Reusable Object-Oriented software 25 Large-Scale C++ Software ...
22 Ruminations on C++: A Decade of Programming Insight and Experience 23 Inside The C++ Object Model 24 Design Patterns: Elements of Reusable Object-Oriented software 25 Large-Scale C++ Software ...
22 Ruminations on C++: A Decade of Programming Insight and Experience 23 Inside The C++ Object Model 24 Design Patterns: Elements of Reusable Object-Oriented software 25 Large-Scale C++ Software ...
22 Ruminations on C++: A Decade of Programming Insight and Experience 23 Inside The C++ Object Model 24 Design Patterns: Elements of Reusable Object-Oriented software 25 Large-Scale C++ Software ...
22 Ruminations on C++: A Decade of Programming Insight and Experience 23 Inside The C++ Object Model 24 Design Patterns: Elements of Reusable Object-Oriented software 25 Large-Scale C++ Software ...
3. **历史背景**:例如《The Design and Evolution of C++》和《Ruminations on C++》,通过讲述C++的发展历程来帮助读者更好地理解这门语言。 4. **特定主题**:例如《Polymorphism in C++》和《Genericity in C++...
**《Ruminations on C++: A Decade of Programming Insight and Experience》** - **作者**:Andrew Koenig, Barbara E. Moo。 - **主要内容**: - 本书汇集了两位作者在过去十年间积累的关于C++编程的经验和...
- **Ruminations on C++**:作者Andrew Koenig的思考集,包含他对C++的深入洞察和建议。 学习C++的过程中,不应仅局限于某一类别,而是应结合入门、进阶和技巧类书籍,逐步深化理解和应用。对于初学者,选择一本...
3. **《Ruminations on C++》(关于C++的思考)**:虽然主要聚焦于C++,但其中涉及的编程思想和设计模式同样适用于C语言的学习者,有助于拓宽思维,深化对面向对象编程的理解。 总之,C语言的学习是一个不断探索和...