mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
Doc: Update coding style
This commit is contained in:
parent
0804b62ffb
commit
d48a5efa03
@ -220,13 +220,46 @@ const Example = (props: { text: string }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Use react [custom hooks](https://reactjs.org/docs/hooks-custom.html) to simplify long code
|
## Use react [custom hooks](https://reactjs.org/docs/hooks-custom.html) to simplify long code
|
||||||
|
|
||||||
If `eslint` gives an error about `useFoo` being called outside of a component, be sure [the custom hook is titled appropriately](https://stackoverflow.com/a/55862839).
|
If `eslint` gives an error about `useFoo` being called outside of a component, be sure [the custom hook is titled appropriately](https://stackoverflow.com/a/55862839).
|
||||||
|
|
||||||
|
# Database
|
||||||
|
|
||||||
|
## Use snake_case
|
||||||
|
|
||||||
|
We use `snake_case` for table names and column names.
|
||||||
|
|
||||||
|
## Everything is NOT NULL
|
||||||
|
|
||||||
|
All columns should be defined as `NOT NULL`, possibly with a default value (but see below). This helps keeping queries more simple as we don't have to do check for both `NULL` and `0` or empty string.
|
||||||
|
|
||||||
|
## Use defaults sparingly
|
||||||
|
|
||||||
|
Don't automatically give a default valuet to a column - in many cases it's better to require the user to explicitly set the value, otherwise it will be set to a default they might not know about or want. Exceptions can be less important columns, things like timestamp, or columns that are going to be set by the system.
|
||||||
|
|
||||||
|
## Use an integer for enum-like values
|
||||||
|
|
||||||
|
If a column can be set to a fixed number of values, please set the type to integer. In code, you would then have a TypeScript enum that defines what each values is for. For example:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
export enum Action {
|
||||||
|
Create = 1,
|
||||||
|
Update = 2,
|
||||||
|
Delete = 3,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
We don't use built-in database enums because they make migrations difficult. They provide added readability when accessing the database directly, but it is not worth the extra trouble.
|
||||||
|
|
||||||
|
## Prefer using `tinyint(1)` to `bool`
|
||||||
|
Booleans are not a distinct types in many common DBMS, including SQLite (which we use) and MySQL, so prefer using a `tinyint(1)` instead.
|
||||||
|
|
||||||
|
# Web requests and API
|
||||||
|
|
||||||
|
## Use `snake_case`
|
||||||
|
|
||||||
|
We use `snake_case` for end points and query parameters.
|
||||||
|
|
||||||
# See also
|
# See also
|
||||||
## **Other** projects' style guides
|
## **Other** projects' style guides
|
||||||
|
Loading…
Reference in New Issue
Block a user