c++ - c/c++中两个函数内容相同时,哪种风格更好?

标签 c++ coding-style

假设你有一个基类:

class base  
{  
public:  
  virtual void OnConnect() = 0;  
  virtual void OnDisonnect() = 0;  

  // Other functions ...  
};  

有几个类继承自base,其中大部分对这两个功能有不同的实现。但是,其中一个派生类具有相同的内容,我想知道以下哪种样式更好,为什么:

(A) 在两个函数中保留重复的代码

void derived::OnConnect(const char* err)
{  
    /*  
     * 3~5 lines of code in this function with a block of comment.
     */
}

void derived::OnDisconnect(const char* err)
{  
    /*  
     * 3~5 lines of code in this function with a block of comment.
     */
}

(B) 将一个委托(delegate)给另一个

void derived::OnConnect(const char* err)
{  
    /*  
     * 3~5 lines of code in this function with a block of comment.
     */
}

void derived::OnDisconnect(const char* err)
{  
    // Same as OnConnect()
    OnConnect(err);
}

(C) 定义另一个函数并在 OnConnect/OnDisconnect 中调用该函数

static func(const char* err)
{
    /*  
     * 3~5 lines of code in this function with a block of comment.
     */
}

void derived::OnConnect(const char* err)
{  
    func(err);
}

void derived::OnDisconnect(const char* err)
{  
    func(err);
}

哪个更好?

最佳答案

由于两个函数接口(interface)中没有任何内容表明一个应该与另一个有任何关系,我认为我们可以安全地排除选项 B。

就我个人而言,我会选择选项 C。

关于c++ - c/c++中两个函数内容相同时,哪种风格更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22144858/

相关文章:

c++ - 在指针的最低有效位中存储不相关的数据可以可靠地工作吗?

c++ - 为什么模板编译这么慢?

c++ - 检查两个对象组合的空值的最佳方法

java - 从参数化构造函数调用高级构造函数的好风格?

function - OCaml 中的这两个函数定义有何不同?

c++ - 分配内存后构造函数未捕获异常

c++ - 反转宽高比时,OpenCV调整大小可返回空白图像

C++ 迭代器 : How to find the index for a heapsort

haskell - Haskell 表达式中哪里允许换行?

css - 按元素、功能和媒体查询构建 CSS(SASS、LESS)文件 : 3D code structure?