将所有函数转换为类

PTS*_*PTS 4 c++ oop refactoring

我正在阅读Fowler 的" 重构:改进现有代码的设计 "一书,其中它用相同的名称类替换函数调用,并调用该类的构造函数来代替原始函数调用.

我的问题是将所有函数(或多或少,除了非常简单的函数)转换为对象以使代码变得更模块化是一个好主意?

谢谢,

Bo *_*son 5

在我之前的评论中稍微扩展一下:

在C++中,绝对没有理由将所有函数转换为类,某种处理对象.只需计算并返回一个值,函数就可以正常工作.

但是,如果你有一个大函数创建一个内部状态并在其处理过程中在几个地方使用它,或者(喘气!)将一些状态存储在全局变量中,那么该函数可能是一个伪装的类.在这种情况下,最好将状态存储在一个类对象中,其中有几个较小的成员函数在该公共状态下进行工作.

在另一方面,该功能计算从它的参数的值通过把它变成一个类改善.


Fre*_*Foo 2

不,为什么会这样?如果您的功能在逻辑上是函数(无状态计算),并且没有令人信服的理由将其实现为类,那么只需将其实现为函数即可。

“用同名类替换函数调用并调用该类的构造函数来代替原始函数调用”的建议是完全错误的:如何替换

int y = f(x);
Run Code Online (Sandbox Code Playgroud)

通过 aclass f并调用其构造函数?构造函数没有返回值!让它工作的唯一方法是超载operator()class f这样你就可以使用其中之一

int y = f(x)();
int y = f()(x);
Run Code Online (Sandbox Code Playgroud)

两者都是毫无意义的。(此外,您必须记住您定义的每个函数对象都需要其中的哪一个。)

一定有什么事情你没有告诉我们。