Pull to refresh
10
0
Алексей @RA_ZeroTech

Программист, TeamLead

Есть ли польза от GoF-паттернов?

Есть ли польза от GoF-паттернов?

Да, есть.

Инспекция кода: заводим врагов

Преподносить инспекцию кода, code review как инстурмент мщения - это совсем не командная работа.

Или это такой скрытый юмор в статье?

Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки

Спасибо за ответ! Конечно, точных цифр не ожидал услышать. Хоты бы порядок. Чтобы иметь представление по Вашему опыту, сколько времени уходит на подготовку к разработке/рефакторингу (непосредственная целенаправленная работа с кодом).
Так как, повторюсь, для 10-ти летнего легаси рефакторинг за 3 месяца (пусть даже может и не все на самом деле, но большую часть отрефакторили) считаю отличный срок. Значит, подготовка была достаточно основательная. Поэтому и решил задать этот вопрос.

Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки

А так же интересно, сколько времени ушло на этапы: инициализация, планирование, анализ, проектирование.

Хотя бы в сумме. Но лучше в отдельности :)

Так три месяца на рефакторинг звучит, конечно, круто и достойно. Но и предыдущие этапы не пару дней заняли? :)

PHP Дайджест № 222/3 (26 марта – 25 апреля 2022)

Спасибо Вам, что подхватили поддержку публикации дайджеста. Очень полезно!

Как разобрать URL в JavaScript?

Плюс к этому, там же (у developer.mozilla.org), что это ещё экспериментальная вещь.


А здесь в статье ни слова об этом. Хотя бы ссылку на поддержку браузеров.

Какую цену мы платим за использование async/await в языках JS / C# / Rust

file.json — каких объемов файл?

При синхронном чтение весь пишется в память. Если он у вас >= Гб, быстро память закончится.
Даже если меньше, и их у Вас несколько, но они читаются параллельно, тоже можете упереться в память.

Какую цену мы платим за использование async/await в языках JS / C# / Rust

К тому же, судя по коду, чтение файла происходит всего сразу. Это лишнее. И это совсем не стрим уже.

На node js у Вас должно получиться что-то вроде (условно):
FileReadStream.pipe(ParseStream).pipe(WriteStream)


где:
  • FileRead — читаем файл «кусками», а не весь сразу
  • ParseStream — обработка «кусков» по мере их чтения (у Вас это JSON)
  • WriteStream — если надо, сохраняем куда нужно результат обработки «кусков» (кэш, БД etc.)


Тогда у Вас и не будет создаваться куча объектов Promise (db.readString) в цикле

while(true) {
...
const chunk = await db.readString('\x01')
...
}

Какую цену мы платим за использование async/await в языках JS / C# / Rust

У вас сразу идёт чтение файла openSync — синхронно? Зачем?

Какую цену мы платим за использование async/await в языках JS / C# / Rust

От целей и задачи зависит. Может весь, может нет.

В любом случае, обработку (а это могут быть разные операции: чтение, парсинг строк/json etc) файлов лучше решать через Stream API NodeJs.

Возможно пригодится и Worker Threads API NodeJs (недавно появились).

Какую цену мы платим за использование async/await в языках JS / C# / Rust

Я, вроде, и не предлагал читать весь файл?


Возможно, я не так понял эту мысль:
Тут нужно сначала в один проход заполнить всеми нужными данными кэш, а потом во второй проход синхронно его обрабатывать.

Какую цену мы платим за использование async/await в языках JS / C# / Rust

А чем для этого на устраивают потоки в норде? :)
Не надо весь файл читать!

Какую цену мы платим за использование async/await в языках JS / C# / Rust

Только в выше приведённых примерах Kozack это не так.

Если, конечно, метод получения данных из кэша тоже подразумевался асинхронным.

И далее в комментариях подобные примеры приводят с вероятностью, что рано или поздно Zalgo все же вылезет :)

Какую цену мы платим за использование async/await в языках JS / C# / Rust

Вот так как раз не надо делать. Функция должна быть полностью синхронной или асинхронной.

Почитайте про “release zalgo”.

Как я писал централизованную криптовалюту на PHP. (Часть 1 — Базовые конспекты + Быстрый старт)

И комментарии «забавные»


// Возвращаем true, если хэш не годен, и true — если хэш годен


:)

Создание мобильного приложения на React Native

Так и не исправили.
Прислушайтесь к рекомендациям, которые Вам тут дают.

Не пишите обучающие статьи, пока сами не разберётесь в тематике и инструментах, которые используете (упоминаете в статье).

Лучшие методики тестирования в JavaScript и Node.js

Статья не протестирована. Есть дубли «кода» :) А именно, чем пп 1.9 отличается от пп 2.7? :)

Прекратите усердствовать с комментариями в коде

Все должно быть в меру.
Проблема большинства, даже опытных программистов, в том, что они считают, что их имена переменным, методам, классам самые понятные для всех :) И поэтому не хотят сопровождать код комментариями вообще :)

Комментарии полезны, если они к месту.
TODO полезны, если они к месту.
FIXME полезны, если они к месту.

(с) Кэп.

Unit тестирование в Laravel

Подход TDD имеет место быть. Я делюсь своим опытом. У меня пока нет понятного опыта работы с TDD, но хочу попробовать в будущем детальнее посмотреть сюда.

Понимание плюсов TDD приходит с практикой. Вы правильное делаете, что смотрите в эту сторону.

Рекомендую посмотреть для общего развития, если не видели "Зачем и как писать качественные Unit-тесты (Алексей Солодкий / Badoo)"
1

Information

Rating
4,644-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity