aboutsummaryrefslogtreecommitdiff
path: root/doc/developer-notes.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/developer-notes.md')
-rw-r--r--doc/developer-notes.md39
1 files changed, 32 insertions, 7 deletions
diff --git a/doc/developer-notes.md b/doc/developer-notes.md
index 9dc63a1e4b..8f06ee4eca 100644
--- a/doc/developer-notes.md
+++ b/doc/developer-notes.md
@@ -132,6 +132,8 @@ Not OK (used plenty in the current source, but not picked up):
A full list of comment syntaxes picked up by doxygen can be found at http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html,
but if possible use one of the above styles.
+Documentation can be generated with `make docs` and cleaned up with `make clean-docs`.
+
Development tips and tricks
---------------------------
@@ -140,6 +142,10 @@ Development tips and tricks
Run configure with the --enable-debug option, then make. Or run configure with
CXXFLAGS="-g -ggdb -O0" or whatever debug flags you need.
+**compiling for gprof profiling**
+
+Run configure with the --enable-gprof option, then make.
+
**debug.log**
If the code is behaving strangely, take a look in the debug.log file in the data directory;
@@ -238,12 +244,8 @@ Threads
- DumpAddresses : Dumps IP addresses of nodes to peers.dat.
-- ThreadFlushWalletDB : Close the wallet.dat file if it hasn't been used in 500ms.
-
- ThreadRPCServer : Remote procedure call handler, listens on port 8332 for connections and services them.
-- BitcoinMiner : Generates bitcoins (if wallet is enabled).
-
- Shutdown : Does an orderly shutdown of everything.
Ignoring IDE/editor files
@@ -380,6 +382,18 @@ C++ data structures
- *Rationale*: Easier to understand what is happening, thus easier to spot mistakes, even for those
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
------------------------
@@ -415,11 +429,11 @@ member name:
```c++
class AddressBookPage
{
- Mode mode;
+ Mode m_mode;
}
AddressBookPage::AddressBookPage(Mode _mode) :
- mode(_mode)
+ m_mode(_mode)
...
```
@@ -606,7 +620,7 @@ To create a scripted-diff:
The scripted-diff is verified by the tool `contrib/devtools/commit-script-check.sh`
-Commit `bb81e173` is an example of a scripted-diff.
+Commit [`bb81e173`](https://github.com/bitcoin/bitcoin/commit/bb81e173) is an example of a scripted-diff.
RPC interface guidelines
--------------------------
@@ -696,3 +710,14 @@ A few guidelines for introducing and reviewing new RPC interfaces:
client may be aware of prior to entering a wallet RPC call, we must block
until the wallet is caught up to the chainstate as of the RPC call's entry.
This also makes the API much easier for RPC clients to reason about.
+
+- Be aware of RPC method aliases and generally avoid registering the same
+ callback function pointer for different RPCs.
+
+ - *Rationale*: RPC methods registered with the same function pointer will be
+ considered aliases and only the first method name will show up in the
+ `help` rpc command list.
+
+ - *Exception*: Using RPC method aliases may be appropriate in cases where a
+ new RPC is replacing a deprecated RPC, to avoid both RPCs confusingly
+ showing up in the command list.