Lo siento, pero voy a tener que estar en desacuerdo con la mayoría de las otras respuestas 'sí, puedes' y decir eso:
Desalentaría una clase que llama un método público de otro
Hay un par de posibles problemas con esta práctica.
1: bucle infinito en clase hertited
Entonces, su clase base llama al método1 del método2, pero luego usted u otra persona hereda de él y oculta el método1 con un nuevo método que llama al método2.
2: Eventos, registro, etc.
por ejemplo, tengo un método Add1 que dispara un evento '¡1 agregado!' Probablemente no quiero que el método Add10 genere ese evento, escriba en un registro o lo que sea, diez veces.
3: roscado y otros puntos muertos
Por ejemplo, InsertComplexData abre una conexión db, inicia una transacción, bloquea una tabla, luego llama a InsertSimpleData, con abre una conexión, inicia una transacción, espera a que la tabla se desbloquee ...
Estoy seguro de que hay más razones, una de las otras respuestas tocó 'editas el método1 y te sorprende que el método2 comience a comportarse de manera diferente'
En general, si tiene dos métodos públicos que comparten código, es mejor hacer que ambos llamen a un método privado en lugar de que uno llame al otro.
Editar ----
Vamos a ampliar el caso específico en el OP.
no tenemos muchos detalles, pero sabemos que ReverseData es llamado por un controlador de eventos de algún tipo, así como por el método ScheduleTransmission.
Supongo que los datos inversos también cambian el estado interno del objeto
Dado este caso, pensaría que la seguridad del hilo sería importante y, por lo tanto, se aplica mi tercera objeción a la práctica.
Para hacer que el hilo ReverseData sea seguro, puede agregar un bloqueo. Pero si ScheduleTransmission también necesita ser seguro para subprocesos, querrá compartir el mismo bloqueo.
La forma más fácil de hacerlo es mover el código ReverseData a un método privado y hacer que ambos métodos públicos lo llamen. Luego puede colocar la declaración de bloqueo en los Métodos públicos y compartir un objeto de bloqueo.
Obviamente puedes argumentar "¡eso nunca sucederá!" o "Podría programar el bloqueo de otra manera", pero el punto sobre las buenas prácticas de codificación es estructurar bien su código en primer lugar.
En términos académicos, diría que esto viola la L en sólido. Los métodos públicos son más que solo accesibles públicamente. También son modificables por sus herederos. Su código debe cerrarse para su modificación, lo que significa que debe pensar qué trabajo realiza en los métodos públicos y protegidos.
Aquí hay otro: también violas potencialmente DDD. Si su objeto es un objeto de dominio, sus métodos públicos deben ser términos de dominio que significan algo para la empresa. En este caso, es muy poco probable que 'comprar una docena de huevos' sea lo mismo que 'comprar 1 huevo 12 veces', incluso si comienza de esa manera.