Найдены дубликаты

Отредактировал DobrijZyk 193 дня назад

282 комментария

по актуальности
+255

Бл, я через месяц вспомню только если там комментариев написал больше чем кода

раскрыть ветку 90
+105
Открываешь конфиг и думаешь "блять что тут за борода, кто её нахерачил" А потом вспоминаешь что это был ты неделю назад.
раскрыть ветку 4
+8

Пффф, раньше думал что переписывать чужой код сложно. НО НО потом пришлось работать с cms битриксом с чистой версией, еще не переписаной и скажу вам что лучше бы там кто то уже что то переписал, это какое то Г за 72 к )) Забавно думать что за такие деньги там должно быть все готово, но потом приходится нанимать программиста платить ему еще как за стоимость интернет магазина, очень экономная вещь

раскрыть ветку 2
-12

Говнокодер детектед

ещё комментарий
+159

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

раскрыть ветку 54
+281

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

раскрыть ветку 19
+24

Согласен, но это только именование. Другое дело - вспомнить логику приложения, при этом всякие getProduct() или isValid не всегда помогают.

раскрыть ветку 15
+15
Не всегда работает такой подход, не давно был проект где таблица содержала 80 информативных переменных часть из которых ведут на другие таблицы, так вот направление проекта исследования скважин/нефьте добыча, и названия переменных давление пластовое, давление межпластовое, давление, давление забойное, давление забойное 1 и т. д. вообщем их так то тяжко читать и выстраивать связь, а еще и по переменным искать значение полный атас и к 30 переменной уже понимаешь что называть вещи своими именнами уже нету ни сил ни фантазии, так и живём. ..
раскрыть ветку 3
+12
И исключения
Иллюстрация к комментарию
раскрыть ветку 4
+6

Слишком простой вариант=). Это никогда не избавит от традиционного вопроса "нахуя". Старые добрые костыли, которые были вставлены давным давно, либо вообще другим разрабом, по только ему известной причине. И не дай боже ты решишь поиграть в умного и прочитав весь остальной код решить что это тут не нужно. С высокой вероятностью огребешь кучу проблем. В итоге в "прочтенном" коде остаются участки с темной магией.
Другой вариант старый проект со старыми уже не использующимися фреймворками. Даже если он красиво написан, не освежив память документацией по нему, трудно будет разобраться.

раскрыть ветку 4
+4

Мне кажется так и придумали 1с :)

+2
Гы-гы.

ls -hl /mnt/*/*.ru/$(/usr/local/bin/date '+%Y-%m-%d' --date="(date) -1 day")/ft-v0[57].$(/usr/local/bin/date '+%Y-%m-%d' --date="(date) -1 day").2300*|cut -d/ -f6 > /tmp/VarA

ls -hl /mnt/*/*.ru/$(/usr/local/bin/date '+%Y-%m-%d' --date="(date) -${tIme} day")/ft-v0[57].$(/usr/local/bin/date '+%Y-%m-%d' --date="(date) -${tIme} day").2300*|cut -d/ -f6 > /tmp/VarB

DiFF=`/usr/bin/diff /tmp/VarA /tmp/VarB|grep .ru`

echo $DiFF

+1
Ах, Clean Code Роберта Мартина. Годная книга, особенно для начинающих
0

Да прост нужно побольше методов и классов использовать. А то в одном классе в двух методах напишут 500+ строк кода и сиди ковыряй.

+7
У меня больше проблема в расхождении видения проблемы. Комменты чаще всего пишу вида "эта фигня делает то-то". А через время мне нужно вспомнить, например, КАК оно это делает, или ЗАЧЕМ оно это делает и все. И начинаешь распутывать клубок от цели к реализации.
раскрыть ветку 2
+4

Ну то есть комментарии не нужны, все равно читать код, да?

раскрыть ветку 1
+47

Ну дык. =) И это нормально - всё камментить ящитаю. ;)


Жопка потом спокойней, не пылает, аки Солнышко в небе ясном. ;)

раскрыть ветку 22
+42
потом придется форки делать изза комментариев.

"

