On 28/07/2010 11:44, Jose Gregoris wrote:
[ . . . ]
Estás errado. No es UN error de codificación. ¡Son varios! Probablemente alguien "mejoró" el método en CRTLibrary y ahora se traga la excepción y te devuelve nil. Ya es feo que el comment sea tan largo. Aparentemente, hay mucho para entender en un método que es muy corto... y no se entiende leyendo el código. Eso es mala señal (aunque entiendo que puede ocurrir en lugares "puente" donde invocás una función externa). Es malo que te diga que levanta una excepción, si en este método no se levanta ni se maneja. Eso quiere decir que el que lo escribió conoce la implementación de lo que está llamando, y sabe que va a tirar una excepción. El problema es que conocía la implementación de ese momento... el comentario y su valiosa info quedan obsoletos en cuanto alguien modifica en otro lado. Otro problema que oscurece el método es el argumento en la expresión anidada de paréntesis. Nosotros aplicamos siempre la "regla de Valloud" en estos casos (perdón, Andrés, pero está en el libro): un argumento de un keyword no puede ir nunca entre paréntesis. Requiere un nombre que aclare qué es. Finalmente, los nombres de los argumentos no aportan suficiente información, que ya tenemos y agiliza la lectura. Rápidamente lo reescribiría así: StdioFileStream >>read: filename text: aBoolean "Access is character based or binary, depending on the <boolean> argument" | handler mode | mode := aBoolean ifTrue: ['rt'] ifFalse: ['rb']. handler := CRTLibrary default fopen: filename mode: mode. handler isNil ifTrue: [ self error: 'File ', filename, ' does not exist' ]. ^self basicNew setStream: handler isText: aBoolean name: filename Ojo, donde puse self error:, eso también es muy malo; ahí hay que generar una excepción apropiada. Saludos --
-- carlos e. ferro | senior
developer |
caesar systems
| see clearly. decide
smarter. [email protected] | t: +1.281.598.8790
| t: +54.11.4389.0126 | www.caesarsystems.com To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org |
Title: signature
- [clubSmalltalk] StdioFileStream dolphin Jose Gregoris
- Re: [clubSmalltalk] StdioFileStream dolphin Carlos E. Ferro
- Re: [clubSmalltalk] StdioFileStream dolphin Jose Gregoris
- Re: [clubSmalltalk] StdioFileStream dolphin Carlos E. Ferro
- Re: [clubSmalltalk] StdioFileStream dolph... Jose Gregoris
- Re: [clubSmalltalk] StdioFileStream ... Carlos E. Ferro
- Re: [clubSmalltalk] StdioFileStr... Jose Gregoris
- Re: [clubSmalltalk] StdioFil... Carlos E. Ferro
- Re: [clubSmalltalk] StdioFil... Jose Gregoris
- Re: [clubSmalltalk] StdioFil... Carlos E. Ferro
- Re: [clubSmalltalk] StdioFil... Jose Gregoris
- Re: [clubSmalltalk] StdioFil... GallegO
