使用幾種範圍的塊我開始越來越多地吸引到寫長C++使用連續範圍的塊算法的功能,如下所示:在一個C++函數
void my_algorithm(const MyStruct1 &iparam1, MyStruct2 &oparam2)
{
// First block
MyStruct3 intermediate_var3;
{
double temporary_var;
// Functional step 1.1
// Functional step 1.2
intermediate_var3 = ...
}
// Second block
MyStruct4 intermediate_var4;
{
double temporary_var;
// Functional step 2.1
// Functional step 2.2
intermediate_var4 = ...
}
// Final block
{
int temporary_var;
oparam2 = ...
}
}
我開始認爲這是一個澄清功能結構和限制臨時變量(如計數器i
,j
,k
等)的範圍的好方法。我看到這些示波器塊在C函數中有意義,以啓用新的聲明(請參閱Why enclose blocks of C code in curly braces?)。
在C++的背景下,這是好還是壞的做法?
這是一種氣味,您應該真正將這些塊作爲函數提取。如果您認爲可能存在性能問題,則可以始終使用這些功能。智能編譯器通常無論如何都會自己做到這一點 –
通常不好,因爲它通常是一個函數正在做太多不同事情的標誌。改用分開的功能。 – molbdnilo
你可能是對的......但是,由於這些塊是單個_algorithm_的一部分,不僅僅是任何C++函數,它們在不同的函數中分離它們真的有意義嗎? – AldurDisciple