Среди разработчиков системной библиотеки Glibc разгорелась дискуссия, которая привела к противостоянию между Ричардом Столлманом и сообществом и заставила задуматься над применяемыми в проекте методами управления и полномочиях по принятию решений.

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

В ответ в списке рассылки Glibc появился Ричард Столлман, который указал, что движение GNU не является чисто техническим проектом и попросил вернуть назад шутку, которую он добавил в 1990-х годах и считает вполне уместной и важной с идеологической точки зрения. Он заявил, что документация GNU, как курс по истории, не должна быть безопасным местом, а также в шутку предложил довести дело до абсурда и добавить предупреждение в текст о функциях создания дочерних процессов, так как роды могут быть гораздо более травматичны, чем аборты. Например, как неплохой вариант отмечено предупреждение "создание детей может занять до 9 месяцев и привести к исчерпанию всех ресурсов".

В конечном счёте, натолкнувшись на большое число возражений Столлман заявил, что как руководитель проекта GNU он отвечает за то, что публикуется в руководствах GNU, и он лично определяет критерии, на основании которых принимаются решения. Разработчики попытались возразить, что решения в Glibc в основном принимаются на основании консенсуса, на что Столлман указал, что Glibc не является независимым проектом, а представляет собой часть проекта GNU и официальные мэйнтейнеры утверждаются лично им.

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

Торвальд Ригель (Torvald Riegel), один из мэйнтейнеров Glibc из компании Red Hat, входящий в комитеты ISO по стандартизации C++, указал, что пренебрежение коллегиальным мнением сообщества разработчиков является неплохим поводом для форка. Решение об удалении посторонней шутки, которая не имеет отношения к описанию работы функции abort(), было принято коллегиально большинством разработчиков, но Столлман отказался прислушаться к чужому мнению в пользу личных пристрастий.

Несколько мэйнтейнеров Glibc призвали не возвращать шутку пока продолжается обсуждение и не выработано общее соглашение. Тем не менее один из мэйнтейнеров (Alexandre Oliva), несмотря на то, что большинство разработчиков высказались против шутки, уже отменил удаление, сославшись на решение лидера проекта. В качестве компромисса, Столлман разрешил добавить примечание "Предупреждение от Столлмана"."

раскрыть ветку 13
+6

Нормальный код почти не надо комментить, если правильно все обозначено правильно

+10

Иллюзия безопасности.

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

-15
Ну хз, я комменты вообще не пишу. Легче просто «красиво» назвать переменные и все и так будет понятно...
раскрыть ветку 5
ещё комментарии
+3

https://vk.com/wall-30666517_796260


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

0

S.O.L.I.D., K.I.S.S и другие принципы вам в помощь. Не брезгуем патернами и тогда код в 200 000 строк читается без комментариев. Проверенно на 8 проектах.

Не забываем о код ревью, статистический код анализ, юнит/интегрейшин/е2е тестах, этапах обязательного рефакторинга("рефакторинг с использованием шаблонов" в помощь), код гайдлайнах;)

0
Куда БЛ? Пула не было... Ложимся, дебафф сбрасываем быстренько
0
Документировать надо, а техписы не везде есть

И ещё меньше из них способны документировать код
+500
Иллюстрация к комментарию
раскрыть ветку 64
+500
Иллюстрация к комментарию
раскрыть ветку 22
+281
Иллюстрация к комментарию
раскрыть ветку 9
+154
Иллюстрация к комментарию
раскрыть ветку 8
+48

Да вполне норм туфли за 500р. Я похожие за 3000р видел.

раскрыть ветку 2
+23

бля...

Иллюстрация к комментарию
+80

Подмывается. Ну или подтирается по ГОСТу, а именно 3 подтирки если сходил "твёрдо" и добавляется по 2 подтирки в зависимости от консистенции продукта на выходе.

раскрыть ветку 32
+140

слепой

в зависимости от консистенции продукта на выходе.
Иллюстрация к комментарию
раскрыть ветку 11
+20
Не подскажете номер ГОСТа? Введем нормативы,начнем экономить,ух заживем!)
раскрыть ветку 1
+1

