blob: 30b38167bb662505b5d29ea0165f39000b198931 [file] [log] [blame]
Zack Williams36451912022-03-04 20:31:37 -07001Design Guide
2============
3
4Make the obvious way the right way
5----------------------------------
6
7A developer coming to a new-to-them project should be able to quickly learn the
8correct way to interact with a project's code, and the "path of least
9resistance" should also be the correct way to make changes to a project.
10
11Build on the shoulders of giants
12---------------------------------
13
14Another way of saying this is: "Avoid reinventing the wheel".
15
16If there is (acceptably licensed and maintained) code out available out there
17that could be used to accomplish a task, consider using it.
18
19External Dependencies
20---------------------
21
22Upstream code changes over time, and you should design your projects to be able
23to deal with this change.
24
25
26Lifecycle
27"""""""""
28
29Testing against new versions
30''''''''''''''''''''''''''''
31
32You should embrace tools that allow you to test against upgraded dependencies.
33
34One example of a tool that lets you do this easily is ``tox``, which can handle
35running a unit test suite against multiple versions of the Python language.