Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Лебедев Никита #55

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Лебедев Никита #55

wants to merge 2 commits into from

Conversation

qmzik
Copy link

@qmzik qmzik commented Oct 18, 2017

No description provided.

@honest-hrundel
Copy link

🍏 Пройдено тестов 19 из 19

@honest-hrundel
Copy link

@dotokoto обрати внимание: решено доп. задание

Copy link

@dotokoto dotokoto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Привет! Я посмотрела задачу, есть замечания по коду. Когда исправишь, напиши мне пожалуйста в Слак, чтобы я еще раз проверила.

@@ -1,10 +1,266 @@
'use strict';

exports.isStar = true;

const CURRENT_YEAR = 2017;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Подозрительные константы. Зачем именно текущий год и месяц? Либо брать всегда текущий, не забивая его в константы. Либо взять какие-то дефолтные значения. Сейчас выглядит так, что эти значение через пару недель протухнут, и надо будет переписывать программу

const CURRENT_MONTH = 10;
const HOUR_IN_MILLISEC = 1000 * 60 * 60;
const MINUTE_IN_MILLISEC = 1000 * 60;
const HALF_HOUR = 30;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По названию константы непонятно, что в ней хранятся минуты

* @param {Number} minutes
* @returns {String}
*/
function getCorrectFormat(string, day, hours, minutes) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У тебя много функций, связанных с работой с датами и временем. Можно было бы вынести их в отдельный файл-библиотеку

* @returns {Number}
*/
function getNumberOfDay(day) {
return ROBBERY_DAYS.indexOf(getDay(day)) + 1;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

эта функция точно всегда будет правильно работать? Дней 7, а в ROBBERY_DAYS их только 3. При этом в расписании может попасться и четверг, и пятница, и тд

* @returns {Number}
*/
function getTimeZone(time) {
return time.substr(-1);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зона может быть и двузначным числом

if (schedule.length !== 0) {
schedule.reduceRight((previousValue, currentValue, index) => {
if (currentValue.from === previousValue.from && currentValue.to === previousValue.to) {
schedule.splice(index, 1);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я бы не рекомендовала делать splice на массиве, по которому проходит цикл. Очень легко ошибиться и сломать что-нибудь. Лучше создавай новый массив, тогда и reduceRight можно будет заменить на что-нибудь другое

let freeTimes = [];
let range = {
from: Date.UTC(CURRENT_YEAR, CURRENT_MONTH, 1, 0, 0) - timezone,
to: Date.UTC(CURRENT_YEAR, CURRENT_MONTH, 3, 23, 59) - timezone };

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 опять похоже на захардкоженную константу

let range = {
from: Date.UTC(CURRENT_YEAR, CURRENT_MONTH, 1, 0, 0) - timezone,
to: Date.UTC(CURRENT_YEAR, CURRENT_MONTH, 3, 23, 59) - timezone };
bankSchedule.forEach(day => {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Этот шаг не относится к reverseSchedule, лучше вынести его в отдельную функцию

* @param {Number} duration
* @returns {Array}
*/
function reverseSchedule(commonSchedule, bankSchedule, timezone, duration) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И опять же, можно переименовать функцию. Так как по факту, она возвращает доступное для ограбления время

const CURRENT_MONTH = 10;
const HOUR_IN_MILLISEC = 1000 * 60 * 60;
const MINUTE_IN_MILLISEC = 1000 * 60;
const HALF_HOUR = 30;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И я бы переименовала эту константу. Так как полчаса - на самом деле тоже параметр задачи, может поменяться и на 40 минут, и на 10.

@dotokoto
Copy link

🍅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants