Мой персональный ответ, вкратце: молоток исправления базового класса должен быть у основания Вашей панели инструментов . Существует много других методов, доступных Вам, и почти во всех случаях они являются достаточными, более чистыми, и больше устойчивый .
Это действительно зависит от среды, в которой Вы кодируете, все же. Если это - персональный проект - уверенный, патч к содержанию Вашей основы! Проблемы начинают возникать, когда Вы работаете над большой кодовой базой за длительный период времени с большой группой программистов. В организации я работаю на, который имеет кодовые базы Ruby по 100KLOC и и приблизительно двадцать разработчиков, мы начали сломить довольно трудно на исправлении обезьяны, потому что мы видели, что он приводит к царапанию головы, опустошительное поведение человеко-часа слишком часто. В этой точке мы в значительной степени только терпим его для того, чтобы временно исправить сторонний код, который или еще не соединился или не включит наши исходные патчи.
Лично, я думаю, что приемлемо добавить методы к базовым классам, но недопустимый для изменения реализации существующих методов.
самый безопасный путь состоит в том, чтобы определить Ваш собственный класс, который наследовался встроенному, затем добавьте свой новый материал к Вашему новому классу.
class MyDateTime < DateTime
alias...
def...
, Но очевидно теперь Вы только получаете новое поведение, если Вы объявляете объекты своего нового класса.
Я думаю как это: Если бы Вы честно чувствуете, что большинство других программистов согласилось бы с Вашими патчами, то прекрасный. В противном случае, возможно, необходимо ли вместо этого реализовывать библиотеку кода?