2012-09-17 16 views

Respuesta

1

No hay especificaciones para los archivos INI, pero para lo que sea, enumeraré el comportamiento de unas pocas implementaciones de los idiomas que conozco.

de Python incorporada configparser módulo ofrece una getboolean que se comporta de la siguiente manera:

los valores aceptados son ... '1', 'yes', 'true' y 'on', que causan este método para devolver True y '0' , 'no', 'false' y 'off', lo que hace que devuelva False.

En parse_init_file de PHP, por el contrario:

Cadena Valores "verdadero", "en" y "sí" se convierten en VERDADERO. "falsa", "off", "no" y "ninguna" se consideran FALSO.

Mientras tanto,.NET no tiene soporte integrado para el análisis INI, pero su biblioteca de análisis INI más popular, ini-parser, no ofrece soporte alguno para el análisis automático de valores y los devuelve a todos como cadenas. Sus ejemplos de Getting Started muestran el análisis de booleanos con Boolean.Parse de .NET, que aceptará las cadenas "true" y "false" (con mayúsculas) y lanzará una excepción si se le da algo más.

En resumen: no hay absolutamente ninguna coherencia en esta pregunta entre las diferentes implementaciones de los analizadores INI.

recomendaría:

  • Si sólo se va a analizar el INI utilizando un único analizador, comprobar cómo se comporta de esa analizador y las embarcaciones de su INI para satisfacer su aplicación particular.
  • Si necesita admitir una amplia gama de analizadores (por ejemplo, para la interoperabilidad del lenguaje), abandone INI como un formato completo, o evite por completo usar cualquiera de los valores booleanos mágicos que algunos analizadores entienden y en su lugar 1 y 0.
4

Depende del analizador del archivo ini. Los valores son siempre cadenas.

verdadero/falso: En C# puedo convertir cadenas verdaderas y falsas directamente a bool. Igual de legibilidad y conversión fácil. menos código

0/1: Tengo que convertir la cadena 0 y 1 en int antes de convertir a bool. Tamaño de archivo ini más pequeño. Menos legible mas codigo

sí/no y on/off Tendría que usar una instrucción if/switch. legible. mas codigo

Mi forma preferida es verdadera/falsa. Objeto serializar a verdadero/falso, puede usar verdadero/falso con el tipo de bit sql aunque se almacene como 0/1. Entonces, el único inconveniente sería el tamaño, que puede ser menor en la mayoría de los contextos.

Cuestiones relacionadas