Контекст:
Зараз я працюю над невеликим проектом у Python. Я зазвичай структурую свої класи з деякими публічними методами, які задокументовані, але в основному стосуються концепцій високого рівня (що повинен знати і використовувати користувач класу), і купою прихованих (починаючи з підкреслення) методів, які відповідають за комплексна або низькорівнева обробка.
Я знаю, що тести є важливими для впевненості в коді та для того, щоб будь-яка наступна модифікація не порушила попередню поведінку.
Проблема:
Щоб побудувати публічні методи вищого рівня на надійній основі, я, як правило, перевіряю приватні методи. Мені легше знайти, чи внесла модифікація коду регресії та куди. Це означає, що ці внутрішні тести можуть порушитись на незначних переглядах, і їх потрібно буде виправити / замінити
Але я також знаю, що приватний метод перевірки приватного методу є, принаймні, суперечливою концепцією або частіше вважається поганою практикою. Причина в тому, що: слід перевіряти лише поведінку населення ( посилання )
Питання:
Мені важливо дотримуватися кращих практик і хотів би зрозуміти:
- Чому використання одиничних тестів приватними / прихованими методами погано (який ризик)?
- які найкращі практики, коли публічні методи можуть використовувати низький рівень та / або складну обробку?
Рекомендації:
- це не спосіб сумніву. У Python немає правдивої концепції конфіденційності, а приховані методи просто не перелічені, але їх можна використовувати, коли ви знаєте їх ім'я
- Мене ніколи не вчили правилам та моделям програмування: останні мої заняття з 80-х… Я в основному вивчав мови шляхом проб і помилок та посилань в Інтернеті (Stack Exchange є моїм улюбленим протягом багатьох років)