Giter Club home page Giter Club logo

js-part-0's Introduction

Домашнее задание по JS, первая лекция

Кому и когда сдавать

Иван Петропольский, фронтенд-разработчик в команде Монетизации.

Домашки принимаются до 20-го декабря включительно в Mattermost в личке.

Если что-то непонятно или не получается сделать — приходите в Mattermost, обсудим, решим, посмотрим примеры.

Задание

  1. Сделайте форк репозитория https://github.com/ipetropolsky/js-part-0
  2. Склонируйте его к себе на машину, создайте ветку от master.
  3. Поправьте функцию test() так, чтобы она работала с массивами примитивов.
  4. Запускайте код в консоли браузера (это неудобно) или любым другим способом.
  5. Добавьте отсутствующий код так, чтобы проходили все тесты.
  6. Проверьте, что нет ошибок и ворнингов: yarn eslint .
  7. Сделайте пулл-реквест в своём репозитории, поставьте меня ревьювером и скиньте линк на него.

Важно

Можно пользоваться чем угодно, главное не списывать у коллег. А вот обсуждать варианты решений — пожалуйста, это всегда полезно.

Переименовывать функции и править комменты можно, но смотрите на дифф. Всё стереть и переписать на jest и lodash прикольно, но усложнит ревью. И в реальной жизни у вас обычно нет возможности просто переписать всё как вам захочется :)

Опционально

  • Установите NodeJs, если его нет.
  • Установите yarn, если его нет.
  • Установите зависимости для линтинга (запустите yarn или npm install в папке проекта).
  • Включите в своём редакторе ESLint, отключите JSHint и другие линтеры.
  • Запускайте код в терминале: node index.js (это удобно).
  • Добавьте недостающих тестов на своё усмотрение (отдельным коммитом).

Некоторые правила eslint, которые мы обычно используем, отключены для удобства разработки. Например, no-unused-vars, no-console, no-new-wrappers.

См. также:

Что должно получиться

# getType

  [OK] Boolean

  [OK] Number

  [OK] String

  [OK] Array

  [OK] Object

  [OK] Function

  [OK] Undefined

  [OK] Null

# allItemsHaveTheSameType

  [OK] Values with the same type

  [OK] Values with various types

  [OK] Values like a number

  [OK] Values like an object

# getTypesOfItems VS getRealTypesOfItems

  [OK] Check basic types

  [OK] Check real types

# everyItemHasAUniqueRealType

  [OK] All value types in the array are unique

  [OK] Two values have the same type

  [OK] There are no repeated types in knownTypes

# countRealTypes

  [OK] Count unique types of array items

  [OK] Counted unique types are sorted

Как ревьюить пулл-реквесты на Гитхабе

Ваш коллега подготовил ветку с изменениями, разбил их на коммиты по смыслу (если много кода в разных местах), описал, какую задачу он решает и почему так, приложил картинки места, где это происходит (если это не очевидно по коду).

Потом он приходит к вам и говорит:

Привет! Заревьюй, пожалуйста: #4

Вы как ревьювер:

  • Внимательно читаете описание PR.
  • Заходите в Files changed, пишете конструктивные комменты или вопросы любой степени глупости (вам потом работать с этим кодом, всё должно быть предельно ясно).
  • Жмёте Review changes справа сверху, выбираете там один из вариантов по своим внутренним ощущениям.
    • Approve может быть и с минорными комментами на усмотрение автора кода.
    • Comment — по сути приглашение к обсуждению: нормально, но можно лучше. Но можно и так оставить.
    • Request changes если считаете, что так выпускать нельзя и нужно что-то поправить.
  • По желанию оставляете в том же окошке какой-то общий коммент, описывающий весь PR, например:

    Что-то дофига логики на фронте, было бы здорово прислать всё с бэка.

  • Даёте коллеге понять, что поревьюили, чтобы он не терял времени и двинул задачу дальше или обсудил с вами спорные моменты.
  • При обсуждении обе стороны пытаются найти простое и понятное всем решение. Автор кода понимает, что вопросы и предложения появляются неспроста, возможно его код несовершенен. Ревьювер не настаивает на своих вариантах, если это не критично. А где критично, объясняет, почему.
  • Результаты ревью можно обсудить в чате, чтобы ускорить процесс, но спорные моменты лучше потом всё равно зафиксировать в PR на Гитхабе, чтобы другим людям было понятно, что вопрос исчерпан и решение вот такое.
  • Если нужны исправления, автор кода пушит их отдельными коммитами, чтобы было видно, что изменилось. После ревью можно схлопнуть их. См. git commit --fixup $HASH и git rebase -i.

js-part-0's People

Contributors

ipetropolsky avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.