Si en algún momento se necesita escribir una nueva versión de un método, y desaconsejar el uso de la versión vieja, debe hacerse vía advertencias. De esta forma no se elimina el método, no se cambia su interfaz y no se requiere modificar las aplicaciones existentes, es decir, se mantiene compatibilidad.

Muchos lenguajes facilitan esto, por ejemplo con sus cláusulas deprecated en Java u Obsolete en C#.

En Java se puede hacer así, provocando un mensaje del compilador:

/**
 * @deprected Utilizar ReadData(string sql);
 * @see ReadData(string sql)
 */

public void ReadDB ( String sql , int limit ) {
   
}

En C#, también se puede indicar el mensaje que queremos que aparezca:

[Obsolete("Utilizar ReadData(string sql);")]
public void ReadDB (string sql, int limit)
{

}

Esto atenúa los efectos de los cambios. De todas formas no se debe dejar una cláusula de estas en forma permanente, ya que la credibilidad va a mejorar a medida que se cumpla lo prometido.

Vía: Orientación a Objetos con Java y UML (ISBN 987-1104-20-0)