Désolé mais je vais devoir être en désaccord avec la plupart des autres réponses «oui vous pouvez» et dire que:
Je découragerais une classe d'appeler une méthode publique d'une autre
Il y a quelques problèmes potentiels avec cette pratique.
1: boucle infinie dans la classe héritée
Ainsi, votre classe de base appelle method1 de method2 mais vous ou quelqu'un d'autre en héritez et cache method1 avec une nouvelle méthode qui appelle method2.
2: événements, journalisation, etc.
par exemple, j'ai une méthode Add1 qui déclenche un événement '1 ajouté!' Je ne veux probablement pas que la méthode Add10 déclenche cet événement, écrive dans un journal ou autre, dix fois.
3: filetage et autres blocages
Par exemple, InsertComplexData ouvre une connexion db, démarre une transaction, verrouille une table, puis appelle InsertSimpleData, avec ouvre une connexion, démarre une transaction, attend que la table soit déverrouillée ....
Je suis sûr qu'il y a plus de raisons, l'une des autres réponses a abordé `` vous modifiez la méthode1 et vous êtes surpris que la méthode2 commence à se comporter différemment ''
En général, si vous avez deux méthodes publiques qui partagent du code, il vaut mieux les faire appeler toutes les deux une méthode privée plutôt que l'une d'appeler l'autre.
Modifier ----
Permet d'étendre le cas spécifique du PO.
nous n'avons pas beaucoup de détails mais nous savons que ReverseData est appelé par un gestionnaire d'événements d'une certaine sorte ainsi que par la méthode ScheduleTransmission.
Je suppose que les données inversées modifient également l'état interne de l'objet
Dans ce cas, je pense que la sécurité des fils serait importante et c'est pourquoi ma troisième objection à la pratique s'applique.
Pour sécuriser le thread ReverseData, vous pouvez ajouter un verrou. Mais si ScheduleTransmission doit également être sûr pour les threads, vous souhaiterez partager le même verrou.
La façon la plus simple de procéder consiste à déplacer le code ReverseData dans une méthode privée et à ce que les deux méthodes publiques l'appellent. Vous pouvez ensuite placer l'instruction lock dans les méthodes publiques et partager un objet lock.
De toute évidence, vous pouvez dire "cela n'arrivera jamais!" ou "Je pourrais programmer la serrure d'une autre manière" mais le point essentiel d'une bonne pratique de codage est de bien structurer votre code en premier lieu.
En termes académiques, je dirais que cela viole le L en solide. Les méthodes publiques sont plus que simplement accessibles au public. Ils sont également modifiables par ses héritiers. Votre code doit être fermé pour modification, ce qui signifie que vous devez réfléchir à votre travail dans les méthodes publiques et protégées.
En voici un autre: vous violez également potentiellement DDD. Si votre objet est un objet de domaine, ses méthodes publiques doivent être des termes de domaine qui signifient quelque chose pour l'entreprise. Dans ce cas, il est très peu probable que «acheter une douzaine d'œufs» soit la même chose que «acheter 1 œuf 12 fois» même si cela commence de cette façon.