Software Engineer Resources¶
For research software engineers, Good Research Code is a good primer.
Software Design Patterns¶
In writing software, many recurring problems exist that cannot be solved through library encapsulation because of the problem’s nuances. In such cases, however, they can frequently be solved by leveraging one or more existing Design Patterns.
Design Patterns are vetted approaches to solving recurring, related problems. They describe a way to structure and organize code. Design patterns are expressive; they communicate intent to other contributors reading and writing code. (This is in contrast to “spaghetti code.”)
The following is a loose collection of software design patterns. This list is not exhaustive. It is intended as a starting point to approaching new problems by first investigating what patterns may be relevant.
Object Oriented Design Patterns
Creational: object instantiation
Structural: object internal and external composition
Behavioral: object interactions
SOLID Principles and original paper (PDF)
Communication Patterns
Database interactions
CRUD
Other resources¶
Refactoring Guru’s Catalog of Design Patterns
Thread-Safe Design Patterns
Geeks for Geek’s intro to Low Level Design
Other Code Review resources¶
Microsoft ISE Engineering Fundamentals Playbook Code Reviews
Jetbrains Qodana Python Code Review Checklist (With Examples)
MIT 6.005 Software Construction Reading 4: Code Review