Desculpe, mas vou ter que discordar da maioria das outras respostas 'sim, você pode' e dizer o seguinte:
Eu desencorajaria uma classe chamando um método público de outro
Existem alguns problemas em potencial com essa prática.
1: Loop infinito na classe herdada
Portanto, sua classe base chama method1 do method2, mas você ou outra pessoa herda dele e oculta o method1 com um novo método que chama method2.
2: Eventos, registro etc.
por exemplo, eu tenho um método Add1 que dispara um evento '1 added!' Eu provavelmente não quero que o método Add10 levante esse evento, grave em um log ou o que seja, dez vezes.
3: rosqueamento e outros impasses
Por exemplo, InsertComplexData abre uma conexão db, inicia uma transação, bloqueia uma tabela e chama InsertSimpleData, com abre uma conexão, inicia uma transação, aguarda que a tabela seja desbloqueada ....
Tenho certeza de que há mais motivos, uma das outras respostas foi tocada em 'você edita o método1 e fica surpreso com o método2 começa a se comportar de maneira diferente'
Geralmente, se você tem dois métodos públicos que compartilham código, é melhor fazê-los chamar um método privado em vez de um chamar o outro.
Editar ----
Vamos expandir o caso específico no OP.
não temos muitos detalhes, mas sabemos que ReverseData é chamado por algum manipulador de eventos, bem como o método ScheduleTransmission.
Suponho que os dados reversos também alterem o estado interno do objeto
Dado este caso, eu pensaria que a segurança do thread seria importante e, portanto, minha terceira objeção à prática se aplica.
Para tornar o thread ReverseData seguro, você pode adicionar um bloqueio. Mas se o ScheduleTransmission também precisar ser seguro para threads, você desejará compartilhar o mesmo bloqueio.
A maneira mais fácil de fazer isso é mover o código ReverseData para um método privado e fazer com que ambos os métodos públicos o chamem. Você pode colocar a instrução lock nos Métodos Públicos e compartilhar um objeto de bloqueio.
Obviamente, você pode argumentar "isso nunca vai acontecer!" ou "Eu poderia programar o bloqueio de outra maneira", mas o ponto sobre as boas práticas de codificação é estruturar bem seu código em primeiro lugar.
Em termos acadêmicos, eu diria que isso viola o L em sólido. Os métodos públicos são mais do que acessíveis publicamente. Eles também são modificáveis por seus herdeiros. Seu código deve ser fechado para modificação, o que significa que você precisa pensar no trabalho que realiza nos métodos público e protegido.
Aqui está outra: você também potencialmente viola o DDD. Se seu objeto é um objeto de domínio, seus métodos públicos devem ser termos de domínio, que significam algo para os negócios. Nesse caso, é muito improvável que "compre uma dúzia de ovos" seja o mesmo que "compre 1 ovo 12 vezes", mesmo que comece dessa maneira.