Рубиновые функции, которые рискованно использовать - PullRequest
2 голосов
/ 27 апреля 2011

Как программист на Ruby, вы когда-нибудь чувствовали какую-то особенность, которую немного рискованно использовать, может быть из-за ее странного поведения?Это может быть хорошо задокументировано, но трудно найти во время отладки или нелогично, чтобы помнить?

Я обычно стараюсь держаться подальше от String#gsub!.В документе написано: «Выполняет подстановки String # gsub на месте, возвращая str или nil , если подстановки не выполнялись».Так что если нечего заменить, он вернет ноль.Практически я не видел ни одного варианта использования, где это пригодится.

Итак, с вашим опытом, есть что-нибудь еще, что вы хотели бы добавить?

Ответы [ 4 ]

2 голосов
/ 27 апреля 2011

Использование return в lambda, Proc или блоке.Семантика четко определена , но вы ошибетесь и получите LocalJumpError.

1 голос
/ 27 апреля 2011

Ну, самая распространенная и опасная особенность Ruby - это, конечно, eval строки.В подавляющем большинстве случаев (если не во всех) этого можно избежать, используя другие методы, обычно define_method, const_get, const_set и т. Д.

1 голос
/ 27 апреля 2011

throw / catch (не то же самое, что begin / rescue!) В основном GOTO, и это может считаться рискованной функцией для использования на любом языке.

1 голос
/ 27 апреля 2011

Функции метапрограммирования в Ruby могут использоваться очень опасными способами. Я видел код, который пытается переопределить во время выполнения общие методы для таких классов кода, как String или Array, и хотя я могу видеть, что это МОЖЕТ быть приемлемым для крошечного временного скрипта, я не думаю, что это хорошая идея для сложное приложение со многими зависимостями или многими сопровождающими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...