Pull to refresh

Comments 36

Это относится ко всем языкам программирования всех времен и народов.
Но тогда зачем писать очевидные вещи, которым место в «Программирование для самых маленьких (в картинках)»? Да и полно подобных статей уже.
И даже для SQL? А то у наших датабазистов совсем другие соглашения об именовании
Наверное, вам стоит подписаться на коммиты в репозитории, потому что примеры и формулировки там сейчас активно и коллективно обновляются. Например, этот код уже отличается от старой версии, использованной вами.
Да, так гораздо интереснее. Кстати, один момент мне не очень понравился, который заявлен как Good:
const totalOutput = programmerOutput
  .map((programmer) => programmer.linesOfCode)
  .reduce((acc, linesOfCode) => acc + linesOfCode, 0);

Вместо крокодила reduce здесь логичнее просто написать sum(). Иначе вариант с циклом мне нравится больше.
Лучше объедините переводы в одну статью. Читать отдельные короткие, не очень удобно.
+1. Введение — вообще ни о чем. Эта часть — коротковата. Если материал уже есть — лучше чуть подлиннее. При наличии нормальной структуры будет читаться лучше.

К React, Node, Angular это точно имеет отношение?
function createMicrobrewery(breweryName = 'Hipster Brew Co.') {
//…
}

Узнал для себя новое, и давно уже значение по умолчанию доступно в JS?
Вы уж простите, я понимаю, что этому место в личке, но качество перевода — ужасное. Везде сквозит калькирование английской грамматики. Абзац после заголовка «Используйте именованные значения» — вообще кошмар.

Если решитесь продолжать — готов помочь с вычиткой и корректурой, мне не сложно.

Это мой первый перевод, согласен с вами по поводу качества. Буду старатся исправится.
Автор книги «Чистый код» — Роберт Мартин. А Раян Макдермот сделал адаптацию не всей книги, а последней главы.
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?

maker, видимо, имелось в виду. Производитель то бишь.

И эти люди запрещают ковырять в носу учат, как выбирать идентификаторы…

Даже если это написано в Оксфордском словаре, это еще не значит, что надо так писать.


Brand намного более понятнее, и не надо каждому читающему этот код бегать в словарь, чтобы понять, что имел в виду автор.

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

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

никто мне не указ, я сам определяю, из какого дерева делать костыли.
UFO just landed and posted this here
Это плохо: const Car = { ... };
Это хорошо: const car = { ... };
Объекты называем в lowerCamelCase, а классы и конструкторы прототипов в UpperCamelCase.
Sign up to leave a comment.

Articles