Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create kpi-backend-development.md #10

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions docs/_articles/kpi-backend-development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
title: KPI Backend Development
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jnm, pull from various sources (zulip, github issue, etc.) to flesh this out.
Probably remove the break early thing? It's likely more of a judgment call than a rule.
Add guidance for assertNumQueries(): set it to fail, read the queries printed out, understand them and ask questions if necessary, and if the queries then are okay, set the count. Investigate the use of ranges for these assertions. Discuss fixtures so that list-type queries return enough objects that bad query-per-each-result patterns are obvious.
Make sure your unit tests can fail!!!
etc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jnm should we merge this as is and try to improve it as we go?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jnm @bufke should we merge this as is? :D

---

## Code style

- Always run the black autoformatter on new and modified code. KPI has one custom rule set, prefer `'` over `"`.
- Avoid unnecessary branching if statements when possible. For example, break early.

Bad

```python
def foo():
if is_ok:
do_the_thing()
```

Good

```python
def foo():
if not is_ok:
return

do_the_thing()
```

- Avoid unnecessary Django migrations. New pull requestions should contain no more than 1 migration, unless necessary.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"pull requestions" should be "pull requests"?