類的設計缺陷

這是一個很無心識的錯誤。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