Немного о Руби

Как-то в последнее время, немножко задумался о качестве кода, который я пишу, и поэтому быстро конспектирую ряд фишек которые можно и нужно использовать в своем коде:

Комментарии


# Это большой и длинный комментарий
# который рассказывает ни о чем
# да и читать его вряд ли кто станет
# хотя писать его было нужно и муторно

Знакомо? А ведь можно было сделать это красиво:


=begin
 Элегантный комментарий, который занимает несколько строк
 и который не нужно мучаться отслеживая, где вдруг потерялся
 этот долбанный символ решетки "#"
=end

## Форматированный вывод


puts "INSERT INTO pairs VALUES ( " + i.to_s + ", '"+item[i]["history"].to_s+"' );"

Плохо, Саша. Надо делать так:


puts "INSERT INTO pairs VALUES ( %i, '%s' );" % [ i, item[i]["history"] ]  

## Меньше строчек в присвоении


a = 1
b = 2
x = 11.2

Забудь и делай проще


a, b, c = 1, 2, 11.2

кстати, отсюда менять местами элементы в массиве очень просто


My = [1,2,3,4] # => [1,2,3,4]
My[1], My[3] = My[3], My[1] # => [1,4,3,2]

## Скажи нет return false

Если в функции осуществляется логическая проверка условия и функция должна вернуть true или false, не нужно городить return и прочего:


def even?(x)
  x % 2 != 1
end

7 thoughts on “Немного о Руби”

  1. “Меньше строчек в присвоении” – не согласен, что лучше писать на одной строчке. Одно присвоение на строку – нагляднее, да и дебажить или добавлять код проще.

  2. Приветствую, Олег!

    Объясняю почему вынес это в отдельный пункт. Я пишу на ruby маленькие утилитки, которые облегчают ежедневную работу, например, создают дерево каталогов идентично дереву категорий в базе продукта. И поэтому зачастую функции передается около 3ех, а то и 5-ти переменных с предустановленными значениями. Ну и если присваивать:

    
    parent, depth, length = 1, 3, 32 #Initial data
    

    это выглядит элегантнее, чем большой блок на несколько строк, который надо оборачивать комментариями.

  3. Ну в примере вообще лучше использовать хеш, а вообще не все упрошения хороши, часто после такого рода упрощений и оптимизаций, по прошествии времени не то что другие, а и сам с трудом читаешь код.

  4. Насчет первого (пример с комментариями) не согласен. В TextMate выделяешь блок и нажимаешь ⌘+/ и он (TextMate) именно так коментит все строки блока.

  5. 2Danil, ну, когда это писалось, я был пользователем ubuntu и в основном использовал vim для работы с исходниками.. Там такой штуки нет, поэтому мне было проще и казалось правильнее использование второй конструкции.

  6. @Ilia, сейчас больше всего я использую Eclipse, просто потому что специфика приложений, которые я пишу по работе – нужно постоянно держать под рукой разный код. Хотя, думаю что когда войду в проект и его архитектуру вернусь обратно к VIM-у.

Comments are closed.