48 lines
2.2 KiB
Plaintext
48 lines
2.2 KiB
Plaintext
### Code style and structure
|
|
- Write concise and efficient source code.
|
|
- Strive for source code that is easy to read and maintain, and provide accurate examples.
|
|
- Avoid duplication of code: modularise widgets and functions into reusable components.
|
|
- Use descriptive variable names: use names with auxiliary verbs such as isLoading, hasError.
|
|
|
|
### Directory structure under /lib.
|
|
- /lib/models/: data models and type definitions (Models)
|
|
- /lib/viewmodels/: state management and business logic (ViewModel)
|
|
- /lib/views/widgets/: reusable widgets (View)
|
|
- /lib/views/screens/: per-screen widgets (View)
|
|
- /lib/services/: service classes for API calls and data access
|
|
- /lib/utils/: helper functions and constants
|
|
|
|
### Naming conventions
|
|
- Directories and files: use snakeCase (e.g. auth_wizard.dart).
|
|
- UpperCamelCase: use for class names/enumerations/typedefs/type parameters, etc.
|
|
- LowerCamelCase: used for variables/functions/class members (properties, methods), etc.
|
|
- lowercase_with_underscores (snakeCase): for files/directories/packages/libraries, etc.
|
|
|
|
### Import.
|
|
- Place imports starting with dart: first (use lowercase_with_underscores for the import prefix).
|
|
- Next, import third-party packages (package:).
|
|
- Finally, import relative paths and files in the project.
|
|
|
|
### Using Dart.
|
|
- Take advantage of type safety: use static typing in all code and utilise type inference wherever possible.
|
|
|
|
### UI and styling.
|
|
- Use Material widgets.
|
|
- Unify theming: use ThemeData to apply consistent styles.
|
|
|
|
### Performance optimisation.
|
|
- Prefer StatelessWidget when state is not required.
|
|
- Make use of const constructors: if widgets are immutable, use const to optimise builds.
|
|
|
|
### State management.
|
|
- Use riverpod to implement efficient state management.
|
|
- Manage state within the ViewModel and link it to the View.
|
|
|
|
### Software architecture
|
|
Use MVVM (Model View ViewModel).
|
|
|
|
### Key rules.
|
|
- To improve code readability, lines should not exceed 80 characters in length.
|
|
- Use braces {} for all flow control structures (if, for, while, etc.).
|
|
- Use comment-outs proactively to help understand and maintain code.
|
|
- Use single quotes, avoid the use of double quotes and use consistent string literals to improve readability. |