¿Por qué se fallará programas de estilo rápidas más cortos que los programas de estilo de defensa?

StackOverflow https://stackoverflow.com/questions/3093181

Pregunta

He leído acerca de cómo el estilo fail-fast de la programación en lenguajes como Erlang terminar con programas mucho más corto que el estilo defensivo se ha encontrado en la mayoría de otros idiomas. ¿Es esto correcto para todos los tipos de programas y cuál es el razonamiento para esto?

¿Fue útil?

Solución

Programas de Fail-rápidas no son necesariamente más cortos que los de estilo defensivas: depende de la aplicación y las medidas necesarias para hacer que su código de seguridad defensiva

. programas

En el caso de Erlang, el fail-fast son generalmente más cortas por el estilo declarativo y cómo la máquina virtual se asegura para generar casos de error para usted. Como ejemplo, en la función:

day(1) -> sunday;
day(2) -> monday;
day(3) -> tuesday;
day(4) -> wednesday;
day(5) -> thursday;
day(6) -> friday;
day(7) -> saturday;

Cualquier valor inesperado pasado a la función dará lugar a un error que puede ser capturado y manipulado por otro proceso (es decir .: un supervisor). Tales errores serán también no poner en peligro el sistema en su conjunto y no requieren código que se añade a la función en sí - es todo fuera hecho de la ruta de ejecución normal mediante comportamientos predeterminados.

En un lenguaje dinámico, donde fallan rápido no es la norma, usted tiene que comprobar manualmente los límites y lanzar una excepción a sí mismo. A continuación, debe capturar la excepción localmente (de nivel superior intento ... capturas incluido) si no desea que todo el sistema a bajar. El código de tratamiento de errores por lo general tiene que ser insertado a lo largo de la ruta de ejecución normal.

En un lenguaje estático donde fallan rápido no es la norma, entonces el tiempo que el código será será altamente dependerá del tipo de sistema que tiene. Si el lenguaje permite definir tipos en los casos extremos terminan verificados para usted por el compilador, entonces por lo general no tiene que manejar esto dentro del código, fuera de sucesos no determinísticos (los archivos que no trabaja, la entrada del usuario inesperada, etc.) En idiomas con este tipo de sistemas de tipo, muchos errores serán capturados antes de tiempo de ejecución y por lo que no tendrá la mayor cantidad de casos de defensa.

Cuando el tratamiento de errores no se puede evitar, apoyando a prueba de idiomas rápidas expresiones idiomáticas (como Erlang) permitirá código podría decirse más claro que los lenguajes que no lo hacen (estática o no), principalmente debido a que el código para casos especiales no es mezclado con el código de la ruta de ejecución ideal.

Otros consejos

Vea las secciones 4.3 y 4.4 de Joe Armstrong tesis .

El estilo fail-fast de la programación se centra en una mejor legibilidad del código y depuración. La experiencia del usuario es un objetivo secundario:. Un usuario puede experimentar extraños mensajes de error o errores de programa, pero la calidad superior de código permite a los programadores fácilmente encontrar el error y corregir el problema

programación estilo defensivo, en cambio, se centra en la entrada de validación de usuario y de otras porciones de código. El código es mas verbal, debido a que el programador tiene que verificar cuidadosamente entrada y fallar con gracia en caso de error. Esto condujo a más código (de los programadores punto de vista) y una aplicación más robusta (de los usuarios punto de vista).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top