Нормальный ли у меня код?

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

Код решает поставленную задачу. Самым важным является достижение цели. Код, который работает неверно, однозначно не нормальный. Пусть криво и косо, но нужный результат должен быть получен.

Код легко читается. Правильная архитектура, понятное именование переменных, достаточные комментарии, короткие функции. Это целый набор плохо формализованных требований к коду. Сможете ли вы спустя год понять, что происходит в коде? Сможет ли код разобрать ваш коллега? Сколько времени займут изменения вашего кода?

Быстрый по скорости и компактный по данным. Другими словами, код должен быть нормальной вычислительной и пространственной сложности. Тут помогают и интуитивные представления (что-то тормозит), и теория вычислительной сложности (О-нотация). Если вы сортируете записи за O(n^3) и требуете O(n^5) оперативной памяти, то вы делаете что-то не так.

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

Если, конечно, не горят сроки

Лига программистов

2K поста11.9K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

2
Автор поста оценил этот комментарий

Ты там рассуждаешь о компактости и скорости. Ассемблер-то нюхал хоть? Или очередной питонщик сраный?

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Перефразируя классика, на ассемблере можно написать что угодно, но жизнь слишком коротка

Зачем в современном мире писать на ассемблере, если есть Си? В среднем компилятор выдаёт куда более оптимизированный код, чем средний разработчик на ассемблере. Ну или по вкусу Golang, C++, C#, Java, etc

Я питонист, где надо быстро - есть куча оптимизаций на питоне, вплоть до разработки библиотек на чистом Си. Но, в среднем, это не очень востребовано. Что и логично - оптимизировать нужно "бутылочное горлышко", которое относительно небольшое

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

показать ответы
0
Автор поста оценил этот комментарий

С чего бы посты - реклама?

Потому что цель - подписка на тг-канал.

Посты - просто ниочём.

"Утром надо чистить зубы. Если нее чистить зубы - будет кариес. Хочешь узнать больше ценных советов - подписывайся на тг-канал".

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


Тоже ведь просветительская деятельность, правда? И советы в общем-то ценные.
Проблема в том, что они общеизвестны, а значит нахрен никому не нужны. А те, кто этих советов не знает - не сидит на Пикабу, аудитория не та.

А значит весь смысл это "просветительской деятельности" - реклама тг-канала для набора подписоты.

Уберите рекламу - все вопросы к вам отпадут.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо за развёрнутый ответ, но со смыслом согласиться не могу. Это репост старого поста https://t.me/devfm/108

Если пост нравится, то и в канале будет интересно читать посты. Я не завышаю ожидания, а показываю пример материала из канальчика. На текущий момент у исходного поста в канале 630 просмотров и 13 позитивных реакций, ни одной негативной. То есть, несмотря на тривиальность и общеизвестность, людям понравилось

Идём дальше, пост вышел одновременно и на хабре https://habr.com/ru/posts/897856/ . Там 8.6к просмотров, 4 голоса "за", 0 голосов против, и 3 сохранёнки. Супер

Идём ещё дальше. Предложение прочитать канал уже в комментарии убрано, лол. Не хочется - не переходите. То есть даже в ленте вы ссылку на ТГ не увидите, нужно зайти в пост. Чем это мешает?

Смысл рекламы то простой. Я, очевидно, хочу, чтобы меня читали. Значительно приятнее, когда тебя читает больше людей, чем меньше. Так можно найти больше полезных мыслей в обсуждении, как минимум. Например ещё, мой бесплатный курс на степике https://stepik.org/course/169291/promo не набрал бы 2к студентов, а был бы пустым опубликованным курсом. Собственно, вы предлагаете мне создавать материалы, чтобы они лежали никому не известные с тремя просмотрами. Спасибо, воздержусь от такой прекрасной возможности

0
Автор поста оценил этот комментарий

как оценить "нормальность" кода.

Нормальность, норма - мера пропорциональная, а не качественная. См. нормальное распределение в математике. Грубо говоря: "Как у большинства", а не: "Хорошо, качественно".

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Идея интересная, но по определению Ожегова норма это "Узаконенное установление, признанный обязательным порядок, строй чего-н". То есть "признанный порядок", что не равно "большая часть кода такая". Норма как своего рода эталон, устраивающий большинство

Для кода я трактую это так: если я код покажу 10 разрабочикам, и спрошу, нормальный ли это код, то 7 из 10 ответят "да". Тогда код нормальный. При этом сами разработчики могут писать не нормальный код, это с оценкой моего кода имеет довольно слабую связь

показать ответы
1
Автор поста оценил этот комментарий

Всё бы ничего, но все ваши посты - это реклама вашего тгк.

Если бы вы добавляли тег Реклама или сразу в посте писали, что это реклама канала - вопросов бы не было.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

С чего бы посты - реклама? Пост контентный и несёт вполне определённую мысль. Он закончен и самостоятелен, никаких "далее читайте где-то ещё". Да, конкретно этот пост небольшой, такая заметка. Это плохо?

В конце поста (а в этом посте вообще в комментарии) есть ссылка на ТГ. Если она вам мешает, не переходите, делов то. В чём проблема ссылки на ТГ, где именно такого формата посты и выходят?

показать ответы
0
Автор поста оценил этот комментарий

А что, вашим джунам действительно нужно объяснять, что такое хороший код?
Они не знают, что код для начала должен быть рабочим, хорошо бы, чтобы был оптимальным и совсем прекрасно, чтобы был читаемым?

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я преимущественно учу студентов. Если они к моменту выхода на работу понимают эту базу, то я свою работу делаю замечательно)

Рынок сейчас весьма неоднороден. Что я даю студентам, то весьма актуально стажёрам, потому что стажёр может быть с весьма и весьма разным бэкграундом

показать ответы
4
Автор поста оценил этот комментарий

Для ЛЛ: нормально пишите, ненормально не пишите, вот вам тгк

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Так конкретные критерии, на что смотреть. Вы джунов учите? Как им объясняете, что есть хороший код?

показать ответы
6
Автор поста оценил этот комментарий

Для ЛЛ: gpt генерация, идите дальше

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это репост публикации 22 года, какой GPT... Пересматриваю старые наработки, которые хотел бы обсудить с сообществом
https://t.me/devfm/108

1
Автор поста оценил этот комментарий

Пшел нахуй. Вместе со своей телегой. Прыщи сперва выведи.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Действительно. Давайте на пикабу оставим только репосты боянов, к чёрту авторские посты

показать ответы
Автор поста оценил этот комментарий

Приглашаю вас почитать и обсудить разное в моём ТГ-канале:
— Markwhen — инструмент для построения роадмапов https://t.me/devfm/559

— Подкаст про Роли в ИТ-проекте https://t.me/devfm/538

— Подборка материалов про архитектуру (зачем нужны архитектурные схемы, как их документировать, какие инструменты использовать) https://t.me/devfm/557

показать ответы