Xin lỗi nhưng tôi sẽ không đồng ý với hầu hết các câu trả lời 'có bạn có thể' khác và nói rằng:
Tôi sẽ không khuyến khích một lớp gọi một phương thức công khai từ một phương thức khác
Có một vài vấn đề tiềm năng với thực tiễn này.
1: Vòng lặp vô hạn trong lớp vô định
Vì vậy, lớp cơ sở của bạn gọi phương thức1 từ phương thức 2 nhưng sau đó bạn hoặc ai đó, kế thừa từ nó và ẩn phương thức1 bằng một phương thức mới gọi phương thức 2.
2: Sự kiện, Ghi nhật ký, v.v.
ví dụ: tôi có một phương thức Add1 thực hiện một sự kiện 'thêm 1!' Tôi có lẽ không muốn phương thức Add10 nâng cao sự kiện đó, ghi vào nhật ký hoặc bất cứ điều gì, mười lần.
3: phân luồng và các bế tắc khác
Ví dụ: insertComplexData mở kết nối db, bắt đầu giao dịch, khóa bảng, sau đó gọi insertSimpleData, với mở kết nối, bắt đầu giao dịch, chờ mở khóa bảng ....
Tôi chắc chắn có nhiều lý do hơn, một trong những câu trả lời khác đã chạm vào 'bạn chỉnh sửa phương thức1 và ngạc nhiên khi phương thức 2 bắt đầu hành xử khác đi'
Tạo ra nếu bạn có hai phương thức chung chia sẻ mã, tốt hơn là làm cho cả hai gọi một phương thức riêng tư thay vì gọi một phương thức khác.
Chỉnh sửa ----
Cho phép mở rộng về trường hợp cụ thể trong OP.
chúng tôi không có nhiều chi tiết nhưng chúng tôi biết rằng ReverseData được gọi bởi một bộ xử lý sự kiện thuộc loại nào đó cũng như phương thức lên lịch trình.
Tôi cho rằng dữ liệu ngược cũng thay đổi trạng thái bên trong của đối tượng
Với trường hợp này, tôi sẽ nghĩ rằng saftey chủ đề sẽ quan trọng và do đó sự phản đối thứ ba của tôi đối với thực tiễn được áp dụng.
Để làm cho chủ đề ReverseData an toàn, bạn có thể thêm một khóa. Nhưng nếu lên lịch trình cũng cần phải an toàn cho chủ đề, bạn sẽ muốn chia sẻ cùng một khóa.
Cách dễ nhất để làm điều này là chuyển mã ReverseData thành một phương thức riêng tư và có cả hai phương thức công khai gọi nó. Sau đó, bạn có thể đặt câu lệnh khóa trong Phương thức chung và chia sẻ đối tượng khóa.
Rõ ràng bạn có thể lập luận "điều đó sẽ không bao giờ xảy ra!" hoặc "Tôi có thể lập trình khóa theo cách khác" nhưng quan điểm về thực hành mã hóa tốt là cấu trúc mã của bạn tốt ngay từ đầu.
Về mặt học thuật tôi sẽ nói điều này vi phạm chữ L một cách vững chắc. Các phương pháp công khai không chỉ đơn thuần là công khai. Họ cũng có thể sửa đổi bởi những người thừa kế của nó. Mã của bạn nên được đóng lại để sửa đổi, điều đó có nghĩa là bạn phải suy nghĩ về những gì bạn làm trong cả phương pháp công khai và được bảo vệ.
Đây là một điều khác: Bạn cũng có khả năng vi phạm DDD. Nếu đối tượng của bạn là một đối tượng miền thì các phương thức công khai của nó phải là thuật ngữ Miền có ý nghĩa gì đó đối với doanh nghiệp. Trong trường hợp này, rất khó có khả năng 'mua một tá trứng' giống như 'mua 1 quả trứng 12 lần' ngay cả khi nó bắt đầu theo cách đó.