![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola,
Gracias yusnerqui por el artículo que has enlazado. Por él me he decidido a usar la función "TryStrToInt" en lugar de:
Cita:
Cita:
Cita:
Mira, podría hacer algo así: mostrar el formulario con un único ComboBox en el que el usuario tuviera que escribir el número de la línea a la que quiere llegar. Si el número fuera correcto, estupendo, adelante. Si no fuera un número u ocurriera un error de tipo "EConvertError" volverle a mostrar el formulario y en una "etiqueta" informarle de que es un número lo que tiene que indicar y no otra cosa. Sin embargo, en este caso, insisto, no veo la necesidad: no creo que sea tan complicado lo que se pretende hacer, creo que el usuario lo entiende perfectamente, no se trata de ningún punto "crítico" del programa que pudiera tener consecuencias catastróficas, en fin. Y, por cierto, no hay plan B en este caso: no hay para qué. ¿Qué sé yo a la línea que se quiere dirigir el usuario? No lo sé, por lo tanto, dejaré las cosas como están. |
#2
|
||||
|
||||
Yo voy de acuerdo con mamcx. Las excepciones jamás se deben esconder. Pero esto no significa, como dice mi amigo jachguate, que todas deban llegar a oídos (u ojos) del usuario. "tratar la exepción" no es sinónimo de mostrar un mensaje.
Por otra parte es también un error presuponer, como ya lo indicó mamcx que el código va a fallar por una sola posible causa. Para algo está la construcción:
cualquier otro error que no sepamos o podamos manejar o que ni siquiera tengamos previsto debemos dejar que se propague. También, sin ánimo de ofender, creo que al amigo dec le hace falta enfrentarse con usuarios de verdad. Es increible la cantidad de cosas obvias que algunos simplemente no entienden. No es tanto tratar al usuario como tonto, pero la aplicación si debe estar pensada para tontos. Cita:
Yo, como usuario, agradecería una notificación inmediata de lo que estoy haciendo mal para no perder mi tiempo buscando en el formulario dónde está el error. // Saludos |
#3
|
||||
|
||||
Hola,
Cita:
Cita:
Cita:
Recuerdo el caso: el usuario quiere ir a una línea. El usuario elige del menú la opción para ir a una línea. El usuario se encuentra con un formulario de 40x40 píxeles cuyo título es "número de línea" y que solo contiene un ComboBox que ya tiene cargadas todas las líneas disponibles y muestra la actual. El usuario escribe su nombre... Pues se cierra el formulario y santas pascuas. El usuario vuelve a abrir el formulario, esto es, vuelve a abrir el menú, selecciona la opción oportuna y se le muestra el mismo formulario de antes. Entonces el usuario escribe un número de línea o elige una y zas, se cierra el formulario y se le muestra el número de línea elegido. Al cabo me convencen y pongo un mensaje de error, en caso de que el usuario escriba su nombre o cualquier cosa que no sea un número de línea, y le digo: ¿no querías ir a un número de línea en concreto? ¿entonces para qué escribes tu nombre? Por favor, escribe o elige la línea a la que quieras dirigirte. En fin. Yo creo que aquí el tema no era este en absoluto, pues al cabo todo queda reducido a cómo me parece a mí esto y cómo me parece a mí lo otro. Inicié este Hilo con la sola intención de dar noticia del artículo de Ian Marteens el cual me puso de una vez claro el uso de try/except. Eso sí creo que no se puede discutir, aunque, leyendo el artículo que antes recomendó un compañero que también trata sobre el tratamiento de excepciones, a lo que parece, es un tema sobre el que sí se puede discutir y se lleva discutiendo no poco tiempo. No sé. Se me ocurre que acaso llegamos a un punto en que tratamos de cierto estilo de hacer las cosas, y esto, ¿quién puede medirlo? Quiero decir, ¿quién puede dar una guía de estilo para esto? ¿No se ve cómo se lee la guía de estilo de estos propios foros? Es probable que sirva de algo, evidentemente sirve, pero, ¿no sigue habiendo otras maneras de hacer las cosas de todos modos? Y no de hacer las cosas mal, porque puede uno saltarse a veces ciertas reglas para hacer las cosas bien, o como cree que están bien. Pero, bueno, esto ya es demasiado, menudo rollo que he soltado. Ahora, roman, por favor, hazme saber alguna de esas "cosas obvias que algunos simplemente no entienden". Gracias. ![]() Última edición por dec fecha: 15-07-2005 a las 20:46:05. Razón: corrección del texto |
#4
|
||||
|
||||
Cosas que he aprendido hoy:
+ Todas las entradas que haga el usuario son culpables hasta que se demuestre lo contrario. + Controla todo lo que puedas controlar con los controles (si no quieres letras, pon un control que no acepte letras ![]() + Controla solo los errores que sepas/puedas controlar. (me queda muy claro la excepción EErrorQueSeComoManejar ![]() + El usuario no es tonto, pero el programa debe estar diseñado para tontos. + Al usuario le gusta saber cuando hizo algo mal. (En algunos casos será necesario mostrar un mensaje, en otros casos con un BIP es suficiente; pero SIEMPRE indicarle al usuario que algo no resulto como debería). Tengo la confianza de que gracias a su ayuda y colaboración, seguiré aprendiendo. Gracias a todos.
__________________
|
#5
|
||||
|
||||
Cita:
Problema: El usuario no puede entrar al sistema, le dice que los datos son incorrectos; su hijo- que sabe computación -dice que el sistema está mal hecho. Razón: en el recuadro que dice: Escriba se fecha de nacimiento (dd-mm-aaaa) el usuario escribe 1983/05/31 (¿Qué no es obvio? ¡Le estoy indicando el formato de la fecha!) Conclusión: (desafortunadamente) el hijo tiene razón Solución: antes de mandar los datos al servidor, verificar el formato y mandar un mensaje pertinente en caso de que sea incorrecto. Problema: El alumno no pudo inscribirse, el sistema nunca le presentó el comprobante. Razón: El alumno cerró la ventana con el resumen de datos sin oprimir el botón que decía: "Para terminar su inscripción imprima su comprobante" Claro que estos errores no encajan directamente con las excepciones (de hecho el del combo tampoco), pero son verídicos y muestran el tipo de cosas que podemos dar por obvias y qe el usuario no las ve. Y el que sea un formulario de 40x40 no es pretexto. ¿Te imaginas qué pasaría si en un código de apenas unas cuantas líneas, el compilador no tuviera a bien decirnos: "Missing operator or semicolon" ¿Es obvio que los parámetros de una función deben ir separados por comas! Pero de cualquier forma, una construcción como
jamás debe hacerse. Me parece que ya lo dijo mamcx; al hacer esto escondes todas las excepciones posibles, no sólo las que uno prevee o piensa que pueden suceder. Cita:
![]() Cita:
El mismo artículo, a mi no me queda claro. Cita:
// Saludos |
#6
|
|||||||
|
|||||||
Hola,
Los problemas que me has mostrado roman, aun con ser posibles y todo eso, no tienen nada que ver con lo que yo hago "para dirigir al usuario a una línea". De todos modos te agradezco los comentarios igual. Por eso he recalcado arriba que estaba refiriéndome a un caso en concreto sobre el que había tomado una decisión, un caso concreto, que, claro está, no tiene porqué parecerse a otros casos concretos, por eso son concretos. Cita:
De todas maneras ya dije más arriba que había pasado a utilizar la función "TryStrToInt" y ese patrón de uso de try/except no es algo habitual en lo poco que escribo. Cita:
Así que no entiendo eso de "El usuario no es tonto, pero el programa debe estar diseñado para tontos." ¿En qué quedamos? ¿El usuario es tonto o no lo es? Porque si no lo es no podemos diseñar un progama para tonto: ¿en qué quedamos? Cita:
Cita:
Y que tampoco se debe levantar una excepción dentro de una instrucción try/except, pues que sería levantar la misma excepción dos veces: para eso está raise. Que si no se tiene un plan B, es decir, si no se sabe o no se puede o no se quiere tratar una excepción la instrucción try/except sobra, porque, precisamente, sirve justamente para cuando hay un plan B. Con plan B se refiere Marteens a otra forma de hacer las cosas en caso de que de la primera forma que se pensó no salgan bien: puede que sea de perogrullo pero es que creo que no dirá el referido autor en vano que solamente para un 10% de las excepciones tenemos un plan B. Cita:
Cita:
Actualización: Cita:
Última edición por dec fecha: 15-07-2005 a las 22:08:45. Razón: (actualización) |
#7
|
||||
|
||||
Cita:
Cita:
__________________
Última edición por ContraVeneno fecha: 15-07-2005 a las 22:49:11. |
#8
|
||||
|
||||
Hola,
Aunque entendiendo por dónde quieres ir, si no estoy equivocado, no puedo estar de acuerdo contigo en que el cierre de una instrucción, esto es, el punto y coma sea una tontería. Prueba de ello es el aviso del compilador, más allá, prueba de ello es que el compilador no continuará adelante hasta que no se solucione "esa tontería". ¿Alguien puede explicarme qué es un programa diseñado para tontos? ¡No conozco ninguno! Si no es un programa "malicioso", que busca la ingenuidad del usuario o su carencia de conocimientos, para vete a saber qué. Cualquier programa está pensado para alguien y aun alguienes. Y se presupone a ese alguien la capacidad de entender lo que quiere hacer. Porque un programa puede ser al mismo tiempo una herramienta: el usuario habrá de saber qué quiere hacer con ella. Si PhotoShop, por poner un caso, fuera un programa hecho para tontos hasta yo podría hacer lindas imágenes, pero esto no es así: prueba de que PhotoShop no es un programa para tontos. Vale. Podría hacer cualquier cosa que pareciera una imagen, pero todos sabemos lo que da de sí un programa como PhotoShop y ni por pienso sabría yo hacer algo como lo que por ejemplo estoy recordando ahora. Delphi no es un programa para tontos. ¿O sí? Yo diría que no. Pero es un programa. Yo tengo entre manos un programa ahora y no lo estoy haciendo para tontos, puedo prometerlo. Porque no sabría cómo hacerlo, aunque quisiera. Los asistentes para Windows (cualquiera de ellos) no están hechos para tontos. Simplifican, esconden, "hacen cosas". Si el usuario no quiere ir más allá yo no creo que sea tonto, es que simplemente no necesita más. ¿Para qué darle lo que no necesita? No es tonto: sabe lo que quiere. Es verdad que no siempre. lamentablemente. En todo caso creo que esto sería para debatirse, en el sentido de que seguramente aún no tenemos claro lo que el uno piensa que piensa el otro (por lo menos yo me incluyo en esa cuenta) y así será cuestión de dejar claro que, pase lo que pase, esto no pasaría nunca a mayores. ¡Pero yo no hago programas para tontos, que conste! ![]() |
#9
|
||||
|
||||
![]() Lo que dice roman es correcto, sin seguir hablando de lo mismo, eso tiene que ser asi: LOS PROGRAMAS TIENEN QUE SER HECHOS PARA TONTOS...
es increible, las malas intepretaciones que puede tener la gente de las cosas! yo basicamente utilizo mucho los try/except y siempre tenes q usar plan b,, muchas veces un aviso,, SIEMPRE, siempre los uso.. Saludos! |
#10
|
|||
|
|||
sevilla19742
¿Te imaginas qué pasaría si en un código de apenas unas cuantas líneas, el compilador no tuviera a bien decirnos: "Missing operator or semicolon" ¿Es obvio que los parámetros de una función deben ir separados por comas!
sevilla19742 |
![]() |
|
|
![]() |
|