Вибачте, але мені доведеться не погодитися з більшістю інших відповідей "так можна" і сказати:
Я б заважав класу викликати один публічний метод від іншого
З цією практикою є кілька потенційних проблем.
1: Нескінченний цикл у спадковому класі
Отже, ваш базовий клас викликає method1 від method2, але тоді ви, або хтось інший, успадковує його і приховує method1 за допомогою нового методу, який викликає method2.
2: Події, ведення журналів тощо
наприклад, у мене є метод Add1, який запускає подію "1 додано!" Напевно, я не хочу, щоб метод Add10 піднімав цю подію, писав у журнал чи що завгодно, десять разів.
3: нарізка різьби та інші тупики
Наприклад, InsertComplexData відкриває db-з'єднання, починає транзакцію, блокує таблицю, потім викликає InsertSimpleData, при відкритті з'єднання починає транзакцію, чекає розблокування таблиці ....
Я впевнений, що причин більше, одна з інших відповідей торкнулася "ти редагуєш метод1 і дивуєшся, що метод 2 поводиться по-іншому"
Якщо у вас є два загальнодоступних методу, які діляться кодом, краще зробити так, щоб вони обидва викликали приватний метод, а не один дзвінок іншому.
Редагувати ----
Давайте розширюватимемо конкретний випадок в ОП.
у нас немає багато деталей, але ми знаємо, що ReverseData викликає якийсь обробник подій, а також метод ScheduleTransmission.
Я припускаю, що зворотні дані також змінюють внутрішній стан об'єкта
Враховуючи цей випадок, я думаю, що сафтей з нитки є важливим, і тому моє третє заперечення проти цієї практики застосовується.
Щоб зробити нитку ReverseData безпечною, можна додати замок. Але якщо ScheduleTransmission також має бути безпечним для потоків, вам потрібно поділитися тим самим блокуванням.
Найпростіший спосіб зробити це - перенести код ReverseData в приватний метод, і обидва публічні методи називають його. Потім можна помістити оператор блокування у "Публічні методи" та поділити об'єкт блокування.
Очевидно, ви можете заперечити "що ніколи не відбудеться!" або "Я міг запрограмувати замок іншим способом", але справа в тому, що хороша практика кодування полягає в тому, щоб в першу чергу добре структурувати свій код.
В академічному плані я б сказав, що це суттєво порушує L. Публічні методи є більш ніж просто публічно доступними. Вони також можуть змінюватися її спадкоємцями. Ваш код повинен бути закритим для модифікації, що означає, що ви повинні задуматися над тим, якою роботою ви займаєтесь як публічними, так і захищеними методами.
Ось ще один: Ви також потенційно порушуєте DDD. Якщо ваш об’єкт є об’єктом домену, його публічними методами повинні бути терміни домену, які щось означають для бізнесу. У цьому випадку малоймовірним є те, що "купити десяток яєць" - це те саме, що "купити 1 яйце 12 разів", навіть якщо воно починається саме так.