3.9 KiB
3.9 KiB
06 — Boas Práticas de Programação (G-ART)
Propósito: registrar as melhores práticas de programação a serem aplicadas sempre que qualquer alteração ou correção for feita neste programa. Servem de checklist obrigatório antes de concluir qualquer mudança.
Regra: antes de considerar uma alteração concluída, confira os itens abaixo.
Eles são o mesmo espírito do fluxo de validação pós-correção
(Engine/run_after_fix.sh), mas cobrem também qualidade de código e
convenções do projeto.
1. Correções de código
- Sempre valide após corrigir — rode
./Engine/run_after_fix.sh(lint + testes). Nunca declare uma correção pronta sem que lint e a suíte passem. - Toda correção já corrigida vira registro — registre o problema em
Engine/docs/05_EXPERIENCIAS.mdpara que não se repita. - Mude o mínimo necessário — altere apenas o que resolve o problema; evite refatorar código não relacionado na mesma mudança.
2. Tempo e FCPXML
- Nunca use
floatpara tempo — toda duração/offset éTimeValue(fração racional"600/2400s"). Float introduz erro de arredondamento. offseté a posição na timeline;starté o in-point na origem — não confundir nas edições de clip.- Markers são filhos dos clips, não irmãos — e
<spine>é a storyline primária; connected clips penduram-se com atributolane. - Preserve sidecars em bundles
.fcpxmld— ao gravar um bundle, copie os arquivos de dados; caso contrário destrói object-tracking/Cinematic.
3. Estrutura e arquitetura
- Mantenha o núcleo desacoplado —
fcpxml/não conhece o protocolo MCP;server.pyé a camada de transporte. Não vazem lógica MCP para o núcleo. - Use o padrão de dispatch — sem cadeias gigantes de
if/elif; useTOOL_HANDLERS(dicionário nome → handler assíncrono). - Reaproveite os helpers centrais —
_parse_project(),_resolve_io_paths(),_setup_modifier(), etc. Não duplique parse/validação de caminho. - Nunca sobrescreva o original — use
generate_output_path()e crie_modified,_chapters, etc. - Mantenha o
MarkerTypecomo single source of truth — a serialização (parse/escrita) vive no enum, não espalhada por handlers.
4. Segurança
- Sempre use
safe_xml.py(defusedxml) — todos os entry points de parse; jamaisxml.etreecru com input não confiável. - Valide caminhos com
_validate_filepath/_validate_output_path— o sandbox de I/O existe para impedir escrita fora do permitido. - Rejeite payloads excessivamente aninhados —
_check_json_depthprotege contra payloads além de 50 níveis. - Nunca registre/commite segredos ou chaves — nem em logs, nem em código.
5. Qualidade e clareza
- Sem comentários desnecessários — código deve ser autoexplicativo; comente o porquê, não o o quê.
- Mimice as convenções do projeto — mesma estrutura de imports, nomes, padrões e bibliotecas já usadas nas vizinhas.
- Lazy import de dependências opcionais —
media_intel(librosa) etranscribe(Whisper) importam sob demanda e degradam com graça (None). - Convenções de teste — use
examples/sample.fcpxml+ fixtures XML inline;sample.fcpxmlNÃO é DTD-conformante, não o use como fixture de validade DTD.
6. Checklist final antes de concluir uma alteração
./Engine/run_after_fix.shpassou (lint zero erros + todos os testes).- Problema registrado em
Engine/docs/05_EXPERIENCIAS.md(se aplicável). - Nenhum
floatusado em matemática de tempo. - Nenhum caminho original sobrescrito.
safe_xml.pyusado em todo parse de input não confiável.- Nenhum segredo registrado ou commitado.
- Mudança mínima, sem refatoração não relacionada.
- Boa prática nova aprendida adicionada a esta lista.