вариант

Общие правила корректности, шаблоны языка Rust, комментарии, избегание чрезмерной сложности проектирования. При написании кода всегда учитывайте эти аспекты.

...Расширить все
31
Обновлено время 22 августа 2026 г.

О качестве кода

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; неправильный порядок приводит к несоответствиям в индексах, которые легко ускользнуть от внимания.

Посмотреть на GitHub

Core Principle

Production database. Correctness paramount. Crash > corrupt.

Correctness Rules

  1. No workarounds or quick hacks. Handle all errors, check invariants
  2. Assert often. Never silently fail or swallow edge cases
  3. Crash on invalid state if it risks data integrity. Don't continue in undefined state
  4. 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, // removed comments)

Все файлы

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

Копировать Копировать
Быстрая настройка: Скопируйте папку с навыком в .claude/skills/ — Claude автоматически обнаружит её и начнёт использовать.
Репозиторий tursodatabase/turso

Похожие навыки

golang-dependency-injection
Обновлено время 29 июня 2026 г.
nuxthub
Обновлено время 23 августа 2026 г.
tc-tracker
Обновлено время 27 августа 2026 г.
altimate-data-engineering-skills
Обновлено время 23 августа 2026 г.
OR