为每个服务器请求创建一个 C++ 类实例?

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

我和我的团队正在为一个学校项目用 C++ 编写一个 IRC 服务器,在处理客户端请求时,我们一直在关注性能与可读性的问题。基本上我们收到一个输入,其中第一个单词将确定然后在服务器上调用哪个命令,并且在 IRC 中,不同的命令具有不同的语法。

想法 1:我们有一个名为 Command 的类,以及每种类型命令的子类。由于它们具有不同的语法,因此您必须以不同的方式“标记”每个命令。每次请求到达时,类命令的实例将确定子命令,将创建子命令的类实例以完成“标记化”。

想法 2:我们有一个名为 Command 的类,在服务器处于活动状态的整个过程中将创建一个实例。每当我们收到带有命令的请求时,我们只需重新分配实例中的变量即可。

想法 3:我们只是单一地处理命令。我们根据第一个单词确定要调用的命令,然后在函数中我们只需分割字符串,并执行命令。

团队的一部分人表示,想法 1 太重,每个请求产生太多负载,导致服务器效率低下。另一个说,虽然它确实性能较慢,但其他想法很混乱,并且想法1的类结构引入了更多的可读性和更容易的可维护性。

c++ oop irc
1个回答
0
投票

方法 1 相对于方法 3 的优点是可读性和更少的精神痛苦。

如果你问“嘿,广播消息的代码在哪里处理?”方法 1 的答案是:“它在

BroadcastMessageCommand
类中。”;方法 3 是:“它位于这个名为
HandleCommands
的庞大单一函数中的某个位置。祝你好运。”

我的首选是可读性高于性能,除非通过分析和测量得到证明。总而言之,这个问题太基于观点,无论如何都可能被彻底关闭。

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