Ивайло обнови решението на 27.01.2016 22:22 (преди около 9 години)
+REPOSITORY = 'https://github.com/4erneff/ruby-retrospective-2015-1'
+
+# 1) По-елегантен синтаксис за дефиниране на мап - {foo: 123, bar: 12}
+# 2) Ако оградиш израз в скоби, можеш да го chain-ваш с методи, които имат обектите от този тип. Пример (1 + 3).to_s
+# 3) Хубаво е човек да се замисля повечко над имената на променливите си, защото не винаги са най-точните
+
+# 4) Когато две променливи имат подобно значение (например x, y) можем спокойно да направим кода по-сбит и красив като използваме паралелно присвояване
+
+# 5) Трябва да се гледат добре частните случаи, които могат да се получат като входни данни
+
+# 6) Условията да се четат по повече от 3 пъти
+
+# 7) || и or не винаги правят едно и също - a == b or c == d и a == b || c == d
+
+# 8) Enumerable има много методи, които се забравят. За да се пише по ефективно е добре човек да хвърля едно око от време на време
+
+# 9) По-прегледно, а и според стайл гайда е така - x.upto(y).each вместо (x..y).each
+
+# 10) Хубаво е, че Руби ни дава толкова много синоними на даден метод, но трябва да се стремим към консистентност.
+
+# 11) Много от грешките се хващат лесно с тестове - тестовете са над 50% от успеха за дадената задача.
+
+# 12) Map не променя arrey, а само връща нов
+
+# 13) to_proc на symbol е много красив метод. Да се използва с Enumerable колкото може по-често, защото спестява код и се чете по-лесно
+
+# 14) От четвърта задача научих, че трябва винаги трябва да си правя прототип на обектния модел.
+
+# 15) От четвърта задача също така научих, че трябва да минавам по кода си и да го рефакторирам, защото повечето пъти първия обектен модел не е най-добрия
+
+# 16) Трябва да разделям логиката на възможно най-малки части и да не използвам един метод за повече от едно нещо.
+
+# 17) Метода slice, който разделя масив на групи. Много полезен.
+
+# 18) Синтаксиса а ||= b. Много елегантен начин да не пишем отделни if-ве
+
+# 19) Предефинирането на оператори често може да спести излишни методи и да направи кода по-четим.
+
+# 20) Да не бързам да използвам тернарен оператор, особено за сравнения и когато искам да върна булеан.
Привет :)
- Аз лично не бих се съгласил с
# 4
. Не бих определилsum, used, a, b, add = 2, Array.new, 1, 1, 1
като красив код. -
a == b or c == d
иa == b || c == d
по какво се различават в този пример? -
# 12) Map не променя arrey, а само връща нов
къде си го използвал в корекциите? :)# 13
,# 17
,# 18
и# 19
също - Какво имаш предвид в
# 14
? Не го разбирам
За съжаление има доста неща, които може да се дооправят. Някои проблеми с whitespace (след private
се оставя нов ред, както и между методи в клас/модул. Също, имаш кофти имена на променливи (groups
, check
), много повторение на един и същ код - например belote?
, tierce?
, quarte?
и quint?
(както и twenty?
и forty?
), които правят едно и също с разлика от една константа.
Още, не е нужно да пишеш def initialize; super; end
. За разлика от някои други езици, initialize методът се наследява автоматично.