code-quality
tursodatabase/turso
Общие правила корректности, шаблоны языка Rust, комментарии, избегание чрезмерной сложности проектирования. При написании кода всегда учитывайте эти аспекты.
...Расширить всеО качестве кода
code-quality — это краткий справочник правил кодирования для проекта базы данных Turso (Limbo), в котором изложены правила корректности, идиомы языка Rust, рекомендации по комментариям и предотвращению чрезмерной сложности кода, которые разработчики должны соблюдать при написании программного обеспечения. Основная идея документа заключается в том, что речь идет о производственной базе данных, где корректность имеет первостепенное значение, и аварийный сбой предпочтительнее повреждения данных; поэтому здесь кодифицируются привычки, обеспечивающие безопасность кодовой базы.
В руководстве описаны правила корректности (отказ от временных решений и быстрых хаков, частое использование функций assert, сброс при некорректном состоянии, угрожающем целостности данных, учет крайних случаев) и паттерны языка Rust (делать недопустимые состояния не представимыми, использовать полное совпадение шаблонов, отдавать предпочтение enum перед строками/сентинелами, минимизировать выделение памяти на куче, писать код, оптимизированный для работы процессора). Приводятся конкретные рекомендации по использованию операторов if — применять assert!, возвращать ошибку или использовать unreachable! для веток, которые никогда не должны выполниться, вместо того чтобы молча игнорировать их, а также правила комментариев, предполагающие описание причин вместо описания самого факта, при этом запрещается использование ссылок на диалоги с ИИ и временных меток. Также указывается на необходимость дважды проверять порядок изменения индексов по отношению к SQLite для избежания несоответствий, упоминается связанная с этим навык работы с асинхронным вводом-выводом, а также перечисляются правила очистки кода от «мертвого» кода или обходных решений, несовместимых со старыми версиями.
Документ предназначен для участников разработки кодовой базы Turso/Limbo на Rust, а также для всех, кто пишет программное обеспечение на Rust на уровне систем и нуждается в компактном чек-листе правил корректности. Это исключительно справочный документ — без скриптов, команд, учетных данных или побочных эффектов, поэтому он полностью безвреден.
Часто задаваемые вопросы
Какова основная идея документа?
Речь идет о производственной базе данных, где корректность имеет первостепенное значение; поэтому аварийный сбой предпочтительнее повреждения данных. Правила побуждают разработчиков явно выявлять ошибки, а не продолжать работу в некорректном состоянии.
Как следует обращаться с ветками кода, которые никогда не должны возникнуть?
Не игнорируйте их молча. Используйте функцию assert! с сообщением о нарушении правил, возвращайте ошибку или используйте unreachable! — обычные конструкции if/else следует оставлять для случаев, когда обе ветки являются возможными путями выполнения.
Каковы правила написания комментариев?
Описывайте причины, а не сам факт, документируйте функции/структуры/enums/variants, избегайте комментариев, которые повторяют код, содержат ссылки на диалоги с ИИ или временные метки вроде «added» или «Phase 1».
Применим ли этот документ за пределами Turso?
Он написан для кодовой базы Turso/Limbo на Rust, но его рекомендации по корректности и идиомам языка Rust в целом полезны при работе с Rust на уровне систем.
Почему в документе упоминаются изменения индексов?
Потому что порядок выполнения операций insert, delete и разрешения конфликтов должен соответствовать стандартам SQLite; неправильный порядок приводит к несоответствиям в индексах, которые легко ускользнуть от внимания.
Core Principle
Production database. Correctness paramount. Crash > corrupt.
Correctness Rules
- No workarounds or quick hacks. Handle all errors, check invariants
- Assert often. Never silently fail or swallow edge cases
- Crash on invalid state if it risks data integrity. Don't continue in undefined state
- Consider edge cases. On long enough timeline, all possible bugs will happen
Rust Patterns
- Make illegal states unrepresentable
- Exhaustive pattern matching
- Prefer enums over strings/sentinels
- Minimize heap allocations
- Write CPU-friendly code (microsecond = long time)
If-Statements
Wrong:
if condition { // happy path} else { // "shouldn't happen" - silently ignored}
Right:
// If only one branch should ever be hit:assert!(condition, "invariant violated: ...");// ORreturn Err(LimboError::InternalError("unexpected state".into()));// ORunreachable!("impossible state: ...");
Use if-statements only when both branches are expected paths.
Comments
Do:
- Document WHY, not what
- Document functions, structs, enums, variants
- Focus on why something is necessary
Don't:
- Comments that repeat code
- References to AI conversations ("This test should trigger the bug")
- Temporal markers ("added", "existing code", "Phase 1")
Avoid Over-Engineering
- Only changes directly requested or clearly necessary
- Don't add features beyond what's asked
- Don't add docstrings/comments to unchanged code
- Don't add error handling for impossible scenarios
- Don't create abstractions for one-time operations
- Three similar lines > premature abstraction
Index Mutations
When code involves index inserts, deletes, or conflict resolution, double-check the ordering against SQLite. Wrong ordering causes index inconsistencies. and easy to miss.
Ensure understanding of IO model
- Async IO model
Cleanup
- Delete unused code completely
- No backwards-compat hacks (renamed
_vars, re-exports,// removedcomments)
Все файлы
0 файловУстановить code-quality
Скачайте файлы с навыками и извлеките их в папку .claude/skills/.
Скачать ZIPКлонируйте репозиторий и скопируйте файлы навыка в свой проект.
git clone https://github.com/tursodatabase/turso/blob/main/.claude/skills/code-quality/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Копировать





Дом
