Per prima cosa, prova a trovare un formato abbastanza vicino a quello che stai per costruire. In generale, è meglio usare il formato di qualcuno che inventare il tuo, anche se il formato sembra essere leggermente più complesso di quello che ti serve 1 .
Se non riesci a trovare un formato ready-made adatto, verifica se è possibile crearne uno in aggiunta a un formato generico esistente, ad esempio XML o XML binario . Questo dovrebbe essere possibile in quasi tutti i casi in cui stai per iniziare un nuovo formato di file. L'XML basato su testo occupa più spazio, ma offre agli utenti una certa misura di leggibilità. Tuttavia, se ti trovi a utilizzare la codifica Base-64 all'interno di un file XML, è una chiara indicazione che dovresti usare una codifica binaria.
Per quanto riguarda le buone e cattive pratiche, assicurati di non "inserire" la funzionalità hardware della tua piattaforma di destinazione iniziale nella progettazione del tuo formato di file. In particolare, assicurati che i tuoi numeri siano memorizzati in un formato che possa essere letto correttamente su piattaforme con endianness diverso da quello dello scrittore e che le stringhe rivolte all'utente siano archiviate in UNICODE.
Un'altra buona pratica è includere un'intestazione da cui è possibile determinare il tipo di file nel caso in cui la sua estensione sia mancante o errata. È una buona idea includere una versione del tuo formato di file nell'intestazione. Ciò ti consente di modificare il formato in un secondo momento e di rimanere compatibile con le versioni precedenti.
Se possibile, non rendere il tuo formato dipendente dalle specifiche del meccanismo di serializzazione predefinito incorporato nella tua piattaforma. Ad esempio, gli oggetti Java con serializzazione binaria non formano un buon formato di file 2 .
Infine, decidi se i tuoi file devono essere trasmissibili . Ciò introduce una complessità aggiuntiva, in quanto si dovrebbe essere in grado di interpretare singoli "frame" del file in isolamento. Nei casi in cui è necessario lo streaming, tuttavia, si dovrebbe quasi sempre essere in grado di individuare un formato file adatto che esiste già.
1 D'altro canto, dovresti evitare formati che richiedono sforzi straordinari per supportare la complessità richiesta dall'applicazione.
2 Ciò non significa, tuttavia, che non si debba tentare di integrare in modo personalizzato la lettura e la scrittura del nuovo formato con lo schema di serializzazione della propria piattaforma, solo che non si deve fare affidamento sul meccanismi di serializzazione predefiniti.