处理多个单一函数的最佳实践

Best practice of handling many single functions

本文关键字:最佳 函数 单一 处理      更新时间:2023-10-16

我有很多小函数,每个都在做一件事,例如:pingServer, checkUserValidAccount, countDistance。

把每个函数都包装成一个类是不值得的。

在c++中处理这么多不同的小函数的最佳实践是什么?

也许写一些类叫帮手,如NetworkHelpers?

可以选择将它们放置在namespace中。我觉得没必要上课。一个类的实例代表一个状态,但是你是在描述一堆自由的函数,所以是一个无状态的系统。

"不值得把每个函数都包装成一个类。"-这不是决定不编写类的有效论据。一个类可以只有一个成员和一个方法,但是如果有逻辑的话,你应该写出来。

如果你的函数和逻辑要求使用类,其中你的函数具有相同的逻辑,但根据对象的不同操作不同,那么无论如何,写一个类。如果您的唯一目的是将函数分组在一起,当它们的逻辑并不真正依赖于类的相同实例时,请将它们分组在名称空间中。

基于你的问题的一个例子:

namespace NetworkHelpers
{
   //free function, use a namespace
   bool pingServer(std::string hostname);
}
//alternative, where the object has a state:
class ServerConnection
{
   std::string _hostname;
public:
   NetworkHelpersClass(std::string hostname) 
   { 
      _hostname = hostname; 
   }
   bool pingServer()
   { 
      return NetworkHelpersNamespace::pingServer(_hostname); 
   }
};

可以看到,在命名空间内,函数不依赖于参数以外的任何东西。

在类内部,由于它有一个状态,并且您为每个服务器创建一个对象(如此相似的行为,但根据对象的不同而不同),因此您调用不带参数的函数,因为对象有一个状态。

与某些语言不同,c++不要求将每个函数放在一个类中。如果你有不属于类的函数,把它们放在命名空间中。

如果我可以添加除了名称空间之外的另一个最佳实践:将您的函数分组在dll中,并注意它们的依赖关系。避免循环链接,并创建具有尽可能少的依赖关系的低级库。

相关文章: