
大规模C++程序设计
文章平均质量分 92
大规模C++程序设计
turbolove
学习-模仿-创造
展开
-
逻辑设计问题 -- 实现一个对象
将函数行为无定义的条件建成文档是开发接口的一个重要的部分。在接口中进行注释是消极的,并且不会再运行时发出程序出错的警告。我们可以结合使用注释和assert语句来得到 轻量级的可维护代码。原创 2024-04-08 10:18:28 · 692 阅读 · 0 评论 -
逻辑设计问题 -- 设计一个函数
但是这样的结构是许多接口的必要的一个部分。在实际中一个32位机器上,在接口中我们需要的唯一整数类型是int,任何使用其他类型都潜在的存在效率低,不能封装、易于出错或者只是使用起来很麻烦的可能性。如果一个函数只有一个单一参数,该参数是指向某个对象的引用,并且若不经过显式的转换就不能从函数体 内部获得一个指向同一个对象的非const引用,那么这个对象是const正确的。在一个系统中,如果一个只有一个参数的函数未通过显式转换就不能获得一个指向这些对象中的任何一个的可写引用,那么这个系统就是const正确的。原创 2024-03-27 08:41:43 · 630 阅读 · 0 评论 -
逻辑设计问题 -- 构建一个组件
对于被设计为特定子系统的一部分的组件,我们要求其接口对于所预期的客户来说是充分的就可以了。充分性指的是,该接口对于解决某个领域的问题的特定实例来说是合适的。例如,为了避免不必要的逻辑耦合,应经常选择是哟个一个const char * 参数而不是使用某个特殊的string类,尤其是当接口将在许多不同的上下文中被客户使用的时候。如果一个操作的有效实现需要直接访问那个类的私有细节,那么这个操作是基本的。通常一个组件会在其实现中使用一个或者多个小的辅助类,他们在组件中定义的接口中是不能编程访问的。原创 2024-03-26 08:45:08 · 1116 阅读 · 0 评论 -
物理设计概念 -- 包
一个init函数方法是灵活的,也是最容易引起错误的,但是当独立访问函数是轻量级的并且被频繁调用时,它可能是必要的。最后,如果我们知道我们很可能需要一个再启用之后立即初始化的组件,他的函数是轻量级的且被频繁调用,那么灵巧计数器的方法也许是最好的选择。和包一样,一个群定义的目的应该决定它的内容;从一个定义了main的编译单元中分解出独立可测试的和潜在可重用的功能,本质上能够使程序的整个实现在一个更大型的程序中重用。对于定义在一个给定包的一个特定组件,若一下的问题的答案都是是,则意味着该组件的头必须输出。原创 2024-03-25 08:34:34 · 937 阅读 · 0 评论 -
物理设计概念 -- 绝缘
即使私有继承被认为是派生类封装了实现细节,派生对象的物理设计也会迫使包含派生类的定义的每个客户程序都要见到基类的定义,因此对一个派生类而言,把含有基类的头文件显示的包含在类的头文件中是合适的。因此,从一个基类中继承的并且在其他方面完全绝缘的类的实例,物理上一定不同于一个没有继承基类的完全绝缘的类的实例。绝缘的价值的最后一个实证是它允许我们透明的替换动态装载的库。我们作为过程接口的作者的工作是,确定在低层次上的实现组件中已经定义的类型和功能的一个合适的自己,这些实现组件最终用户完成他们所要的应用层任务。原创 2024-03-23 09:18:15 · 887 阅读 · 0 评论 -
物理设计概念 -- 层次化
升级和降级紧密相关。升级与降级本质区别只是功能移动的方向不同。我们有时可以通过分解出普遍需要的功能,并将它迁移到物理层次结构的更低层来消除组件之间的相互依赖。降级不仅对改进循环相互依赖设计有用,而且也对减少非循环体系结构的CCD有用。将共有的子系统降级可以同时改进可维护性和可扩展性。一个分解适当的系统会更加灵活,因为它的内部物理依赖允许它的组件以更多种类的有用方式被独立测试和重用。原创 2024-03-20 14:58:36 · 1070 阅读 · 0 评论 -
物理设计概念 -- 物理层次结构
这种分层体系结构使得测试工程师能访问在耕地抽象层次上实现的功能,而不会将低层次的接口暴露给产品的客户,最终的产品也要进行测试,以确保产品能满足客户的期望。因此,增量式测试反应的是被测试组件的实现复杂性,而不是这个组件所依赖的组件层次结构的复杂性。通过将组件的实现分解成独立的可测试组件的一个层次化的层次结构,我们已经为潜在地难以测试的组件的易测试性进行了设计。我们希望在隔离的情况下测试所有的叶子组件。面向对象技术的一种实际有效的应用是把极大的复杂性隐藏在一个小的、定义良好的、易于理解的和易于使用的接口后面。原创 2024-03-19 08:40:46 · 1497 阅读 · 0 评论 -
物理设计概念 -- 组件
一个组件的公共接口由那个类的公共成员的接口的并集构成,同样的,一个组件的公共接口也是由组件的头文件中所声明的公共成员函数、typedef、枚举类型和自由函数的集合构成。原创 2024-03-18 11:34:05 · 1325 阅读 · 0 评论 -
大规模C++程序设计 -- 基本规则
任何精美的艺术不仅来源于创造,而且来自于规范。编程也是如此。C++是易总大型语言,有充足的空间进行创造。但是,由于设计空间太大,以至于没有约束–也就是说没有设计结构上的一些适当的约束–大型项目很容易变的难以管理和维护。设计规则:经验告诉我们,某些编程习惯虽然在C++中完全合法,但是决不能简单地用于大型项目中。检验是否遵守了这些规则的过程不能是一种主观过程。设计规则必须足够准确、详尽和良好的定义,以便可以客观的检验是否遵守了这些规则。为了效果更好,设计规则必须适合于进行非人为的、借助自动工具的机械验证。原创 2024-03-16 10:08:04 · 1175 阅读 · 0 评论 -
大规模C++程序设计 -- 基础知识
它声明了一个没有详细说明函数体的函数它包含一个extern定义符并且没有初始化函数数或者函数体它是一个包含在一个类定义之内的静态数据成员的声明他是一个类名声明他是一个typedef声明它定义个了一个静态类数据成员它定义了一个非内联成员函数一个声明将一个名称引入一个程序;一个定义提供了一个实体在一个程序中的唯一描述class A{int x;char *p;类内的函数和静态数据成员生命是例外,虽然不是定义,但是在类定义中也不能重复。原创 2024-03-15 09:06:21 · 1579 阅读 · 0 评论