66 lines
1.8 KiB
Markdown
66 lines
1.8 KiB
Markdown
---
|
|
name: dart-best-practices
|
|
description: |-
|
|
General best practices for Dart development.
|
|
Covers code style, effective Dart, and language features.
|
|
license: Apache-2.0
|
|
---
|
|
|
|
# Dart Best Practices
|
|
|
|
## 1. When to use this skill
|
|
Use this skill when:
|
|
- Writing or reviewing Dart code.
|
|
- Looking for guidance on idiomatic Dart usage.
|
|
|
|
## 2. Best Practices
|
|
|
|
### Multi-line Strings
|
|
Prefer using multi-line strings (`'''`) over concatenating strings with `+` and
|
|
`\n`, especially for large blocks of text like SQL queries, HTML, or
|
|
PEM-encoded keys. This improves readability and avoids
|
|
`lines_longer_than_80_chars` lint errors by allowing natural line breaks.
|
|
|
|
**Avoid:**
|
|
```dart
|
|
final pem = '-----BEGIN RSA PRIVATE KEY-----\n' +
|
|
base64Encode(fullBytes) +
|
|
'\n-----END RSA PRIVATE KEY-----';
|
|
```
|
|
|
|
**Prefer:**
|
|
```dart
|
|
final pem = '''
|
|
-----BEGIN RSA PRIVATE KEY-----
|
|
${base64Encode(fullBytes)}
|
|
-----END RSA PRIVATE KEY-----''';
|
|
```
|
|
|
|
### Line Length
|
|
Avoid lines longer than 80 characters, even in Markdown files and comments.
|
|
This ensures code is readable in split-screen views and on smaller screens
|
|
without horizontal scrolling.
|
|
|
|
**Prefer:**
|
|
Target 80 characters for wrapping text. Exceptions are allowed for long URLs
|
|
or identifiers that cannot be broken.
|
|
|
|
## Discovery
|
|
|
|
### Multi-line Strings
|
|
To find candidates for multi-line strings, search for string concatenation
|
|
with `+` involving newlines:
|
|
- **Regex**: `['"]\s*\+\s*['"]`
|
|
- **Regex**: `\+\s*['"].*\\n`
|
|
|
|
### Line Length
|
|
- Rely on the `lines_longer_than_80_chars` lint from the analyzer.
|
|
|
|
## Related Skills
|
|
|
|
- **[dart-modern-features]**: For idiomatic
|
|
usage of modern Dart features like Pattern Matching (useful for deep JSON
|
|
extraction), Records, and Switch Expressions.
|
|
|
|
[dart-modern-features]: https://github.com/kevmoo/dash_skills/blob/main/.agent/skills/dart-modern-features/SKILL.md
|