抱歉,我将不得不不同意其他大多数“是的”答案,并说:
我不鼓励从另一个方法调用一个公共方法的类
这种做法有两个潜在的问题。
1:继承类中的无限循环
因此,您的基类从method2调用method1,但是您或其他人继承了该类,并用调用method2的新方法隐藏了method1。
2:事件,日志记录等
例如,我有一个方法Add1会触发一个事件“添加了1!”。我可能不希望Add10方法引发该事件,将其写入日志或其他任何十次。
3:线程和其他死锁
例如,InsertComplexData打开一个数据库连接,开始一个事务,锁定一个表,然后调用InsertSimpleData,打开一个连接,开始一个事务,等待表被解锁。...
我敢肯定还有更多原因,其中另一个答案是“您编辑method1并感到惊讶method2开始表现不同”
通常,如果您有两个共享代码的公共方法,最好使它们都调用私有方法,而不是一个调用另一个方法。
编辑----
让我们扩展一下OP中的特定情况。
我们没有很多细节,但是我们知道ReverseData是由某种事件处理程序以及ScheduleTransmission方法调用的。
我认为反向数据也会改变对象的内部状态
在这种情况下,我认为线程安全很重要,因此我对实践的第三个反对意见适用。
为了使ReverseData线程安全,您可以添加一个锁。但是,如果ScheduleTransmission也需要是线程安全的,则您将希望共享相同的锁。
最简单的方法是将ReverseData代码移到私有方法中,并让两个公共方法都调用它。然后,您可以将lock语句放入“公共方法”中并共享一个锁对象。
显然,您可以争论“那将永远不会发生!” 或“我可以用另一种方式对锁进行编程”,但是关于良好编码实践的重点是首先要很好地构建代码。
用学术术语来说,这肯定违反了L。公开方法不仅仅是公开接受的方法。它们也可以由其继承者修改。应该关闭您的代码以进行修改,这意味着您必须考虑在公共方法和受保护方法中所做的工作。
这是另一个:您也可能违反DDD。如果您的对象是领域对象,则其公共方法应为“领域”术语,这对企业而言具有一定意义。在这种情况下,即使以这种方式开始,“买一打鸡蛋”和“买一枚鸡蛋12次”的可能性很小。