Ci dispiace ma non dovrò essere d'accordo con la maggior parte delle altre risposte "sì, puoi" e dire che:
Scoraggerei una classe che chiama 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 poi tu, o qualcun altro, erediti da essa e nascondi method1 con un nuovo metodo che chiama method2.
2: Eventi, registrazione ecc.
ad es. ho un metodo Add1 che genera un evento "1 aggiunto!" Probabilmente non voglio che il metodo Add10 generi l'evento, scriva 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, con apre una connessione, avvia una transazione, attende che la tabella venga sbloccata ....
Sono sicuro che ci sono più ragioni, una delle altre ha toccato "modifichi il metodo1 e sei sorpreso che il metodo2 inizi a comportarsi diversamente"
In generale, se hai due metodi pubblici che condividono il codice, è meglio farli chiamare entrambi un metodo privato piuttosto che uno chiama l'altro.
Modificare ----
Consente di espandere il caso specifico nel PO.
non abbiamo molti dettagli, ma sappiamo che ReverseData viene chiamato da un gestore di eventi di qualche tipo e dal metodo ScheduleTransmission.
Suppongo che i dati inversi cambino anche lo stato interno dell'oggetto
Dato questo caso, ritengo che la sicurezza del thread sarebbe importante e quindi si applica la mia terza obiezione alla pratica.
Per rendere sicuro il thread ReverseData puoi aggiungere un lucchetto. Ma se anche ScheduleTransmission deve essere thread-safe, vorrai condividere lo stesso blocco.
Il modo più semplice per farlo è spostare il codice ReverseData in un metodo privato e farli chiamare da entrambi i metodi pubblici. È quindi possibile inserire l'istruzione lock nei metodi pubblici e condividere un oggetto lock.
Ovviamente puoi discutere "che non accadrà mai!" o "Potrei programmare il blocco in un altro modo", ma il punto sulla buona pratica di codifica è di strutturare bene il codice in primo luogo.
In termini accademici direi che ciò viola la L in solido. I metodi pubblici non sono solo accessibili al pubblico. Sono inoltre modificabili dai suoi eredi. Il tuo codice dovrebbe essere chiuso per modifiche, il che significa che devi pensare al lavoro che fai in entrambi i metodi pubblici e protetti.
Eccone un altro: Potresti anche violare il DDD. Se il tuo oggetto è un oggetto di dominio, i suoi metodi pubblici dovrebbero essere termini di dominio che significano qualcosa per l'azienda. In questo caso è molto improbabile che "compri una dozzina di uova" sia uguale a "compri 1 uovo 12 volte" anche se inizia in quel modo.