Найти тему

Пытаюсь стать программистом в 30 лет (2.5): сделал рабочую сортировку сам

Оглавление

Написание этих 150 строк настоящего кода, дало невероятные эмоции, которые хочется повторять снова и снова. Именно в момент написание этой сортировки я понял, что имел ввиду Егор Бугаенко когда рассказывал про то, что дрессировать машину увлекательнее чем собаку!

Как я писал данный код

Я не совру, если скажу, что эту сортировку я писал минимум 3 дня! Я ходил с блокнотом по квартире и записывал туда часть кода из того, что пришло в голову! Потом подходил к компу и начинал реализовывать задуманное. Были моменты когда я запутывался в собственном коде и терял нить рассуждений, что давало понять о неправильном размышлении. Я стирал весь код и писал с 0. Каждый раз выходило всё лучше и лучше, пока не вышло то, чем я полностью доволен.

Полностью доволен на момент написания кода. Я понимаю, что лучше я сделать уже не могу.

Теперь и сам код!

Данный отрывок текста с кодом разделен на две части:

  1. первая часть (1-4 скрины) - код с демонстрацией нужного месяца
  2. вторая часть (5-6 скрины) - код сортировки.

Демонстрация результата кода на сайте

Я постарался разместить код так, что бы его было удобно читать. Надеюсь, у меня это получилось.

Первая часть

Данный код выполняет функцию автоматическое отображение нужного месяца блоке фильтров. Если есть публикация где указано в графе месяц "августа", то и в фильтрах будет показан "август". Если же в какой-то месяц нету мероприятий или данный месяц в этому году прошел, то данный месяц указан не будет в фильтрах

Сообщение для подписчика:
bltr, твои советы про наименования переменных и удаление неактивного кода держу в голове! Тут это не исправлено из-за того, что код написан был до твоего напоминания в предыдущем посте.

Правки по коду

1) Сейчас перед публикацией текста решил проверить код и обнаружил, что когда месяц в переменной var real_time вырастает с 20200901 до 20201001, то оно не склеивается, а складывается и получается 203001.

Причина этого мне непонятно. Я лишь понимаю, что число из строки превратилось в число, и нужно вернуть в строчную. Для этого переменные обернул в (сюда переменную).toString() и все заработало!

2) Еще заметил, что если в сейчас 2020 год, а у вас есть уже публикация на дату следующего года, то они не появляются при выборе фильтра. Поэтому добавил первую строку.

-3

3) Заметил, что если у вас в в будущих публикациях совпадает месяц с прошедшими публикациями, то публикуются оба. Поэтому пришлось добавить в последней строке .ar-news_filter-box--active.

Вторая часть

Вот это уже моя гордость! Небольшой код длинной в три дня работы (вечер пятницы, суббота и воскресенье)! Замысел был таков: нужно сделать код, который будет сортировать публикации по датам и выделять публикации с прошедшей датой.

Объяснение кода "на пальцах":

  1. Каждой публикации прописываю класс в формате год/месяц/день, что воспринимается, как порядковый номер публикации;
  2. При помощи готового решения узнаю сегодняшнюю дату (день, месяц, год);
  3. Прописываем максимальное число (в моем случает - это "20220101")
  4. Сравниваем сегодняшнюю дату с максимальным числом ("20220101"). Даты, которые в данном радиусе не находятся - не активные публикации.

Минусов в данном коде неимоверно много и я это понимаю. У меня не стояла цель сделать самый крутой код в мире! Я хотел сделать очень простой код, что бы я его сам понимал и при необходимости коллеге мог передать работу.

Какие минусы я вижу:

  1. Год считается не 365, а тысячами - я знаю, как это исправить, но тогда код вырастет в два раза.
  2. Код не находит максимальное число, а я его сам проставляю - это я даже не знаю как сделать, но 100% это увеличит код!
  3. Дату публикации прописываю классом, а не берется она автоматически из заполненных полей - иногда от менять требуется указать лишь месяц или дату от и до. Воплотить такое я пока не в состоянии. Поэтому проще через класс.

Больше я не вижу минусов.

Меня бесят рекламные блоки в моих статьях, а совсем отказаться от возможности получать какую-то монетку не могу. Поэтому теперь всегда будет данный блок в конце моей писюльки.

p.s. Больше месяца прошло с того момента, как был написан данный код, который я вам показал. Прикол в том, что с того момента я больше не написал на JS ни строчки и это очень нехорошо! Осознание этого вводит меня в состоянии паники сейчас. Но сейчас снова появилось время и буду дальше практиковаться!

Если вам понравилась моя писанина, значит будет интересно узнать, как я докатился до такой жизни:

  1. Изучаю пузырьковую сортировку - нажмите на текст, что бы прочесть статью
  2. Мой первый качественный лендинг - нажмите на текст, что бы прочесть статью