Странный гост, минимум 4-5 подтирок же

раскрыть ветку 2
-10

Как он узнает консистенцию? :D

раскрыть ветку 14
ещё комментарии
+13

Сколько раз видел, как валяется ОДНА бумажка с толстым слоем хм... коричневого вещества.
Так что просто есть люди, которые не заморачиваются долгими процедурами.

+26

По изменению трения бумаги

раскрыть ветку 1
0
Teach me.jpg
+10

По запаху

+7

Собака ему на что?

+3

На вкус

-2
Пальчик перестает пахнуть шоколадкой
+31
Иллюстрация к комментарию
раскрыть ветку 3
+6
порнуха конешно
раскрыть ветку 2
0

На диске С? Слетела винда - пропала коллекция порно.

раскрыть ветку 1
+31
Вся суть в одной картинке.
Иллюстрация к комментарию
+18
На фото Жданов. Не так давно умер. Светлая память ему и его супруге. Очень грамотные и умные люди.
раскрыть ветку 1
+2

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

+11

что делает я обычно помню, а вот как делает...

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

+5

Напомнило)

Иллюстрация к комментарию
+7

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

раскрыть ветку 1
-4

Дык найди сейчас людей, которые умеют в контроль версий. Навыпускалось из своих колледжей народу, а самообучаться не хотят. Все хотят 30-50К и нихуя не делать.

+9
** расскажите принцип работы кода который вы только что дописали


** главное ничего не менять, все может обвалиться

**нужно исправить, криво работает

**исправил

**исключение

**вернул

**исключение
раскрыть ветку 1
+3

о, история коммитов моего проекта

+39

Я всегда делаю так:

1. У меня к коду написаны подробнейшие комментарии.

2. У меня к коду всегда есть полный набор блок схем.

3. У меня к коду всегда есть подробное описание всех изменений, и причин их вызвавших.

4. У меня все имена имеют смысл.

5. У меня есть выработанная система имен.

6. У меня код состоит из библиотечных блоков, собственной разработки.

Итого: я хоть через 10 лет легко вспомню что я делал.

раскрыть ветку 60
+291

7. Добавление новой строчки занимает целый день.

раскрыть ветку 19
+16

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

Если ты пишешь проект, который в дальнейшем будет поддерживаться, а не «написать и выкинуть», то потом потратишь больше времени вкуривая написанный код, нежели ты мог бы потратить просто написав комментарий.

раскрыть ветку 4
+40

Ну не целый день. Но ко времени действительно требовательно.

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

Но у меня не совсем язык программирования. У меня схемотехника (Verilog, VHDL)

раскрыть ветку 13
+36
«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте» ?
раскрыть ветку 3
+6

Я сам чуть не стал тем самым психопатом, когда поработал некоторое время на фирме, которая работает уже лет 10 и занимается WEB-разработкой. Помимо написания новых проектов, большую часть времени занимала поддержка старых. А текучесть программистов там бывает большая.

+1

Ооо даааа! )))

-1

Читал эту статью на Хабре (гиктаймсе) ^_^

+22

В тему:

Вася и Петя одновременно начали писать один и тот же продукт.

Вася был «ориентирован на результат» и начал сразу писать говнокод не продумав толком архитектуру.

А Петя месяц разрабатывал архитектуру, месяц делал удобный интуитивный интерфейс, которому позавидывал бы Джони Айв, потом месяц писал тесты, потом два месяца писал сам код и получил идеальное стабильное приложение.

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

Итого, через пять месяцев у Васи было два работника, куча клиентов и сносно работающее приложение отвечающее желаниям клиентов.

У Пети было вылизанное никому не известное приложение, минус на банковском счёте и ни одного клиента.

В завершение этого выдуманного примера можно сказать, что через полгода Вася купил все наработки Пети, Петю взял в штат тестировщиком, а сам по пьяни разбился на своём новеньком Туареге

раскрыть ветку 3
+3

Вася и Петя одновременно начали писать один и тот же продукт.

Вася был «ориентирован на результат» и начал сразу писать говнокод не продумав толком архитектуру.

