Resulta interesante ver como... ¡es broma!, ¡¡es broma!!, jeje.
Bueno en la mayoría de Proyectos que consigues tienen como Base de datos unos 30 o 50 virus registrados.
En realidad siendo optimistas ni tan mal está... es una cantidad humilde pero suficiente, no creo que nunca llegue a poder infectarme de 1.441.802 virus para comprobar la eficacía antiviral de otro software.
Y el compañero
@Elektro Bueno estoy esperando sus criticas constructivas
:V .[/center]
Me siento generoso así que voy a criticar el código todo lo que pueda (ojo, no todo tienen por que ser críticas negativas xD). Ya sabes que yo comento sobre el código fuente más que proponer ideas para añadir nuevas funcionalidades al programa y esas cosas...
Bueno, lo primero que he visto al abrir el proyecto es la interfaz de usuario, y debo decir que resulta algo odioso ver textos de controles escritos en Inglés, y otros en Español, y no solo eso, sino que además en el códio fuente también... los nombres de las variables son bilingüe. Hay cierta inconcistencia de elección en ese sentido: programar en Inglés, o en Español.
Hay muchas cosas que se pueden (y se deberían) mejorar al aplicar el
letter-casing y el formato de nomenclatura de las variables declaradas a nivel de clase, y los nombres de los métodos. Pero bueno, no profundizaré en todo lo que es y/o me resulta inapropiado... no quiero acabar escribiendo la Biblia.
Esto ya no es simple crítica, sino un error o fallo de diseño como tal: en el método
GetMd5() te estás dejando abierta una instancia
IDisposable: la clase
FileStream. Debes asegurarte de usar el método
Close o
Dispose. En la clase
MD5CryptoServiceProvider también, pero sobre todo al trabajar con streams (las consecuencias tienen mayor importancia) hay que cerrarlos.
No creo que se puede mencionar mucho más ni para bien ni para mal sobre la aplicación, ya que es un código de pocas lineas. Bueno, quizás decirte que lo ideal sería que la base de datos se distribuya como un archivo local, así el usuario podría añadir nuevas entradas/firmas/hashes, o eliminar las que quisiera.
¿Alguna crítica positiva?, sí, sin duda es un gran acierto que hayas optado por usar la clase
BackgroundWorker de entre las demás opciones que podías considerar sin tener demasiada experiencia en ello (clase
Thread,
Task, y el
Async), +10 puntos por hacer las cosas muy bien en ese sentido, puesto que la clase está diseñada/pensada y optimizada para este tipo de escenario (
multi-threading que interactue con los elementos de la UI). Sin embargo, lo que no está tan bien hecho es el modo en el que la estás utilizando, de hecho basicamente se podría decir que no le estás dando el uso que se le debería dar, nope, pero bueno, por el momento así, démosle el "Ok!". Espero en el futuro ver tus avances en el dominio de la programación asincrónica.
Saludos!