Merge #12896: docs: Fix conflicting statements about initialization in developer notes
b119e78
docs: Fix conflicting statements about initialization in developer notes (practicalswift)
Pull request description:
Fix conflicting statements about initialization in developer notes.
Context: https://github.com/bitcoin/bitcoin/pull/12785#issuecomment-378941151
Tree-SHA512: 601b18cbeb963f99a4180e652d6c1b78210df89743fd3565c0bce95fd2dcc9784b6af212795a43d3a40a5858b1a03e0d2c7982295c92d6ea710db0e6ee69f0b4
This commit is contained in:
commit
b15485ecca
1 changed files with 12 additions and 15 deletions
|
@ -450,12 +450,21 @@ C++ data structures
|
||||||
|
|
||||||
- Vector bounds checking is only enabled in debug mode. Do not rely on it
|
- Vector bounds checking is only enabled in debug mode. Do not rely on it
|
||||||
|
|
||||||
- Make sure that constructors initialize all fields. If this is skipped for a
|
- Initialize all non-static class members where they are defined.
|
||||||
good reason (i.e., optimization on the critical path), add an explicit
|
If this is skipped for a good reason (i.e., optimization on the critical
|
||||||
comment about this
|
path), add an explicit comment about this
|
||||||
|
|
||||||
- *Rationale*: Ensure determinism by avoiding accidental use of uninitialized
|
- *Rationale*: Ensure determinism by avoiding accidental use of uninitialized
|
||||||
values. Also, static analyzers balk about this.
|
values. Also, static analyzers balk about this.
|
||||||
|
Initializing the members in the declaration makes it easy to
|
||||||
|
spot uninitialized ones.
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class A
|
||||||
|
{
|
||||||
|
uint32_t m_count{0};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
- By default, declare single-argument constructors `explicit`.
|
- By default, declare single-argument constructors `explicit`.
|
||||||
|
|
||||||
|
@ -474,18 +483,6 @@ C++ data structures
|
||||||
- *Rationale*: Easier to understand what is happening, thus easier to spot mistakes, even for those
|
- *Rationale*: Easier to understand what is happening, thus easier to spot mistakes, even for those
|
||||||
that are not language lawyers
|
that are not language lawyers
|
||||||
|
|
||||||
- Initialize all non-static class members where they are defined
|
|
||||||
|
|
||||||
- *Rationale*: Initializing the members in the declaration makes it easy to spot uninitialized ones,
|
|
||||||
and avoids accidentally reading uninitialized memory
|
|
||||||
|
|
||||||
```cpp
|
|
||||||
class A
|
|
||||||
{
|
|
||||||
uint32_t m_count{0};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Strings and formatting
|
Strings and formatting
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue