| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
|
🍏 Пройдено тестов 19 из 19 |
Sorry, something went wrong.
| @@ -1,49 +1,198 @@ | |||
| 'use strict'; | |||
|
|
|||
| /** | |||
There was a problem hiding this comment.
Зачем ты удалил все JsDoc? Давай их вернем обратно. Хорошей практикой считается документировать публичные методы, так как по параметрам сложно догадаться, что они содержат
Sorry, something went wrong.
| * @param {String} workingHours.to – Время закрытия, например, "18:00+5" | ||
| * @returns {Object} | ||
| */ | ||
| var days = ['ПН', 'ВТ', 'СР']; |
There was a problem hiding this comment.
Давай назовем как-нибудь по-другому. Задумайся, какие это дни?
Sorry, something went wrong.
| var timeRegExp = /([А-Я]{2}) (\d{2}):(\d{2})\+(\d+)/g; | ||
| var parsedTime = timeRegExp.exec(date); | ||
| var day = days.indexOf(parsedTime[1]) + 1; | ||
| var hour = parsedTime[2] - (parseInt(parsedTime[4]) - bankTimezone); |
There was a problem hiding this comment.
у parseInt лучше указывать вторым аргументом основание системы счисления, чтобы избежать ошибок
Sorry, something went wrong.
| } | ||
|
|
||
|
|
||
| function getInterval(from, to, timezone) { |
There was a problem hiding this comment.
Непонятно, что за интервал ты хочешь получить
Sorry, something went wrong.
|
|
||
|
|
||
| function getSotredIntervals(schedule, bankTimezone) { | ||
| var sortedSchedule = parseSchedule(schedule, bankTimezone).sort(function (a, b) { |
There was a problem hiding this comment.
давай разобьем эту строчку: сначала ты парсишь - это одна переменная, а потом на ней вызывай метод sort - тебе не придется создавать новую переменную, так как данный метод изменяет исходный массив
Sorry, something went wrong.
|
|
||
| function joinSchedule(schedule) { | ||
| var fullSchedule = []; | ||
| var firstInterval = schedule[0]; |
There was a problem hiding this comment.
Надо переименовать, неочевидно название. Первый интервал чего?
Sorry, something went wrong.
|
|
||
|
|
||
| function joinSchedule(schedule) { | ||
| var fullSchedule = []; |
There was a problem hiding this comment.
Полное расписание? Подумай, как по-другому это можно назвать
Sorry, something went wrong.
|
|
||
| function isCrossed(bankInterval, freeInterval) { | ||
| var checkFrom = checkInterval(bankInterval.from, freeInterval); | ||
| var checkTo = checkInterval(bankInterval.to, freeInterval); |
There was a problem hiding this comment.
Здесь и в строчке выше надо переименовать переменные, они должны отражать смысл
Sorry, something went wrong.
| function isCrossed(bankInterval, freeInterval) { | ||
| var checkFrom = checkInterval(bankInterval.from, freeInterval); | ||
| var checkTo = checkInterval(bankInterval.to, freeInterval); | ||
| var compareIntervals = freeInterval.from > bankInterval.from && |
There was a problem hiding this comment.
Надо переименовать, непонятно, что за сравнение интервалов. По переменной должно быть понятно, что в ней лежит
Sorry, something went wrong.
| function getBankTimezone(time) { | ||
| var bankTimezone = /\+(\d+)/.exec(time)[1]; | ||
|
|
||
| return parseInt(bankTimezone); |
There was a problem hiding this comment.
Укажи второй аргумент, как я писала выше
Sorry, something went wrong.
| return parseInt(bankTimezone); | ||
| } | ||
|
|
||
| function getMomentForAttack(freeSchedule, bankSchedule, duration) { |
There was a problem hiding this comment.
Может быть не getMomentForAttack, а getMomentsForRobbery? :) + не забывай, что ты возвращаешь массив, поэтому в названии присутствует множественное число
Sorry, something went wrong.
| to: new Date(Math.min(bankInterval.to, freeInterval.to)) | ||
| }; | ||
|
|
||
| var laterTime = new Date(crossInterval.from.getTime() + (duration * 60 * 1000)); |
There was a problem hiding this comment.
Вынеси 60 * 1000 в константу
Sorry, something went wrong.
|
|
||
| function getFreeSchedule(busyTime, bankTimezone) { | ||
| var freeTime = []; | ||
| var interval = {}; |
There was a problem hiding this comment.
Непонятно, что за интервал
Sorry, something went wrong.
| } | ||
|
|
||
| function getFreeSchedule(busyTime, bankTimezone) { | ||
| var freeTime = []; |
There was a problem hiding this comment.
может тогда уж freeTimes, раз это массив
Sorry, something went wrong.
| } | ||
| interval.to = currentInterval.from; | ||
| freeTime.push(interval); | ||
| interval = {}; |
There was a problem hiding this comment.
Ого, какое-то 'обнуление' переменной. Можешь пояснить, что ты имел в виду?
Sorry, something went wrong.
|
|
||
| function formatTime(time) { | ||
|
|
||
| return (time.toString().length === 2 ? '' : '0') + time.toString(); |
There was a problem hiding this comment.
На вход приходит численное значение? Может тогда лучше написать так:
return (time < 10 ? '0' : '') + time;
Sorry, something went wrong.
|
|
||
| function createLaterTime(date, shift) { | ||
|
|
||
| return new Date(date.getTime() + (shift * 60 * 1000)); |
There was a problem hiding this comment.
60 * 1000 -> константа
Sorry, something went wrong.
| var bankTimezone = getBankTimezone(workingHours.from); | ||
| var freeTimeIntervals = getSotredIntervals(schedule, bankTimezone); | ||
| var bankSchedule = getBankSchedule(workingHours, bankTimezone); | ||
| var robberyTime = getMomentForAttack(freeTimeIntervals, bankSchedule, duration); |
There was a problem hiding this comment.
Тут же массив? Значит, robberyTimes
Sorry, something went wrong.
|
|
||
| var time = robberyTime[0].from; | ||
|
|
||
| return template.replace('%HH', formatTime(time.getHours())) |
There was a problem hiding this comment.
Когда идет вызов нескольких функций подряд, то лучше каждую функцию начинать с новой строки. Перенеси этот replace на новую строчку. Код станет и красивее и читабельнее)
Sorry, something went wrong.
| */ | ||
| tryLater: function () { | ||
| if (this.exists()) { | ||
| var laterTime = createLaterTime(robberyTime[0].from, 30); |
There was a problem hiding this comment.
30 -> константа
Sorry, something went wrong.
| robberyTime[0].from = laterTime; | ||
|
|
||
| return true; | ||
| } else if (robberyTime.length > 1) { |
There was a problem hiding this comment.
почему именно больше 1, почему не больше 0?
Sorry, something went wrong.
|
🍅 |
Sorry, something went wrong.
|
🍏 Пройдено тестов 19 из 19 |
Sorry, something went wrong.
| return getFreeSchedule(joinedSchedule, bankTimezone); | ||
| } | ||
|
|
||
| function checkInterval(time, interval) { |
There was a problem hiding this comment.
В названии не отражено, на что именно ты проверяешь данный интервал. Раз ты возвращаешь булевское значение, то может быть лучше назвать как-нибудь isIntersected или isIncluded или что-то в этом роде (посмотри, что больше подходит)
Sorry, something went wrong.
| function isCrossedIntervals(bankInterval, freeInterval) { | ||
| var checkTimeFrom = checkInterval(bankInterval.from, freeInterval); | ||
| var checkTimeTo = checkInterval(bankInterval.to, freeInterval); | ||
| var compareTimes = freeInterval.from > bankInterval.from && |
There was a problem hiding this comment.
Если я правильно поняла, то compareTimes - это isRobberyTime
Sorry, something went wrong.
| } | ||
|
|
||
| function getMomentsForRobbery(freeSchedule, bankSchedule, duration) { | ||
| var timesToRob = []; |
There was a problem hiding this comment.
Лучше не сокращать слова в названиях: timesOfRobbery либо robberyTimes
Sorry, something went wrong.
|
И еще немного комментариев) |
Sorry, something went wrong.
|
🍅 |
Sorry, something went wrong.
|
Ты будешь доделывать задачу? |
Sorry, something went wrong.
|
@bazhenova, да, в процессе. Не знаю как правильно переименовать переменные. |
Sorry, something went wrong.
|
@tgkd Скажи, с чем проблемы, лучше напиши в slack, помогу |
Sorry, something went wrong.
|
🍅 Не пройден линтинг или базовые тесты |
Sorry, something went wrong.
|
🍏 Пройдено тестов 19 из 19 |
Sorry, something went wrong.
| return interval.from <= time && time <= interval.to; | ||
| } | ||
|
|
||
| function createDate(currentTime, firstTime) { |
There was a problem hiding this comment.
еще бы вот тут переименовать, ты же выбираешь максимум из дат, как я поняла; то есть по сути позднее из двух времен. И раз ты возвращаешь дату, то можно назвать getLaterTime. В аргументы передавай firstTime и secondTime
Sorry, something went wrong.
There was a problem hiding this comment.
Ну или getLaterDate
Sorry, something went wrong.
|
Еще пару переименований сделай, и я отдам тебя ментору. Вроде что-то хочется поправить, но не могу понять, что именно. Посмотрим, что скажет ментор |
Sorry, something went wrong.
|
🍅 |
Sorry, something went wrong.
|
🍏 Пройдено тестов 19 из 19 |
Sorry, something went wrong.
|
🚀 |
Sorry, something went wrong.
|
🚀 |
Sorry, something went wrong.
| var bankTimezone = /\+(\d+)/.exec(time)[1]; | ||
|
|
||
| return parseInt(bankTimezone, 10); | ||
| } |
There was a problem hiding this comment.
Ты определяешь часовой пояс банка, а потом везде его прокидываешь в качестве аргумента. Проще сохранить в переменную
Sorry, something went wrong.
|
|
||
|
|
||
| function getSortedIntervals(schedule, bankTimezone) { | ||
| var sortedSchedule = parseSchedule(schedule, bankTimezone); |
There was a problem hiding this comment.
Тут еще пока не отсортировано. Отсортированным становится только на следующем шаге
Sorry, something went wrong.
| function getNewDate(date, bankTimezone) { | ||
| var timeRegExp = /([А-Я]{2}) (\d{2}):(\d{2})\+(\d+)/g; | ||
| var parsedTime = timeRegExp.exec(date); | ||
| var day = ROBBERY_DAYS.indexOf(parsedTime[1]) + 1; |
There was a problem hiding this comment.
ROBBERY_DAYS.indexOf(parsedTime[1]) + 1
В условии сказано, что проверять данные не надо, но допустим в расписании появится ЧТ. ЧТ, как день, является валидным значением, но твой код вернет 0(воскресенье), вместо 4(четверга).
Получается, что шаг в лево и твое решение перестанет работать. Надо переписать на что-то более надежное
Sorry, something went wrong.
| busyIntervals.push(totalBusyInterval); | ||
| totalBusyInterval = schedule[i]; | ||
| } | ||
| } |
There was a problem hiding this comment.
Почему тут for, а везде выше forEach?
Sorry, something went wrong.
| var freeIntervals = []; | ||
| var currentFreeInterval = {}; | ||
|
|
||
| currentFreeInterval.from = getNewDate('ПН 00:00+' + bankTimezone, bankTimezone); |
There was a problem hiding this comment.
'ПН 00:00+' - надо унести в константы.
Sorry, something went wrong.
| busyTime.forEach(function (currentBusyInterval) { | ||
| if (currentBusyInterval.from === currentBusyInterval.to) { | ||
| return; | ||
| } |
There was a problem hiding this comment.
А в каком случае может отработать это условие? Ведь если у интервала начало и конец совпадают, то это уже не интервал, а момент времени.
Sorry, something went wrong.
There was a problem hiding this comment.
🍅
Sorry, something went wrong.
| } | ||
| } | ||
| }); | ||
| }); |
There was a problem hiding this comment.
Тут все интервалы сравниваются с другими интервалами, но это не очень хорошо с точки зрения производительности. Зачем сравнивать время работы банка в понедельник с свободным временем грабителей во вторник или среду. Попробуй как-нибудь оптимизировать проверку по дням
Sorry, something went wrong.
|
🍅 |
Sorry, something went wrong.
|
Последняя активность 7-го ноября |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
No description provided.