А Петя месяц разрабатывал архитектуру, месяц делал удобный интуитивный интерфейс, которому позавидывал бы Джони Айв, потом месяц писал тесты, потом два месяца писал сам код и получил идеальное стабильное приложение.

Но Вася выпустил уже через месяц первую версию программы, пусть и не идеальную, пусть с багами, но рабочую, и начал её продавать.

Однако из-за недоработанности программы - она в ответственный момент дала сбой, из-за чего погибли люди.

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

У Пети было вылизанное нприложение, плюс на банковском счёте от заказчика и новые клиенты, рекомендовынные довольным заказчиком

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

раскрыть ветку 1
0
Не выдуманный пример. С гейтсом и джобсом что-то подобное было.
+6
Обилие комментариев указывает на то, что код неподдерживаемый, ровно как и описание изменений и прочая излишняя информация. Хотите писать читаемый код, прочитайте Clean Code.
раскрыть ветку 1
0

Код может быть разным.

Если описывать программу - то это одно.

А если цифровую схему - то это совершенно другое.


Обилие всевозможных комментариев, блок схем, алгоритмов, диаграмм направлены на то, чтобы потом вспомнить как же работает твоя цифровая схема.

Например вот небольшая цифровая схема.

http://ra3ggi.qrz.ru/UZLY/r900428_1.gif

Представь схему раз в 100 больше. И если сможешь предложи альтернативный вариант её задокументировать.

+3

7. Я пиздабол

+9

7. Я или безработный, или пиздабол.

раскрыть ветку 1
+5

4 и 5 пункты - это стандарт просто. а комментирую только неочевидные куски.

+2
И тебя не сущетсвует! Ты миф и имя тебе "Идеальный код", а идеального ничего не бывает. ...хотя.... кнопка "сделать все хорошо" - прогресс бар и мсг "у вас все хорошо!"
раскрыть ветку 3
0

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

Иногда даже приходится вместо нестандартных, неочевидных, но красивых решений писать менее красиво, но более просто и понятно, если нужны (возможны) будут правки в будущем.

раскрыть ветку 2
+1
Там наверху, веткой выше, индусы-кнопкодавы сидят, научите их этим премудростям.
0

“Don’t comment bad code—rewrite it.”

—Brian W. Kernighan and P. J. Plaugher

раскрыть ветку 1
+1

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

0

Ты как будто на верилоге каком-нибудь пишешь. Очень на это похоже)


Upd. Прочитал комменты, как в воду глядел. RTLщик RTLщика видит издалека)

раскрыть ветку 2
0

Неужели RTLщика так заметно издалека ?

раскрыть ветку 1
0

ну кусок кода без контекста и без сопутствующего материала все равно малопонятен

0
Вы это делаете для себя или сдаете заказчику? Мой опыт показал, что это сильно разные вещи, и передать заказчику работающий продукт это один процент от работы, удовлетворить документацией с блок схемами и описанием алгоритмов практически нереально.
раскрыть ветку 1
+3

А кто запрещает в будущем свои наработки применять в других проектах ?

Я в первую очередь создаю собственную библиотеку из функциональных блоков по максимуму покрытые всевозможными тестами. И как из конструктора LEGO собираю свои проекты. И никакие NDA не запретят мне применять мою же библиотеку.

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

0
Угу, поэтому ник такой?
0

Как раз за 10 лет и успеешь закончить писать код со всей этой хуйней.

раскрыть ветку 8
+15

Понимаешь, тут есть такая фишка, что если в моем коде будет ошибка - то например могут погибнуть люди.

Например сработает система газового пожаротушения, когда люди будут в помещении.

раскрыть ветку 7
-11

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

раскрыть ветку 3
+12

Ну у меня цена ошибки слишком высока. Надо быть педантичным. Иначе никак.

раскрыть ветку 2
ещё комментарии
+4

++

Надо максимально комментировать и не бояться на каждую мелкую херню заводить аккуратный класс.

Да, и не надо бояться ГИТ-а и документации, даже если ты делаешь что-либо в одиночку.

раскрыть ветку 14
+6

