首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在命名空间结构中公开继承层次结构是一个坏主意吗?

在命名空间结构中公开继承层次结构是一个坏主意吗?

这个问题涉及到面向对象编程中的继承概念。在面向对象编程中,继承是一种代码复用机制,允许一个类(子类)继承另一个类(父类)的属性和方法。在命名空间结构中,公开继承层次结构是指子类可以访问父类的所有公共成员和受保护成员。

是否将继承层次结构公开到命名空间结构中,取决于设计和实现的需求。如果子类和父类之间的关系是紧密的,并且子类需要访问父类的成员来实现其功能,那么公开继承层次结构是一个好主意。这样可以减少代码重复,提高代码的可维护性和可扩展性。

然而,如果子类和父类之间的关系是松散的,或者子类只需要访问父类的一小部分成员,那么公开继承层次结构可能是一个坏主意。这是因为公开继承层次结构会暴露父类的实现细节,使得子类与父类的耦合度增加,降低了代码的可维护性和可扩展性。

总之,在命名空间结构中公开继承层次结构是否是一个坏主意,取决于设计和实现的需求。如果子类和父类之间的关系是紧密的,并且子类需要访问父类的成员来实现其功能,那么公开继承层次结构是一个好主意。但是,如果子类和父类之间的关系是松散的,或者子类只需要访问父类的一小部分成员,那么公开继承层次结构可能是一个坏主意。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么不重构呢?

重构提高质量的重要工具。许多开发方法都依赖于重构,尤其对于敏捷方法,更多计划驱动的组织也是如此。但事实上,是否以重构来处理设计的某些问题呢?是否存在重构的障碍呢?...难度 另一个问题进行更改的难度,比如“继承很难正确重构”和“这种重构通常很困难”等等。...代码分析未必有效 软件工程,往往使用每类加权方法(WMC)和继承树(Depth of Inheritance Tree,DIT) 来度量面向对象的设计,这些度量常常被表示为可能的设计问题,即WMC...WMC 类的大小度量的一种形式,最简单的形式类中方法数量的计数。DIT 捕获继承层次结构一个特征,它是从类到层次结构根的最长路径长度。...然而,对软件系统的测量表明,有些类具有很多方法,或者层次结构中非常深。它就需要重构么? 实际上,工程师更倾向于限制类的深度,而不是方法的数量,但是当超过某个深度限制时,开发者倾向于不做任何事情。

