继承记录器是好是坏

问题描述 投票:0回答:1

我见过很多人让他们的 C++ 类继承 log4cxx 之类的记录器,以便进行故障排除。然而,即使代码投入生产,这种继承仍然存在。这是一个好的 OO 设计实践吗?

我从来不这么做。我使用指针 log4cxx::LoggerPtr 作为类的成员变量。如果指针为空,则不执行日志记录语句。

inheritance logging
1个回答
0
投票

这要看情况。

如果记录器是: 旨在始终开启 相当基本,不会影响性能(或者性能不是问题)。 那么这就是OK的OOP设计,(但不是我个人的选择)

如果记录器是: 对用户有用 根据上下文切换可选功能 拥有大量虚拟功能,需要通过未来的架构设计来实现 那么这就是糟糕的 oop 设计。

就个人而言:我会选择[组合优于继承作为一般规则][1]
创建一个具有复杂类型增强序列化功能的 json 记录器,并包含具有日志记录级别的可选类型化元数据,例如“关键”到“信息” 这种策略在许多项目中都对我很有帮助。

希望对您有所帮助,祝您编程愉快!

[1]:https://en.wikipedia.org/wiki/Composition_over_inheritance#:~:text=Composition%20over%20inheritance%20(或%20composite,来自%20a%20base%20或%20parent

© www.soinside.com 2019 - 2024. All rights reserved.