类的设计缺陷

这是一个很无心识的错误。web

class Example {
public:
	void detectString(std::string str);
	bool success();
	String getResult();
private:
	std::string str;
	bool success;
};

需求是这样的。我有一个输入,我须要对其进行合法性的检测,而后给出处理结果。我以前的认知都是,一个function实现一个功能,因此天然而然的,我设计出了这样的一个class。师傅看了一眼就指出了我其中的问题,以下所示多线程

问题

  1. 这样的一个class,会增长用户的使用负担,用户得调用三步才能获得一个结果,而且仍是必须顺序调用
  2. 每次的调用,都须要耗费额外的空间去存储输入,而且拷贝构造的时候,也是在消耗CPU
  3. 在多线程的时候,直接宣告死亡

因此对于这个问题的解决方案就是,直接用一个function来解决。固然,还能够增长一个接口仅用于校验合法性。svg