29820
  • Nat. Mach. Intell. | 利用几何构象提升化合物分子建模效果

    ”(Geometry Enhanced Molecular Representation Learning,GEM模型),揭示了一种基于三维空间结构信息的化合物建模方法,以及药物研发的应用。...公开资料显示,《Machine Intelligence》《Nature》旗下专注于机器学习领域的顶级期刊,过去两年该期刊的影响因子已超过16。...该项研究,百度螺旋桨PaddleHelix团队首次将化合物的几何结构信息引入自监督学习和分子表示模型,并在下游十多项的属性预测任务取得SOTA,成为百度AI赋能药物研发领域对外公开的又一项重磅成果...值得一提的,该研究由百度螺旋桨PaddleHelix生物计算团队独立完成,并已经药物研发领域,携手合作伙伴早期药物研发管线中落地。...有些研究直接把每个化合物看作一个图,利用基于图拓扑结构的自监督学习方法进行分子表征,比如,遮盖并还原化合物图中的原子,化学键或子结构

    45110

    “几何构象增强AI算法”,百度生物计算最新研究成果登上《Nature》子刊

    “几何构象增强 AI 算法”(Geometry Enhanced Molecular Representation Learning,GEM 模型),揭示了一种基于三维空间结构信息的化合物建模方法,以及药物研发的应用...论文链接:https://www.nature.com/articles/s42256-021-00438-4 公开资料显示,《Machine Intelligence》《Nature》旗下专注于机器学习领域的顶级期刊...该项研究,百度螺旋桨 PaddleHelix 团队首次将化合物的几何结构信息引入自监督学习和分子表示模型,并在下游十多项的属性预测任务取得 SOTA,成为百度 AI 赋能药物研发领域对外公开的又一项重磅成果...而百度首次提出,将化合物的空间结构信息引入到化合物预训练,通过几何增强的自监督学习,对化合物分子进行表征,通过化合物的表征自主推断出空间结构信息,进而预测化合物分子的性质属性,以辅助进行药物研发,提升效率...有些研究直接把每个化合物看作一个图,利用基于图拓扑结构的自监督学习方法进行分子表征,比如,遮盖并还原化合物图中的原子,化学键或子结构

    32630

    再谈 Python 继承(译)

    这也意味着总是存在这样的危险:同一层次结构的两个类,它们彼此不认识,却拥有一个同名的属性。...最常见的问题,要找出哪些方法存在的(尤其像 Twisted 这样的深层次结构)非常麻烦,以及如果你方法的名字错了一点点,基类找不到,往往会静默地失败4。...---- 使用 ABC 定义接口的一个「好处」,通过继承它们,你可以抽象基类添加普通的方法来偷渡到代码共享。但正如一开始提到的:混合子类类型坏主意。...它们拥有基类的所有属性,并增加了属性、方法,或者只是一个层次结构增加了一个位置7。 尽管这种简单很诱人,但它经常被错误地使用。...你总是把一个通用的 API 协议特化为一些具体的东西。关键的区别在于,抽象的数据类型......嗯......抽象的。 ---- 我发现特化表示一个具有严格层次结构的数据时相当有用。

    26150

    C++奇迹之旅:STL初步学习

    什么STL STL(standard template libaray-标准模板库):C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 一个包罗数据结构与算法的软件框架。...Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低, 符号命名比较怪异。...STL的六大组件 STL的重要性 笔试 JZ78 把二叉树打印成多行 重建二叉树 用两个栈实现队列 面试 在工作 网上有句话说:“不懂STL,不要说你会C++”。...STLC++的优秀作品,有了它的陪伴,许多底层的数据结构 以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。...容易使你迷失的STL几乎每一个部分都充斥着Templat、选代器和重载的运算符,如果你对它们一无所知,STL的海洋里就会寸步难行。

    10410

    BASS:为单细胞分辨率的空间转录组学提供多尺度和多样本分析

    BASS单细胞尺度上进行细胞类型聚类,组织区域尺度上进行空间结构域检测,这两项任务贝叶斯层次结构模型框架内同时进行。 BASS是什么?...目前用于细胞类型聚类和空间结构域检测的方法存在两方面的局限性:1)所有现有方法仅执行两个分析任务一个,有效地使两个不同解剖尺度的分析相互分离;2)所有现有方法都集中于分析从单个组织切片收集的空间转录组学数据...分析,BASS将组织上每个细胞的细胞类型标签(c)和空间结构域标签(z)作为潜在/隐藏的变量,并通过一个有效的推理算法推断它们。...值得一提的,BASS的多样本综合分析能力进一步提高了用于一个样本分析的同一组织切片上的空间结构域检测精度。...另一个例子用主成分分析(PCA)归一化基因表达矩阵的低维成分作为BASS的输入,且BASS并不局限于PCA,它可以与其他降维方法配对,以其低维分量作为输入。

    37630

    Python 学习笔记之类与实例

    类型与实例 如果类模块定义,那么其生命周期与模块等同,如果被放在函数内,那么每次都是新建。即便名字和内容相同,也属于不同类型。...继承层次的不同名字空间中允许有同名成员,并按顺序优先命中。 二 字段 依照所处空间不同,我们将字段分为类型字段和实例字段。 官方将成员统称为 Attribute,我们可按例将数据当做字段。..._name) >>> B().test() ''' user ''' 三 属性 对私有字段会进行重命名保护,那公开字段如何处理呢?...实例方法 实例方法与实例对象绑定,在其参数列表,将绑定对象作为第一参数,以便在方法读取或修改数据状态。以实例引用调用方法时,无须显式传入第一实参,而由解释器自动完成。...下一节将详细介绍类的继承及重载。 PS:文章中有你没掌握的?留言告诉我! END

    43210

    BASS:为单细胞分辨率的空间转录组学提供多尺度和多样本分析

    BASS单细胞尺度上进行细胞类型聚类,组织区域尺度上进行空间结构域检测,这两项任务贝叶斯层次结构模型框架内同时进行。图片BASS是什么?...目前用于细胞类型聚类和空间结构域检测的方法存在两方面的局限性:1)所有现有方法仅执行两个分析任务一个,有效地使两个不同解剖尺度的分析相互分离;2)所有现有方法都集中于分析从单个组织切片收集的空间转录组学数据...分析,BASS将组织上每个细胞的细胞类型标签(c)和空间结构域标签(z)作为潜在/隐藏的变量,并通过一个有效的推理算法推断它们。...值得一提的,BASS的多样本综合分析能力进一步提高了用于一个样本分析的同一组织切片上的空间结构域检测精度。...另一个例子用主成分分析(PCA)归一化基因表达矩阵的低维成分作为BASS的输入,且BASS并不局限于PCA,它可以与其他降维方法配对,以其低维分量作为输入。

    42810

    Linux的命名空间详解--Linux进程的管理与调度(二)【转】

    本质上,命名空间建立了系统的不同视图。此前的每一项全局资源都必须包装到容器数据结构,只有资源和包含资源的命名空间构成的二元组仍然全局唯一的。...如果命名空间包含的比较简单的量,也可以是非层次的,例如下文讨论的UTS命名空间。在这种情况下,父子命名空间之间没有联系。...task_struct 结构中有一个指向namespace结构体的指针nsproxy。...文件,这里一共定义了5个各自的命名空间结构体,结构定义了5个指向各个类型namespace的指针,由于多个进程可以使用同一个namespace,所以nsproxy可以共享使用,count字段结构的引用计数...命名空间的实现需要两个部分:每个子系统的命名空间结构,将此前所有的全局组件包装到命名空间中;将给定进程关联到所属各个命名空间的机制。

    1.9K21

    struts2(二)之配置文件详解与结果视图

    :按照名称空间结构向上追溯,一直到根名称空间,只要在任何一级找到了,执行第二步。       ...那么很多人就问,这不是多此一举继承它跟不继承它的区别不     大呀?...2)redirectAction(注意:使用的重定向)     2.1)重定向到同包(同命名空间)下的另一个动作 ?     注意:action2的type没有写,说明用默认的转发。     ...2.2)重定向到不同包(不同命名空间)写的另一个动作 ?   ...3)chian(使用的转发)     转发到同包(同命名空间)下的动作     转发到不同包(不同命名空间)写的另一个动作 3.3、result的param子元素  转发或者重定向到不同包下的动作时

    69960

    YOLOS:通过目标检测重新思考Transformer(附源代码)

    自然语言处理 (NLP) ,主要方法首先在大型通用语料库上预训练Transformer以进行通用语言表示学习,然后针对特定目标任务对模型进行微调。...ViT-FRCNN一个使用预训练的ViT作为R-CNN目标检测器的主干。...受现代CNN设计的启发,最近的一些工作将金字塔特征层次结构和局部性引入Vision Transformer设计,这在很大程度上提高了包括目标检测在内的密集预测任务的性能。然而,这些架构面向性能的。...这可以避免将ViT的输出序列重新解释为2D特征图,并防止标签分配期间手动注入启发式和对象2D空间结构的先验知识。...理论上,YOLOS不知道确切的空间结构和几何形状的情况下执行任何维度的物体检测可行的,只要每次通过输入总是以相同的方式展平为一个序列。

    1.8K20

    CVPR 2019 | 智能体张量融合,一种保持空间结构信息的轨迹预测

    该论文主要提出了一种基于深度学习的车辆和行人轨迹预测方法,提出了一个可以保持空间结构信息的多智能体张量融合网络,机动车驾驶和行人轨迹数据集中对模型的性能进行了验证。 ?...面向智能体的编码多个智能体的特征向量上运行聚合函数,而面向空间结构的方法则直接在鸟瞰视角的场景表示图上进行运算。...这种编码方式一方面可以像面向空间结构的方法那样很自然地保持多智能体张量的所有智能体和静态场景的空间结构以捕捉空间信息,另一方面也可以像面向智能体的方法那样敏感捕捉多智能体间的微妙社会互动。 ?...值得指出的,因为 MATF 架构运行共享卷积运算,所以同一次正向传播可以计算得出的所有智能体的相应融合向量。...; (4)一个有趣的失败案例,环形交叉路口右上方的人向右转,向图像顶部移动;该模型成功预测了此次转弯,但失败在无法预测转弯的急缓程度。

    42140

    C++一分钟之—名空间(namespace)的作用与使用

    C++编程领域,名空间(namespace)一个不可或缺的概念,它帮助组织代码、避免命名冲突,从而使得大型项目中的代码更加清晰和模块化。...名空间基础名空间提供了一种封装机制,允许你将相关的类、函数、变量等组织在一起,并给予它们一个唯一的范围。这有助于解决全球命名空间污染问题,即不同库或模块间因使用相同的标识符而导致的命名冲突。...过度使用名空间问题:无节制地创建名空间,甚至每个类或函数都单独放在一个名空间内,这会导致代码阅读和编写变得复杂冗长。避免策略:合理规划名空间结构,通常基于功能模块或库级别进行划分。2....结语名空间C++中一个强大的组织和隔离代码的工具,正确而有效地使用它,能够显著提升代码的清晰度、可维护性和模块化水平。通过避免上述常见问题和易错点,你可以使自己的C++代码更加专业和高效。...掌握名空间的艺术,C++编程世界畅游的关键之一。继续探索,让每一个名空间都成为你代码库的有序乐章。我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

    52710

    CVPR 2019 | 智能体张量融合,一种保持空间结构信息的轨迹预测方法

    该论文主要提出了一种基于深度学习的车辆和行人轨迹预测方法,提出了一个可以保持空间结构信息的多智能体张量融合网络,机动车驾驶和行人轨迹数据集中对模型的性能进行了验证。 ?...面向智能体的编码多个智能体的特征向量上运行聚合函数,而面向空间结构的方法则直接在鸟瞰视角的场景表示图上进行运算。...这种编码方式一方面可以像面向空间结构的方法那样很自然地保持多智能体张量的所有智能体和静态场景的空间结构以捕捉空间信息,另一方面也可以像面向智能体的方法那样敏感捕捉多智能体间的微妙社会互动。 ?...值得指出的,因为 MATF 架构运行共享卷积运算,所以同一次正向传播可以计算得出的所有智能体的相应融合向量。...; (4)一个有趣的失败案例,环形交叉路口右上方的人向右转,向图像顶部移动;该模型成功预测了此次转弯,但失败在无法预测转弯的急缓程度。

    82820

    Unity基础教程系列(新)(一)——游戏对象和脚本(Creating+a+Clock)

    (单列布局) 示例场景包含一个主摄像机和一个方向光。这些游戏对象。它们被列在场景下的层级窗口中。 ? (对象层次窗口) 你可以通过层次结构窗口或场景窗口选择游戏对象。...或者,你可以层次结构窗口的上下文菜单中使用Create Empty选项,可以用另一种单击方式将其打开,通常是右键单击或双击。这会将游戏对象添加到场景。...子对象层次结构的顺序无关紧要,你可以将其放置Face上方或下方。 ?...可以将其设置为Public? 可以,但是公开公开访问类字段通常是不好的形式。经验法则是仅在其他类型的C#代码需要访问类内容时才公开类内容,然后优先于字段使用方法或属性。...本教程,我们唯一的C#代码Clock,因此没有理由公开其内容。 字段可序列化后,Unity将对其进行检测并将其显示Clock游戏对象的Clock组件的检查器窗口中。 ?

    4.3K20

    C++ 多级继承与多重继承:代码组织与灵活性的平衡

    C++ 多级继承多级继承一种面向对象编程(OOP)特性,允许一个类从多个基类继承属性和方法。它使代码更易于组织和维护,并促进代码重用。多级继承的语法 C++ ,使用 : 符号来指定继承关系。...菱形继承问题菱形继承一个类从两个基类继承,这两个基类又有一个共同的基类的情况。在这种情况下,会出现多个继承路径,导致命名冲突和语义不明确问题。例如:class A { // ...}...接口继承: 使用接口来定义公共行为,并让类实现这些接口。组合: 使用一个类作为另一个类的成员,而不是通过继承来获得其功能。总结多级继承一种强大的 OOP 工具,可用于创建复杂的类层次结构。...菱形继承问题菱形继承一个类从两个基类继承,这两个基类又有一个共同的基类的情况。在这种情况下,会出现多个继承路径,导致命名冲突和语义不明确问题。例如:class A { // ...}...受保护继承: 派生类继承所有受保护成员,但这些成员派生类变为私有。总结多重继承一种强大的 OOP 工具,可用于创建复杂的类层次结构。但是,它也存在一些缺点,例如复杂性和菱形继承问题。

    16510

    程序员如何培养底层思维?

    点击“博文视点Broadview”,获取更多书讯 阿里巴巴的晋升会议上,评委经常会问:“你的成功可以复制?”...命名工作暗含了抽象思维能力和语言哲学,语言本身抽象的符号,比如当你说“花”的时候,指的并不是某一朵具体的玫瑰花、郁金香,而是花的抽象概念。...因此,要想真正做好命名,除了要掌握一些命名技法,还需要更深层次的修炼——提升抽象思维能力。...这些思维能力可以习得和提高的? 维特根斯坦《逻辑哲学论》说,思维本身就能解决问题,我们所要做的,就是观察它是如何做到的。...虽然一些人“996”工作很辛苦,但也许大部分工作内容无意义的重复,工作过程,思维能力并没有得到锻炼和提高。这样的人即使侥幸晋升成功,他的能力水平仍然停留在低层次

    49620

    百度研究成果登《Nature》子刊:利用几何构象提升化合物分子建模效果

    Learning,GEM模型),揭示了一种基于三维空间结构信息的化合物建模方法,以及药物研发的应用。...该项研究,百度螺旋桨PaddleHelix团队首次将化合物的几何结构信息引入自监督学习和分子表示模型,并在下游十多项的属性预测任务取得SOTA,成为百度AI赋能药物研发领域对外公开的又一项重磅成果...而百度首次提出,将化合物的空间结构信息引入到化合物预训练,通过几何增强的自监督学习,对化合物分子进行表征,通过化合物的表征自主推断出空间结构信息,进而预测化合物分子的性质属性,以辅助进行药物研发,提升效率...值得一提的,该研究由百度螺旋桨PaddleHelix生物计算团队独立完成,并已经药物研发领域,携手合作伙伴早期药物研发管线中落地。...有些研究直接把每个化合物看作一个图,利用基于图拓扑结构的自监督学习方法进行分子表征,比如,遮盖并还原化合物图中的原子,化学键或子结构

    38340

    C++ Primer 学习笔记_87_用于大型程序的工具 –异常处理

    如:异常处理、命名空间和多重继承。 相对于小的程序猿团队所能开发的系统需求而言,大规模编程[往往涉及数千万行代码]对程序设计语言的要求更高。...2.能够用各种库(可能包括独立开发的库)构造程序[命名空间]。 3.能够处理更复杂的应用概念[多重继承&虚继承]。...运行throw时,不会运行跟在throw后面的语句,而是将控制从throw转移到匹配的catch,该catch能够同一函数中局部的catch,也能够直接或间接基类调用发生异常的函数的还有一个函数。...2、异常与指针 假设指针指向继承层次的一种类型,指针所指对象的类型就有可能与指针的类型不同。不管对象的实际类型是什么,异常对象的类型都与指针的静态类型相匹配。...【小心地雷】 抛出指针一般坏主意:抛出指针要求相应处理代码存在的随意地方存在指针所指向的对象。

    72410
    领券