Small Project Organization
Config Defaults
A small settings struct keeps related project defaults together.
settings
Grouping configuration values in a struct makes the data easy to pass and inspect.
defaults
Defaults should be explicit so later calculations can use one named source of truth.
Config Defaults
config_defaults.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
struct Settings {
int retries;
int timeout;
};
int main() {
int requestedTimeout = 30;
Settings settings{3, requestedTimeout};
int totalWait = settings.retries * settings.timeout;
std::cout << "retries=" << settings.retries << std::endl;
std::cout << "timeout=" << settings.timeout << std::endl;
std::cout << "totalWait=" << totalWait << std::endl;
return 0;
}
#include <iostream>
struct Settings {
int retries;
int timeout;
};
int main() {
int requestedTimeout = 5;
Settings settings{3, requestedTimeout};
int totalWait = settings.retries * settings.timeout;
std::cout << "retries=" << settings.retries << std::endl;
std::cout << "timeout=" << settings.timeout << std::endl;
std::cout << "totalWait=" << totalWait << std::endl;
return 0;
}
#include <iostream>
struct Settings {
int retries;
int timeout;
};
int main() {
int requestedTimeout = 60;
Settings settings{3, requestedTimeout};
int totalWait = settings.retries * settings.timeout;
std::cout << "retries=" << settings.retries << std::endl;
std::cout << "timeout=" << settings.timeout << std::endl;
std::cout << "totalWait=" << totalWait << std::endl;
return 0;
}
requestedTimeout ← 30, settings ← (empty), totalWait ← 90
8int main() {9 int requestedTimeout→ 30 = 30; //@requestedTimeout=5, 601011 Settings settings→ (empty){3, requestedTimeout30};12 int totalWait→ 90 = settings.retries3 * settings.timeout30;1314 std::cout << "retries=" << settings(empty).retries << std::endl;15 std::cout << "timeout=" << settings(empty).timeout << std::endl;16 std::cout << "totalWait=" << totalWait90 << std::endl;17 return 0;18}outputretries=3 timeout=30 totalWait=90
requestedTimeout ← 5, settings ← (empty), totalWait ← 15
8int main() {9 int requestedTimeout→ 5 = 5;1011 Settings settings→ (empty){3, requestedTimeout5};12 int totalWait→ 15 = settings.retries3 * settings.timeout5;1314 std::cout << "retries=" << settings(empty).retries << std::endl;15 std::cout << "timeout=" << settings(empty).timeout << std::endl;16 std::cout << "totalWait=" << totalWait15 << std::endl;17 return 0;18}outputretries=3 timeout=5 totalWait=15
requestedTimeout ← 60, settings ← (empty), totalWait ← 180
8int main() {9 int requestedTimeout→ 60 = 60;1011 Settings settings→ (empty){3, requestedTimeout60};12 int totalWait→ 180 = settings.retries3 * settings.timeout60;1314 std::cout << "retries=" << settings(empty).retries << std::endl;15 std::cout << "timeout=" << settings(empty).timeout << std::endl;16 std::cout << "totalWait=" << totalWait180 << std::endl;17 return 0;18}outputretries=3 timeout=60 totalWait=180