Overview
- Project Management
- Development
- Documentation
Issue Trackers
- Collect ideas
- Document and discuss your decisions/progress
- For/with others
- For/with your future self
Team Discussions
- Early feedback
- Constantly explain/justify/rethink your ideas
Fail Often, Fail Fast, Fail Early
Implementation
- Common rules you should always follow
- SOLID Guidelines
- DRY (Don’t repeat yourself)
- Design Patterns
- Existing solutions for common design problems
- Don’t reinvent the wheel
Testing
- Unit Tests
- Test individual components
- Integration Tests
- Test interaction of larger parts
- System Tests
Checks
- Consistency is key
- Automate whenever possible
- Code Format
- Consistent code layout
- Available for almost every language
- Linters
C++
- Clang-Format
- CMake-Format
- Clang-Tidy
- CppCheck
- CppLint
Sample
for t, m, ms in bag.read_messages():
# do something
C0103: Variable name "t" doesn't conform to snake_case
naming style (invalid-name)
W0612: Unused variable 't' (unused-variable)
Know your tools
- IDE for the heavy development
- Editor as your swiss army knife
- Shortcuts
Continuous Integration
- Automatically run in a configured environment
- Requires scripted/containerized environment setup
- Avoid “Works on my machine”
Documentation
- Summarize the latest status
- Requires active maintenance