ладно. вопрос за 1400.
Зачем написан этот костыль?

P.s. и нет, комментарии не помогут. Комменты объясняют что делает костыль, а не зачем он создан.

раскрыть ветку 10
+22
Костыль сделан для того, чтобы предыдущий костыль работал. Первичный костыль появился от воплей шефа. Еще вопросы?
+3
Где то видел коммент в стиле "Хуй его почему, но без этого не работает такая то хрень"
+2

Вообще, как по мне, комменты и нужны для таких случаев, когда не очевидно зачем это было написано. А просто комментировать "этот код делает то-то" бессмысленно - это и так можно понять из названия метода (если нормально именовать)

+1

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

раскрыть ветку 3
0

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

0
Ещё сложнее, когда пытаешься понять это реально ошибка в коде и в чем был реальный смысл этой строки с ошибкой.
0
Очевидно. Ибо нормально не смог/ было лень
-1

А если пишешь на скале функциональненько, то тоже на каждый чих классы делать, хотя это противоречит принципам?

Вот не надо таких безальтернативных заявлений.

-1

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

раскрыть ветку 1
0

Опять же не во всех ЯП есть чистые функции и переменные сами по себе, очень часто они идут лишь как методы класса, так что тоже не получится "держать все в одном месте".

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

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

+2

Кстати, это Андрей Жданов. Умер год назад.

раскрыть ветку 2
0

И он был журналистом

раскрыть ветку 1
0

и жена его самоубилась.

+1
Да, помню накодишь, а потом не помнишь что накодил
раскрыть ветку 1
+6

Так ты и появилась.

+1

будни быдлокодеров?

писать надо нормально, как будто для последнего идиота. и тогда и через 5 лет всё понятно.

раскрыть ветку 5
+3

Ну классика же! Пока Петя пишет идеальный код, Вася пишет говнокод. Вася сдал свой код в продакшн, Петя пишет код. Вася заработал деньги, Петя пишет код.

раскрыть ветку 4
0

Потом Васе приходит багрепорт и он чинит свой код ещё столько же, а Петя сдал код в прод и забыл, и даже если будет баг - поправит за 10 минут

раскрыть ветку 2
0

Очень асимптотический вариат шутки про time to market.

0
Иллюстрация к комментарию
Иллюстрация к комментарию
0

Шутки шутками, а данного игрока звали Андрей Жданов. Жаль, что мало кто его знает. Чуть больше года назад он покинул сей бренный мир...

0

В такие моменты задумываюсь - когда ложишься спать, просыпаешься тем же самым человеком, или совершенно другим, но с той же памятью?

раскрыть ветку 1
+1

Блин. Этот вопрос меня с дества мучает. Один из дестких страхов что проснется уже другой человек. Найдете ответ -отишитесь тут=)

0

Раз вопрос по коду возник только через 2 года, то ответ прост - он работает. А бага в другом месте.

раскрыть ветку 1
0

Да не факт что баг. Может понадобилось доработку сделать, а без понимания как тот или иной кусок кода работает будет печально.

0

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

раскрыть ветку 2
+1

ага, и именно такой подход описан в "Совершенном коде" Макконнелла  :). Только нафиг все это надо, если нормальный код и так читается как обычный текст.

0

ну для этого нужно "думать" на яп, а не через ctrl+T, ctrl+W писать код )

0
Написаный два месяца назад по пьяни.
0
"он делает вид, что работает"
прям как я
0
Черт, для меня уже через неделю после написания кода - эта проблема актуальна)
0

Расскажите что ваш кот делает дома пока вы на работе.

0

Да не вопрос. Показывайте.

раскрыть ветку 3
+4
Иллюстрация к комментарию
раскрыть ветку 2
+3
раскрыть ветку 1
-2
Этот игрок покончил с собой не так давно.
раскрыть ветку 2
0

Судя по многим уликам, это было очень не похоже на самоубийство.

раскрыть ветку 1
0

Возможно, я подробностей не знаю.

-4

Децл так быстро постарел?

Иллюстрация к комментарию
-11

Да блин, а камменты на что? )))

раскрыть ветку 4
+4