Все должно быть в меру.
Проблема большинства, даже опытных программистов, в том, что они считают, что их имена переменным, методам, классам самые понятные для всех :) И поэтому не хотят сопровождать код комментариями вообще :)
Комментарии полезны, если они к месту.
TODO полезны, если они к месту.
FIXME полезны, если они к месту.
Подход TDD имеет место быть. Я делюсь своим опытом. У меня пока нет понятного опыта работы с TDD, но хочу попробовать в будущем детальнее посмотреть сюда.
Понимание плюсов TDD приходит с практикой. Вы правильное делаете, что смотрите в эту сторону.
«Спасибо» за минусы, кто поставил :) На самом деле почитайте принцип TDD. Там как раз и говорится о том, что тест сначала, код потом. По сути, TDD говорит о том, что «вы» знаете что должен вернуть метод при определенных входящих аргументах. То есть, знаете как должен будет работать тестируемый метод. Если этого не знаете, то в общем смысле — не знаете мини-задачу, которую решаете.
Тест лучше писать до написания кода. Так больше контроля во время разработки.
Написание тестов после написания кода грозит тем, что требования теста подгоняются под готовый код. И как следствие, можно пропустить кейс с ошибкой в коде. Которая проявится потом.
Данные в памяти в итоге могут занимать места меньше, могут так же. Потому что Вы уже их часть обработали, и отдали в АПИ или еще куда. И часть из памяти удалили… дожидаться загрузки всех данных, когда можно их уже начинать обрабатывать?
Ниже пример просто на чтение текстового файла большого объема. На основе Вашего кода:
visits_i.txt — текстовый файл около 140 Мб каждый. Простые строки каждая по 64 символа латиница
BimBam, Вы автор перевода? Просьба. Перечитайте текст, и перепишите некоторый предложения с «русского языка» на русский язык. И знаки препинания не забывайте… Вроде понимаешь при чтении о чем написано, но приходится перечитывать, чтобы убедиться…
Это объединяет наших специалистов в одну команду которая позволяет нам понимать и реагировать на потребности пользователей на любом из уровней наших технологий.
На node js у Вас должно получиться что-то вроде (условно):
где:
Тогда у Вас и не будет создаваться куча объектов Promise (db.readString) в цикле
В любом случае, обработку (а это могут быть разные операции: чтение, парсинг строк/json etc) файлов лучше решать через Stream API NodeJs.
Возможно пригодится и Worker Threads API NodeJs (недавно появились).
Возможно, я не так понял эту мысль:
Не надо весь файл читать!
Если, конечно, метод получения данных из кэша тоже подразумевался асинхронным.
И далее в комментариях подобные примеры приводят с вероятностью, что рано или поздно Zalgo все же вылезет :)
Почитайте про “release zalgo”.
…
// Возвращаем true, если хэш не годен, и true — если хэш годен
…
:)
Прислушайтесь к рекомендациям, которые Вам тут дают.
Не пишите обучающие статьи, пока сами не разберётесь в тематике и инструментах, которые используете (упоминаете в статье).
Проблема большинства, даже опытных программистов, в том, что они считают, что их имена переменным, методам, классам самые понятные для всех :) И поэтому не хотят сопровождать код комментариями вообще :)
Комментарии полезны, если они к месту.
TODO полезны, если они к месту.
FIXME полезны, если они к месту.
(с) Кэп.
Понимание плюсов TDD приходит с практикой. Вы правильное делаете, что смотрите в эту сторону.
Рекомендую посмотреть для общего развития, если не видели "Зачем и как писать качественные Unit-тесты (Алексей Солодкий / Badoo)"
Написание тестов после написания кода грозит тем, что требования теста подгоняются под готовый код. И как следствие, можно пропустить кейс с ошибкой в коде. Которая проявится потом.
hellogoodbye.app
Ниже пример просто на чтение текстового файла большого объема. На основе Вашего кода:
visits_i.txt — текстовый файл около 140 Мб каждый. Простые строки каждая по 64 символа латиница
take.ms/RLGBS
duration_ts = 2.266 sec
memory usage: 153
take.ms/km7CT
duration_ts = 2.318 sec — а бывало и меньше ( = 1.99 sec)
memory usage: 11
take.ms/UcgL9
duration_ts = 1.167 sec
memory usage: 12
Вроде условия вывода memoryUsage поставил в правильном месте? По окончании чтения всех файлов.
и/или потоки?
И далее по тексту еще есть подобное.