Scusa ma non sarò d'accordo con la maggior parte delle altre risposte "sì che puoi" e dici che:
Scorrei una classe chiamando un metodo pubblico da un altro
Ci sono un paio di potenziali problemi con questa pratica.
1: ciclo infinito nella classe ereditata
Quindi la tua classe base chiama method1 da method2 ma tu o qualcun altro ne erediti e nasconde method1 con un nuovo metodo che chiama method2.
2: Eventi, Registrazione ecc.
Ad esempio, ho un metodo Add1 che attiva un evento '1 aggiunto!' Probabilmente non voglio il metodo Add10 per sollevare quell'evento, scrivere su un registro o altro, dieci volte.
3: threading e altri deadlock
Ad esempio InsertComplexData apre una connessione db, avvia una transazione, blocca una tabella, quindi chiama InsertSimpleData, apre una connessione, avvia una transazione, attende che la tabella venga sbloccata ....
Sono sicuro che ci sono più motivi, una delle altre risposte toccate su "tu modifica il metodo1 e sei sorpreso che il metodo2 cominci a comportarsi diversamente"
In generale se hai due metodi pubblici che condividono il codice, è meglio che entrambi chiamino un metodo privato anziché uno chiama l'altro.
Modifica ----
Consente di espandere il caso specifico nell'OP.
non abbiamo molti dettagli, ma sappiamo che ReverseData è chiamato da un gestore di eventi di qualche tipo così come il metodo ScheduleTransmission.
I dati inversi cambiano anche lo stato interno dell'oggetto
Dato questo caso, penserei che la sicurezza del thread sarebbe importante e quindi la mia terza obiezione alla pratica si applica.
Per rendere sicuro il thread di ReverseData è possibile aggiungere un blocco. Ma se ScheduleTransmission ha bisogno di essere thread-safe, vorrai condividere lo stesso blocco.
Il modo più semplice per farlo è spostare il codice di ReverseData in un metodo privato e chiamarlo con entrambi i metodi pubblici. È quindi possibile inserire l'istruzione di blocco nei metodi pubblici e condividere un oggetto di blocco.
Ovviamente puoi obiettare che "non succederà mai!" o "Potrei programmare il blocco in un altro modo", ma il punto su una buona pratica di codifica è strutturare bene il tuo codice in primo luogo.
In termini accademici direi che questo viola la L in solido. I metodi pubblici sono più che accessibili pubblicamente. Sono anche modificabili dai suoi eredi. Il tuo codice dovrebbe essere chiuso per la modifica, il che significa che devi pensare a quale lavoro fai nei metodi pubblici e protetti.
Ecco un altro: violentemente stai anche violando il DDD. Se il tuo oggetto è un oggetto di dominio, i suoi metodi pubblici dovrebbero essere termini di dominio che significano qualcosa per il business. In questo caso è molto improbabile che "compri una dozzina di uova" sia uguale a "compra 1 uovo 12 volte" anche se inizia da quella parte.