Комментарии 36
const totalOutput = programmerOutput
.map((programmer) => programmer.linesOfCode)
.reduce((acc, linesOfCode) => acc + linesOfCode, 0);
Вместо крокодила reduce здесь логичнее просто написать sum(). Иначе вариант с циклом мне нравится больше.
//…
}
Узнал для себя новое, и давно уже значение по умолчанию доступно в JS?
Согласно MDN, начиная с ES6.
Если решитесь продолжать — готов помочь с вычиткой и корректурой, мне не сложно.
const address = 'One Infinite Loop, Cupertino 95014';
const cityStateRegex = /^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;
const [, city, state] = address.match(cityStateRegex);
saveCityState(city, state);
Что-то лютый ад. Это хороший код? Про инкапсуляцию и переиспользование ничего не слышали? Хороший код выглядит как-то так:
const Address = require('address');
const addressText = 'One Infinite Loop, Cupertino 95014';
const address = Address.parse(addressText);
saveCityState(address.city, address.state);
И адский регексп должен быть спрятан внутрь реализации Address.parse
. Нет ничего хуже раскиданных по бизнес-логике регекспов. Что вы будете делать, если в другом компоненте потребуется парсить адреса? И завтра окажется, что одним регекспом произвольно записанные адреса не парсятся, нужна какая-нибудь условная логика. Тогда удачи вам в рефакторинге.
Всегда можно подобрать нормальный пример, который не будет требовать знаний из следующих глав. В крайнем случае написать не "хорошо", а "лучше, но всё равно плохо, а вот почему — смотрите главу 10, которую можно приобрести за отдельные деньги". Люди же читают это и потом реально плодят такой ужас прикрываясь тем, что кто-то над таким кодом написал "хорошо".
const Address = require('address');
Больше модулей богу модулей!
P.S. В исходном плохом варианте куда больше убило два одинаковых вызова
address.match
Вот это действительно ужасно.
Вы так говорите будто структурированный код — это что-то плохое. Должно быть вы веб-приложения в одной HTML-ке пишете, вставляя прямо в неё секции style и script?
Как из моих замечаний о том, что
1 — выделять один регэксп в модуль это перебор
2 — вызывать в одной строке кода два раза match для одной и той же строки это тоже перебор
вы сделали вывод о том, что я весь код пишу в html?
Car = {
make: 'Honda',
'Honda' — это brand, дружище…
maker, видимо, имелось в виду. Производитель то бишь.
make
…
noun
1 The manufacturer or trade name of a product
const locations = ['Austin', 'New York', 'San Francisco'];
locations.forEach((location) => {
doStuff();
doSomeOtherStuff();
// ...
// ...
// ...
dispatch(location);
});
А что случилось с правилами «Не делать длинные функции» и «forEach на 95% медленнее for»? Все, уже не модные на этой неделе?
А откуда цифра 95%?
Вроде же медленнее, но не настолько.
https://coderwall.com/p/kvzbpa/don-t-use-array-foreach-use-for-instead
Очень странная статья. Попробовал воспроизвести их тесты у себя локально в Node.js — получилось 50% максимум, но не 95%.
Попробуйте и вы, интересно, что получится
https://gist.github.com/just-boris/d05c41507167f4dcc09ccc8bed547207
И вообще, "производительность" и "мода" в одном предложении не складываются. Движки развиваются, и надо регулярно перепроверять информацию, устаревает буквально с каждым новым релизом браузеров.
const Car = { ... };
Это хорошо:
const car = { ... };
Объекты называем в lowerCamelCase, а классы и конструкторы прототипов в UpperCamelCase.
Чистый javascript.Переменные