Primeiro, tente encontrar um formato que seja próximo o suficiente do que você está prestes a construir. Em geral, é melhor usar o formato de alguém do que inventar o seu próprio, mesmo que o formato pareça um pouco mais complexo do que o necessário 1 .
Se você não conseguir encontrar um formato pronto adequado, veja se pode criar seu próprio sobre um formato de uso geral existente, como XML ou XML binário . Isso deve ser possível em quase todos os casos, quando você está prestes a iniciar um novo formato de arquivo. O XML baseado em texto ocupa mais espaço, mas fornece aos humanos alguma medida de legibilidade. No entanto, se você estiver usando a codificação Base-64 dentro de um arquivo XML, isso é uma indicação clara de que você deveria ter usado uma codificação binária.
No que diz respeito às boas e más práticas, certifique-se de não incorporar o recurso de hardware da sua plataforma de destino inicial ao design do formato do arquivo. Especificamente, verifique se seus números estão armazenados em um formato que possa ser lido corretamente em plataformas com endianness diferente do gravador e se as seqüências de caracteres voltadas para o usuário estão armazenadas no UNICODE.
Outra boa prática é incluir um cabeçalho no qual é possível determinar o tipo do seu arquivo, caso sua extensão esteja ausente ou incorreta. É uma boa ideia incluir uma versão do seu formato de arquivo no cabeçalho. Isso permitiria alterar o formato posteriormente e permanecer compatível com versões anteriores.
Se possível, não torne seu formato dependente das especificidades do mecanismo de serialização padrão incorporado à sua plataforma. Por exemplo, objetos Java serializados em binários não produzem um bom formato de arquivo 2 .
Por fim, decida se seus arquivos precisam ser streamable . Isso introduz complexidade adicional, porque é possível interpretar "quadros" individuais do seu arquivo isoladamente. Nos casos em que você precisa de capacidade de estruturação, no entanto, você quase sempre deve conseguir localizar um formato de arquivo adequado que já exista.
1 Por outro lado, você deve evitar formatos que exijam esforços extraordinários para suportar a complexidade exigida pelo seu aplicativo.
2 Isso não significa, no entanto, que você não deve tentar integrar de forma personalizada a leitura e gravação do seu novo formato com o esquema de serialização da sua plataforma, apenas que você não deve confiar nos mecanismos padrão de serialização.