Как стать автором
Обновить

Комментарии 21

Я обычно стремлюсь к тому, чтобы размер моих файлов не превышал бы 100 строк.

речь в статье о достаточно серьезных проектах. с такими мелкими файлами их количество перевалит за 100, 200… автор удачно назвал это лесом. в нем и заблудится недолго.

почему бы для навигации по содержимому файла не воспользоваться встроенными средствами редактора. например, у Visual Studio (взрослой) есть для этого три списка навигации.
Используйте несколько параметров функций вместо одного объекта с параметрами


Не согласен. Есть случаи когда параметров функции очень много, тогда лучше передавать объектом, но при этом написать комментарий перед функцией (например в формате JSDoc)
Или уже наконец не писать в голом JS в 2019 году, а взять TS и получить статическую типизацию, которая и без окольных средств типа JSDoc/IDE autocomplete просто не даст дернуть того, что не попадает в тип.

Так там, так и написано.

Используйте строгую типизацию (TS/Flow).

О да, здесь я неистово плюсую. У хорошего программиста код будет хорош всегда, но типизация всё же сильно помогает. Тоже не разделяю мнение, что в JS типизация не нужна.
Не буду отрицать, советы, по большей части, полезные. Вот только лет им уже в районе сорока. Нет, это конечно хорошо что инфлюэнсер открыл для себя Макконнела и прочих, но что-то смущает меня высказывание
Но особенно полезной она будет для тех, кто знаком с JavaScript хотя бы на среднем уровне.

То есть предполагается, что владея языком на среднем уровне разработчик не был в курсе что такое модули и как называть переменные? А фраза «хотя бы» намекает что и некоторым гуру не помешало бы ознакомиться с этими секретами мастерства?
Статья противоречивая. Сначала советуют несколько аргументов вместо объекта, а потом приводят советы по организации функций, принимающих единственный аргумент объект.

Но если писать функции, учитывая возможное будущее масштабирование приложения, лучше использовать несколько параметров.

Как раз наоборот.
Единственный выигрыш от нескольких переменных, вместо объекта, это экономия памяти на аллокации объекта.
Разница, к слову, весьма ощутимая, когда речь заходит про high perf приложения. Это одна из причин, почему в ядре ReactJS можно редко увидеть функции с единственным аргументом-объектом.
НЛО прилетело и опубликовало эту надпись здесь
Как раз наоборот.
Единственный выигрыш от нескольких переменных, вместо объекта, это экономия памяти на аллокации объекта.

А вы вообще понимаете, что в статье говорится не о мифическом перфомансе и экономии на спичках, а об удобстве работы с кодом? Выигрыш тут в том, что видя названия аргументов (а в идеале, в TS/Flow, еще и их типы), мы сразу можем понять что в функцию нужно пихать. А не какой-нибудь мифический args-объект в котором непонятно что должно содержаться (и не дай бог этот args будет по цепочке передаваться туда-сюда в разные функции, тогда вообще ничего нельзя будет разобрать).

Многие пункты более подробно рассматриваются в книге "Чистый код" Роберта Мартина. Но в статье интересно применение к es6. В целом полезно повторить.

При объявлении функции следует стремиться к использованию нескольких параметров, а не одного объекта с параметрами.

А другой пропогандирует RORO, и как теперь жить?)
Как по-мне, самый важный совет — использовать TypeScript вместо чистого JS. TypeScript — это именно то каким должен быть JS. Почти все проблемы описанные тут решаются строгой типизацией.
НЛО прилетело и опубликовало эту надпись здесь
Whenever i write my code, i goes well in the beginning but afterwards becomes a big mess.
П.3 не актуален при написании через TypeScript. После того как его попробовал — любой JS только через TS.
К п. 12 добавил бы рекомендацию к любому console.log добавлять текстовый десрипшн console.log('this.data', this.data); Тогда не будет проблем с поиском именно этого раздражающего лога, который выводит непонятно что:)
НЛО прилетело и опубликовало эту надпись здесь
Поддержу. Не являюсь фаном Typescript. Но после того, как начал его использовать, действительно читабельность и понимание кода значительно возросла.
попробуйте console.log({this.data})
Это если console.log({data}), Ваш пример не валиден)), иначе не будет работать)) А зачстую надо вывести результат работы функции, к примеру console.log('Math.pow(2,2)', Math.pow(2,2)).

В ИДЕ своей даже макрос под это сделал. При выделении куска кода он закидывает его в подобную конструкцию
Насчёт 3 пункта:

function displayUser(user: IUser) {…
or
function displayUser({ firstName, lastName, age }: IUser) {…
Зарегистрируйтесь на Хабре , чтобы оставить комментарий