Я выскажу свое мнение , и, возможно, я получу за это удар, но я не беспокоюсь о защищенных или приватных в Ruby. Реальность такова, что Ruby относится к вам, как к взрослому, если вы хотите запустить закрытый метод вне класса, вы можете (там - это путей ). Вы можете запускать защищенные методы вне класса. Вы даже можете переназначить константы ... вы можете делать все, что захотите, в основном.
И вот почему мне это нравится, это ваша ответственность. Мне кажется, что для того, чтобы пометить что-то как защищенное или личное, вы делаете две вещи:
- Указывает , что вы не думаете, потребителю это понадобится.
- Второй угадать, что кому-то еще нужно.
и, кроме того, вы затрудняете его тестирование, поскольку это может быть серьезной проверкой частных методов (см. Каков наилучший способ модульного тестирования защищенных и закрытых методов в Ruby? для способов вокруг него)
По этим двум последним причинам я не беспокоюсь о них. Если вы действительно хотели какой-то барьер между вашими классами / методами и потребителями (будь то код или разработчики), то есть другие, более эффективные способы (прокси, обфускация, шифрование, методы, защищенные паролем и т. Д.). В противном случае, почему бы не дать им доступ к тем же инструментам, которые вы использовали?