mirror of
https://github.com/isocpp/CppCoreGuidelines.git
synced 2024-03-22 13:30:58 +08:00
Merge branch 'es74' of https://github.com/dacap/CppCoreGuidelines into dacap-es74
This commit is contained in:
commit
414924c62d
|
@ -7222,21 +7222,26 @@ This will copy each elements of `vs` into `s`. Better
|
||||||
<a name="Res-for-init"></a>
|
<a name="Res-for-init"></a>
|
||||||
### ES.74: Prefer to declare a loop variable in the initializer part of as `for`-statement
|
### ES.74: Prefer to declare a loop variable in the initializer part of as `for`-statement
|
||||||
|
|
||||||
**Reason**: 1) By creating variables inside loops, you ensure their scope is restricted to inside the loop. It
|
**Reason**: Limit the loop variable visibility to the scope of the loop.
|
||||||
cannot be referenced nor called outside of the loop.
|
Avoid using the loop variable for other purposes after the loop.
|
||||||
2) some dedicated optimization can be performed more efficiently by the compiler (most importantly
|
|
||||||
register allocation), since it knows that the variable cannot be used outside of the loop. For
|
|
||||||
example, no need to store the result for later re-use.
|
|
||||||
|
|
||||||
**Example**:
|
**Example**:
|
||||||
|
|
||||||
for (int counter = 0; counter <= 10; counter++)
|
for (int i=0; i<100; ++i) { // GOOD: i var is visible only inside the loop
|
||||||
{
|
// ...
|
||||||
cout << counter << endl ;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
**Enforcement**: ???
|
**Example; don't**:
|
||||||
|
|
||||||
|
int j; // BAD: j is visible outside the loop
|
||||||
|
for (j=0; j<100; ++j) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
// j is still visible here and isn't needed
|
||||||
|
|
||||||
|
**See also**: [Don't use a variable for two unrelated purposes](#Res-recycle)
|
||||||
|
|
||||||
|
**Enforcement**: Warn when a variable modified inside the `for`-statement is declared outside the loop and not being used outside the loop.
|
||||||
|
|
||||||
<a name="Res-do"></a>
|
<a name="Res-do"></a>
|
||||||
### ES.75: Avoid `do`-statements
|
### ES.75: Avoid `do`-statements
|
||||||
|
|
Loading…
Reference in New Issue
Block a user