定义仅调用私有函数的公共函数有什么优势

What is the advantage of defining public functions that only call a private function

本文关键字:函数 什么 定义 调用      更新时间:2023-10-16
不久

前,我正在阅读我的一位教授编写的一些代码,我注意到他有从不使用封装类中的公共函数的做法。即使公共函数是单行函数,其唯一工作只是将参数传递给私有函数。所以他所有的课程看起来都是这样的

class A{
public:
    void do_work(Some_object& obj){
        m_do_work(obj);
    }
private:
   void m_do_work(Some_object& obj){
        // actual work is done here
   }
};

这似乎是浪费开发时间和运行时间,因为额外的间接级别会产生开销。那么这种风格的实际好处是什么呢?

公共函数是一个公共接口,用于定义类的用户查看类的方式。

您的教授在私有函数

中隐藏了实现的细节,并且通过这种额外的间接级别,他可能打算保留公共函数的原始实现,同时在以后仅更改私有函数的内部。它以牺牲性能为代价使事情变得更加模块化。

除了教学示例之外,如果此类调用影响应用程序的关键路径,则必须通过分析性能来做出决定。

我曾经这样做过,以调用类内部和外部的私有函数。由于我的公共函数在调用此函数之前必须锁定互斥锁,而我的私有函数不是,因此它很有用。是这样的;

public:
    void set_configuration()
    {
        std::lock_guard<std::mutex> lg(m);
        reconfigure_output();
    }
private:
    void reconfigure_output()
    {
        ...
    }
    void some_other_function()
    {
        ...
        reconfigure_output();
    }