-
Couldn't load subscription status.
- Fork 59
Тощев Иван #51
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
base: master
Are you sure you want to change the base?
Тощев Иван #51
Conversation
|
🍅 Пройдено тестов 12 из 24 |
|
🍅 Пройдено тестов 10 из 24 |
|
🍅 Пройдено тестов 16 из 24 |
|
🍅 Пройдено тестов 18 из 24 |
|
🍅 Пройдено тестов 18 из 24 |
|
🍅 Пройдено тестов 16 из 24 |
|
🔔 Что же может быть не так? |
|
🍅 Пройдено тестов 16 из 24 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Сори за задержку фидбека, я добавлю несколько дней к срокам.
Что касается ошибок тестов. Давай я тебе подскажу, названия упавших тестов, а ты по ним подумаешь, что пошло не так. Если не будет идей, можно заглянуть в соседние решения.
Итак:
-
Iterator
а) должен перебирать всех друзей в алфавитоном порядке. (Попробуй без localCompare, имена друзей могут начинаться с чисел). -
LimitedIterator
а) должен перебирать всех друзей -
Подумай о поведении кода, если круг передан не совсем корректный.
-
Фильтры парней и девушек у тебя иногда обходят не свойственный им пол.
lib.js
Outdated
| */ | ||
| function Iterator(friends, filter) { | ||
| console.info(friends, filter); | ||
| function Iterator(friends, filter, maxLevel = Infinity) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не критично, но стоило попробовать сделать через классы.
lib.js
Outdated
| function MaleFilter() { | ||
| console.info('MaleFilter'); | ||
| Object.setPrototypeOf(this, Filter.prototype); | ||
| this.check = friend => friend.gender === 'male'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Зачем нам для каждого инстанца этого класса генерировать новую такую функцию, почему она не в прототипе? Кроме того, т.к. она не оперирует внутри себя this'ом, ее вообще стоит сделать статическим свойством класса (кстати, как раз удобно, когда через Class).
А еще можно сделать ее только в прототитпе Filter'а, немного изменив:
Filter.prototype.check = function(friend){
return friend === this.gender;
}А gender можно сетить в конструкторах типа MaleFilter: this.gender = 'male';
В общем стоит выбрать любой из вышеописанных вариантов, но точно не создавать каждому инстансу одни и те же функции. Это дорого по памяти, как минимум.
lib.js
Outdated
| */ | ||
| function Filter() { | ||
| console.info('Filter'); | ||
| this.check = () => true; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А это точно тут нужно? Я нигде не видел прямых вызовов new Filter, ты ток прототип наследуешь.
lib.js
Outdated
| */ | ||
| function MaleFilter() { | ||
| console.info('MaleFilter'); | ||
| Object.setPrototypeOf(this, Filter.prototype); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это не критично, но этот метод считается очень медленным и труднооптимизируемым. Вместо него рекомендуется пользоваться Object.create:
MaleFilter.prototype = Object.create(Filter.prototype);К тому же сейчас ты прототип меняешь при каждом вызове new MaleFilter, а так он установится ток 1 раз для самого MakeFilter.
|
🍅 Пройдено тестов 19 из 24 |
|
🍅 Пройдено тестов 17 из 24 |
|
🍅 Пройдено тестов 19 из 24 |
|
🍅 Пройдено тестов 19 из 24 |
|
No description provided.