Hola Carlos 

Gracias por tus comentarios.
Tiene otro problema, la función que usa esta obsoleta, según la pagina de 
microsoft, que a esta altura se debería llamar macrosoft :).

Porqué estas diciendo que esta mal usar #error: ? .
No recuerdo bien los motivos, pero los mecanismos de control de error no son 
intercambiables.

Me aclaras la diferencia ?

saludos kiko

--- El mié 28-jul-10, Carlos E. Ferro <[email protected]> escribió:

De: Carlos E. Ferro <[email protected]>
Asunto: Re: [clubSmalltalk] StdioFileStream dolphin
Para: [email protected]
Fecha: miércoles, 28 de julio de 2010, 12:03



  

    
  On 28/07/2010 11:44, Jose Gregoris wrote:
    
      
        
          
            Hola 

              

              En la clase StdioFileStream tenes el mensaje  :

              

              StdioFileStream >>read: aString text: aBoolean 

            
          
        
      
    
    

        [ . . . ]

    
      
        
          
              

              No es mejor que primero verifique la existencia del
              archivo y luego proceda ?

              Es un error de codificación o estoy errado ?

            
          
        
      
    
    

    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

    

    -- 

      

      
      signature
      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  
      This message and any
            attached documents contain information from Caesar Systems
            LLC that may be confidential/trade secret and/or privileged.
            If you are not the intended recipient, you may not read,
            copy, distribute or use this information. If you have
            received this transmission in error, please notify the
            sender immediately by telephone or by reply e-mail and then
            delete this message.
    
  


-- 

To post to this group, send email to [email protected]

To unsubscribe from this group, send email to 
[email protected]

 

http://www.clubSmalltalk.org



      

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a