Ver Mensaje Individual
  #2  
Antiguo 30-03-2016
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Agustín.

Hints
------
Antes de poner una aplicación en producción, es deseable atender y resolver todos los consejos o comentarios (hints) que emite el compilador. Aunque yo no dejo ninguno pendiente, tampoco pasa nada grave si queda uno que otro por ahí, porque no repercuten en el funcionamiento. No obstante, debemos orientarnos a dejar cada vez menos situaciones de hints en el código, ya que de lo contrario contribuimos a ofuscar el código fuente.

Warnings
----------
Antes de poner una aplicación en producción, es indispensable atender y resolver todas y cada una de las advertencias (warnings) que emite el compilador. Me sentiría mal si entregara un ejecutable compilado con sólo una de ellas, aunque se tratase de una aplicación de uso interno. El problema está en que una advertencia es un riesgo potencial de mal funcionamiento, sea por no prever alguna situación actual de procesamiento o por legar código no muy bien revisado que a la siguiente modificación cause un error.

Como excepción, y tratándose de algo compilado por otras personas, suelo pasar por alto la advertencia "Unit XXX implicitly imported" que aparece al compilar un paquete cuyas unidades explícitamente agregadas dependen de otras que no están en un paquete requerido.

Por otro lado, hay ocasiones en que una rutina nos causa una advertencia, pero dicha rutina es pequeña, fácil de comprender y tenemos pleno control de lo que hace. En casos así, si a nuestro entender la advertencia está de más, hay un mecanismo formal (disponible para ciertas advertencias) con el cual podemos decirle al compilador: "Ey, sé lo que hago, me hago responsable". Tomo un ejemplo de mi código:
Código Delphi [-]
  { TghZeroton }

  { Public overridden class methods }

  {$Warn No_RetVal Off}
  Class Function TghZeroton.NewInstance :TObject;
  Begin
    ghRaiseNotInstantiate;  // This raises an ENoConstructException
  End;
  {$Warn No_RetVal On}

Un cordial saludo.

Al González.
Responder Con Cita