Last active
March 27, 2017 14:34
-
-
Save pashagray/ebd9a871e33c718bebbba30fa5322db1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Во первых хочу сказать, что код везде рабочий и так можно писать. | |
# Но есть некоторые моменты. | |
# 02array.rb | |
my_array = [] | |
number = 10 | |
while number <= 100 do | |
my_array << number | |
number += 5 | |
end | |
puts my_array | |
# Основная проблема тут в мутабельности массива. Т.е. мы меняем его во времени, | |
# что не есть хорошо, особенно если в дальнейшем в нашей системе используем | |
# многопоточность. Плюс это не "руби" код, а больше похоже на C/Java. | |
# Весь код можно записать вот так в одну строчку, плюс не создаются промежуточные переменные. | |
puts (10..100).step(5).to_a | |
# 04glasnie.rb | |
glasnie = [ "a", "e", "i", "o", "u", "y" ] | |
my_hash = {} | |
('a' .. 'z').each_with_index{|key, value| my_hash[key] = value + 1 if glasnie.include?(key)} | |
puts my_hash | |
# Тут похожая ситуация. Получается императивный подход + мутабельность данных, так как my_hash | |
# постоянно меняется во время прогона от a до z. Руби поддерживает функциональный стиль, и имеет | |
# такие вещи как map, reduce, select. Очень рекомендую про них почитать. | |
# Очень не очень, когда используют транслит. Лучше воспользоваться переводчиком гугла и переименовать | |
# glasnie в vowels. | |
# Плюс гласные – всегда одни и те же. Т.е. не подразумевается, что это будет меняться во времени, поэтому | |
# лучше будет сделать их константой. | |
# Еще руби поддерживает короткие записи массивов | |
# Для string %w(a e i o u y) | |
# Для symbol %i(a e i o u y) | |
# Твой код абсолютно верный, но немного не модный. Сейчас твой код написали бы так: | |
VOWELS = %w(a e i o u y) | |
puts ('a' .. 'z').map.with_index { |k, idx| [k, idx + 1] if VOWELS.include?(k)}.to_h | |
# По остальным задачам аналогично. Все ок, но хотелось бы видеть больше функционального | |
# подхода и соблюдения стиля. Все о стиле по ruby смотри здесь https://github.com/bbatsov/ruby-style-guide | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment