Это - приемлемая практика для исправления базовых классов Ruby, таких как Fixnum?

17
задан Community 23 May 2017 в 12:30
поделиться

4 ответа

Мой персональный ответ, вкратце: молоток исправления базового класса должен быть у основания Вашей панели инструментов . Существует много других методов, доступных Вам, и почти во всех случаях они являются достаточными, более чистыми, и больше устойчивый .

Это действительно зависит от среды, в которой Вы кодируете, все же. Если это - персональный проект - уверенный, патч к содержанию Вашей основы! Проблемы начинают возникать, когда Вы работаете над большой кодовой базой за длительный период времени с большой группой программистов. В организации я работаю на, который имеет кодовые базы Ruby по 100KLOC и и приблизительно двадцать разработчиков, мы начали сломить довольно трудно на исправлении обезьяны, потому что мы видели, что он приводит к царапанию головы, опустошительное поведение человеко-часа слишком часто. В этой точке мы в значительной степени только терпим его для того, чтобы временно исправить сторонний код, который или еще не соединился или не включит наши исходные патчи.

18
ответ дан 30 November 2019 в 12:44
поделиться

Лично, я думаю, что приемлемо добавить методы к базовым классам, но недопустимый для изменения реализации существующих методов.

6
ответ дан 30 November 2019 в 12:44
поделиться

самый безопасный путь состоит в том, чтобы определить Ваш собственный класс, который наследовался встроенному, затем добавьте свой новый материал к Вашему новому классу.

class MyDateTime < DateTime
  alias...
  def...

, Но очевидно теперь Вы только получаете новое поведение, если Вы объявляете объекты своего нового класса.

5
ответ дан 30 November 2019 в 12:44
поделиться

Я думаю как это: Если бы Вы честно чувствуете, что большинство других программистов согласилось бы с Вашими патчами, то прекрасный. В противном случае, возможно, необходимо ли вместо этого реализовывать библиотеку кода?

0
ответ дан 30 November 2019 в 12:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: