[英]Refactoring : delegate friendship in sub-functions
我重構了一個代碼,其中 class 有一個朋友 function 做了很多事情。
class Foo
{
friend void do_something(Foo& foo);
};
void do_something(Foo& foo)
{
// More than 2000 lines of ugly code
}
我想將do_something
的內容拆分成幾個小函數。 看起來像這樣的東西:
void do_something(Foo& foo)
{
if(case_1) do_1(foo);
else if(case_2) do_2(foo);
else if(case_3) do_3(foo);
//...
}
有沒有一種設計可以將友誼轉移到子功能do_x(Foo&)
而不必在 class 或類似的東西中聲明它們來拆分代碼?
注:僅限C++11
注意:我不想把子函數寫成宏
我建議您創建一個類似的 class DoSomehting
,而不是將do_something
作為 function 調用其他子函數。
然后你可以將這個 class 聲明為friend class DoSomehting;
. 所以這些子函數可以是它的私有方法。 調用的方法 -- 可以是一個名為void DoSomehting::process(Foo& foo)
的公共方法:
class Foo
{
friend class DoSomething;
};
class DoSomething
{
public:
void process(Foo& foo)
{
if(case_1) do_1(foo);
else if(case_2) do_2(foo);
else if(case_3) do_3(foo);
//...
}
private:
void do_1(Foo& foo);
void do_2(Foo& foo);
void do_3(Foo& foo);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.