#backtocode Challenge, дни 6–10

Чувак, первые пять дней этого испытания были настоящей прогулкой по торту по сравнению с тем, что должно было произойти в дни 6–10. Я действительно боролся с этим в течение нескольких дней, но это действительно заставляет вас ценить это, когда вы наконец-то это понимаете.

Если вам интересно, я проходил бесплатные курсы подготовки к буткемпу Flatiron School. Это около 75 часов материала для работы, но это бесплатно! Предполагается, что вы хотя бы хорошо разбираетесь в HTML/CSS, поэтому, если вы абсолютный новичок, я бы начал с чего-нибудь вроде Академии Хана. Их курсы кодирования также бесплатны!

На 6-10 дни Flatiron снял с меня тренировочные колеса и познакомил меня с Github. Я бы назвал это браузерной версией Dreamweaver — вы можете написать свой код и протестировать его, не переключаясь между экранами! Он используется законными программистами, и он ТАКЖЕ бесплатен (вы можете увидеть тему здесь). Вот что я узнал за последние пять дней:

1. «Управление потоком»

Код может довольно быстро сойти с ума, поэтому он должен оставаться аккуратным и организованным. Вы познакомитесь с каталогом файлов и узнаете, как ссылаться на другие файлы .js, которые могут вам понадобиться. Использование var index = require(“./filename.js”) позволяет вызывать содержимое других файлов .js, поэтому вам не нужно переписывать функции снова и снова. Вы также можете управлять потоком кода другим способом: условными операторами. Это фрагменты кода, которые при соблюдении определенных условий вызывают определенное поведение в консоли или браузере. Например:

if ( 5 › 2 ) {
console.log («5 больше, чем 2.»)
}

Поскольку 5 больше 2, консоль идентифицирует это как истину и запишет «5 больше 2». Но что, если вы скажете что-то сумасшедшее, например, 2 › 5? Что ж, ваша консоль идентифицирует это как ложное и выдаст вам сообщения об ошибках. Поэтому необходим еще один условный оператор.

if (false) {
console.log("Пожалуйста, проверьте свои математические расчеты")

Операторы If могут использоваться как цепочки внутри функции вместе с операторами else if, но операторам else if должен предшествовать if, за которым следует оператор else. Операторы Else всегда должны быть окончательными в функции — это скорее сделка «в конце хода».

2. Описание и объявление функций

Тип функции внутри себя, функция describe() делает именно то, что, по ее словам, она собирается делать… описывает предполагаемое поведение функции. Это описание предполагаемого поведения называется спецификацией, ожиданием или утверждением. Как только вы описали функцию, вы можете «объявить» функцию и протестировать ее на соответствие ожиданиям, чтобы убедиться, что она работает должным образом. Вот что значит объявить функцию:

функция sayHelloTo(firstName)

Весь этот оператор объявляет функцию. Фрагмент кода в круглых скобках — это параметр, который будет изменен позже. Теперь вы можете выполнить функцию:

sayHelloTo(Isabel) → Isabel теперь является аргументом, который представляет собой фактическое значение, передаваемое функции. Итак, как же взаимодействуют описание функций и сами функции? Я поделюсь с вами кодом, который доставил мне столько хлопот:

describe('sayHiToGrandma(string)', function() {
it('возвращает "Я вас не слышу!", если `string` в нижнем регистре', function() {expect(sayHiToGrandma( 'привет'))).toEqual("Я вас не слышу!")
})
it('возвращает "ДА ДЕЙСТВИТЕЛЬНО!", если `string` в верхнем регистре', function() {< br /> expect(sayHiToGrandma('HELLO')).toEqual("ДА ДЕЙСТВИТЕЛЬНО!")
})
it('возвращает «Я тоже тебя люблю». люблю тебя, бабушка."`', function() {
expect(sayHiToGrandma("Я люблю тебя, бабушка")).toEqual("Я тоже тебя люблю")
}) })

Итак, эта огромная мешанина в основном пытается заставить нас «передать привет бабушке». Она довольно плохо слышит, поэтому скажет вам, что не слышит, как вы говорите «привет». Но если она услышит, как вы говорите «ПРИВЕТ», она ответит: «ДА, ДЕЙСТВИТЕЛЬНО!» Если вы скажете: «Я люблю тебя», она ответит: «Я тоже тебя люблю».

Были и другие функции, которые помогали переводить строки в верхний или нижний регистр по мере необходимости, чтобы удовлетворить другие ожидания. Но этому фрагменту кода требовалось более одного условия, чтобы удовлетворить его:

function sayHiToGrandma(string) {
if (string.toLowerCase() === string) {
return «Я вас не слышу!» ;
} if (string.toUpperCase() === string ) {
return «ДЕЙСТВИТЕЛЬНО ДА!»
} if (string === `Я люблю тебя, бабушка` ) {
вернуть "Я тоже тебя люблю".
}}

string.toLowerCase() переводит все строки в нижний регистр, поэтому string.toUpperCase() делает обратное. === превращает функцию в настоящее уравнение, а не в обычный знак равенства, который просто говорит браузеру: «Это что-то». Цепочка операторов if оказалась лучшей, поскольку добавление операторов else if и else вызывало ошибки. Я думаю, это потому, что потребовались бы дополнительные операторы, чтобы указать, что делать, если string.ofWhatever() был ложным.

Возможно, сейчас это не так, но я действительно боролся с этим разделом. Я перепробовал все комбинации кода, какие только мог придумать, но знал , что не совсем правильно понял. Я НАКОНЕЦ не выдержал и попросил помощи. Вот что я узнал:

СРОЧНО ОБРАЩАЙТЕСЬ ЗА ПОМОЩЬЮ.

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

Буду ли я продолжать кодировать?

Я думаю, что я определенно более открыт для кодирования, чем десять дней назад. А пока я собираюсь сделать перерыв и поиграть с новым iPad Pro, который у меня есть. После этого я планирую переработать свой сайт и изучить UX/UI. Это то, о чем я мало что знаю, и это, очевидно, очень прибыльно. Никогда не помешает разнообразить свой набор навыков!

Приветствую ребят из Flat Iron School, которые были готовы поболтать со мной и поделиться скриншотами! Это здорово, что вы, ребята, делаете. Опять же, если вы считаете, что что-то написано с ошибкой, сообщите мне об этом.