Пета задача

  1. Чувствайте се свободни да дискутирате всичко във форумите. 
    Този път кодът е публичен. Може да питате каквото искате: 
    "Как да    направя това по-добре?", "Това добра идея ли е?",
    "Не мога да преценя кое от тези две неща е по-удачно", "Тази
    конструкция ми допада много." и прочее.
    

    Кога да използваме #remainder, и кога #%?

    Кога е допустимо да си кръстим променливата expr, arg, env (съответно, вместо expression, argument, environment)?

    Желателно ли е да използваме мутиращи методи върху аргумент на метод? (Пример: в няколко решения на трета задача видях #shift.)

    Подаването на масив като аргумент на конструктор е лоша идея, нали? А подаването на самите елементи на масив (един по един) лоша идея ли е? По-специално - трябва ли да им сложим някакви по-подходящи имена, дори когато става дума за съвсем малък масив (от един-три елемента, да речем)?
    Знам, че на лекции е споменавано как употребата на много индекси е лоша черта на един код, но наистина ми се струва, че не винаги е възможно това напълно да се избегне.

    Най-общо, трябва да си напиша метод, който проверява дали обект съответства на нещо. #matches? по-добро име ли е от #match??

    P.S. Двойното отрицание (!!) е чудесен начин да превърнем нещо в булевата му интерпретация. Но когато се налага да правим това за по-сложен израз, например foo =~ /bar/, идва проблемът с приоритета - трябва да слагаме скоби: !!(foo =~ /bar/).
    И понеже слагането на скоби около наистина сложен израз, заемащ няколко реда, е грозна работа, въпросът ми е дали е допустимо да ползваме not not вместо !!.
    И като ще съм нахален: Има някаква разумна причина да няма метод Object#to_bool, нали?

  2. #% ми изглежда доста по-кратко (ясно) от #remainder. Второто ме кара да се замислям всеки път, когато го прочета. Макар и за кратко.

    При положение, че методът е в интерфейса на обекта за мен #matches? се връзва повече и има повече смисъл, когато го чета.

    Защо ти е това двойно отрицание така и не разбрах. /regex/ === "string" ти връща bool.

  3. Какъв трябва да е character encoding-а на предаденото решение(научените уроци)?

    Освен това нали трябва да предадем всички задачи? Тоест ако не съм решил трета сега трябва да я напиша.

    А и надявам се ограничението да не се преписва вече не важи. Имам предвит, ако взаимстваме код от друго решение, не е преписване, нали?

  4. На една от лекциите се каза, че ако не си предал някоя от задачите - сега ти е паднало да го направиш. Кодът на всички е публичен, така че моментът с преписването на важи.

    Разбира се, ако просто пейстнеш чуждо решение в своето репо е в реда на нещата да отнесеш санкция.

  5. @Емил, линк има, но беше на малко особено място. Линк беше фразата "GitHub account" в пасажа "За да предадете това домашно, трябва да имате GitHub account. Клонирайте нашето хранилище и променете .rb файловете."

    Смених частта от текста, която е линк, за да е по-ясно. Благодаря, че обърна внимание на проблема.

  6. И пак аз :) Какво не му е наред на този телефонен номер: 0885123? В локален формат, започва с 0 и следват 6 цифри (според условието цифрите са от 6 до 11)

    PS: Видях, че някой вече е писал с подобен въпрос в темата за 4-та задача и сте отговорили.

Трябва да сте влезли в системата, за да може да отговаряте на теми.