No es buena idea, ya que si cambias la clase del dataset, te tenes que acordar de agregar el cast a esa clase; es agregar un if
Ademas, si se manda por parametro un TDataSet, eso quiere decir que puedo mandar sin problemas un TTable, un TClientDataSet; y evidentemente eso no es lo que espera el procedimiento
Tambien implica agregar en la clausula uses las distintas bibliotecas: ADODB para TADOxx, DB para TDataSet, DBClient para TClientDataSet; esto es malo porque es acoplamiento (se depende de otra unidad para poder compilar la nuestra). El codigo acoplado es mas dificil de mantener, mas dificil de testear, mas dificil de aislar. Yo siempre estoy luchando con sacar todo lo que sobra en los uses, y si puedo poner todo en la seccion de implementation, mejor aun
Delphi por suerte soporta OOP e interfaces, no volvamos a la programacion estructurada
Lo mas sano es declarar una interface y enviarla como parametro; si mas adelante cambio de TADOQuery a TQuery, al enviarlo por parametro el compilador me va a recordar amablemente que la clase TQuery no implementa dicha interface
Hay que aprender a escribir codigo que arroje los errores en tiempo de compilacion, no en ejecucion
Última edición por AgustinOrtu fecha: 01-02-2016 a las 14:30:10.
|