LINUX.ORG.RU

от него тянет блевать

wxw ★★★★★
()

см. книги по антипаттернам

stevejobs ★★★★☆
()

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

stevejobs ★★★★☆
()

Статические анализаторы довольно неплохо ищут говнокод, если только его автор специально не подстраивался под тот-же самый анализатор

maxcom ★★★★★
()

Увидеть, что широко используются:
— Глобальные переменные
— Копипаста (много идентичных мест)
— Отсутствие структурного форматирования
— Огромные простыни кода на один файл
— Функции, большие, чем десяток-полтора строк
— Высокая вложенность if'ов или очень длинные блоки в них
— Инициализация констант в теле цикла
— Побайтовое небуферизированное чтение файлов
— Синхронность в интерфейсе пользователя
— Игнорирование предупреждений трансляторов

Ну, где-то так :)

KRoN73 ★★★★★
()

С ходу могу придумать вот что:

  1. Незнание switch и других важных синтаксических конструкций языка
  2. использование велосипедов вместо стандартных классов
  3. повсеместное использование неэффективных алгоритмов, вроде сортировки пузырьком
  4. дублирование кода
  5. обилие глобальных переменных и публичных методов классов
  6. интуитивно сложные межмодульные взаимодействия
  7. отсутствие комментариев, либо комментарии, не дающие представления о коде.
  8. переменные, по имени которых непонятен их уровнь значимости и назначение в коде.
  9. Отсутствие «защиты от дурака», наличие спорных в плане безопасности моментов.
  10. Заточенность под конкретный компилятор, систему и т.п.
Sadler ★★★
()
Ответ на: комментарий от Deleted

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

Deleted
()

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

baverman ★★★
()
Ответ на: комментарий от baverman

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

+1.

SteveBallmer
()
Ответ на: комментарий от KRoN73

>— Побайтовое небуферизированное чтение файлов

Чтобы сделать чтение из файла действительно побайтовым небуферизованным, знаний нужно больше, чем юзать банальный fgetc().

yoghurt ★★★★★
()

от себя могу добавить:

  • отсутствие четкой структуры
  • запутанные отношения между объектами
  • смешивание состояний и поведения разной природы в одном объекте
  • высокая связность
  • неоправданные сайд-эффекты методов
yoghurt ★★★★★
()
Ответ на: комментарий от KRoN73

> Побайтовое небуферизированное чтение файлов

мы в андроиде юзали побайтовое небуферизованное чтение — собственная небольшая БД, потому что угребищный SQLite как раз буферизирует, и поэтому не справлялся с БД на несколько сотен метров :)

stevejobs ★★★★☆
()
Ответ на: комментарий от SteveBallmer

Это правдиво в отношении 90% программистов с опытом меньше 5 лет

Я бы сказал это вообще правдиво в 50% :(

true_admin ★★★★★
()

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

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

то есть, все программы на функциональных языках (когда человек 6 часов медетирует на одну строчку, зато это строчка делает столько всего - ого-го!) является говнокодом :))) Буду троллить этим топиком функциональщиков, особенно хаскелистов

stevejobs ★★★★☆
()

Схоронил тред для ненаступания на грабли.

pikwik ★★
()
Ответ на: комментарий от Deleted

>А неясные моменты должны объясняться комментариями.

Поясни, а то у меня плохо с определением неясных моментов. Мне говорили несколько раз, что некоторые очевидные для меня вещи должны комментироваться.

mopsene ★★★
()
Ответ на: комментарий от SteveBallmer

90% программистов с опытом больше 5 лет пишут говнокод, потому что им _уже_ плевать на качество, главное - скорость разработки.

Если код можно переписать с уменьшением размера, пожирания памяти и ресурсов и ускорением - это говнокод.

schizoid ★★★
()
Ответ на: комментарий от true_admin

>Мой критерий говнокода(помимо того что уже указывалось в треде): открываешь и не понимаешь как оно работает. Вообще.

не. Может аффтор гений, а вы иди^Wпросто пьяны :)

Говнокод - это когда аффтор через 5 минут не понимает написанное. :)

drBatty ★★
()
Ответ на: комментарий от stevejobs

>то есть, все программы на функциональных языках (когда человек 6 часов медетирует на одну строчку, зато это строчка делает столько всего - ого-го!) является говнокодом

на С/С++ да. Типичный ЧСХ.

drBatty ★★
()

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

registrant ★★★★★
()
Ответ на: комментарий от registrant

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

Как хорошо, что я сегодня еще ничего не писал.

AlexCones ★★★
() автор топика
Ответ на: комментарий от schizoid

>Если код можно переписать с уменьшением размера, пожирания памяти и ресурсов и ускорением

И потерей гибкости/расширяемости?

yoghurt ★★★★★
()
Ответ на: комментарий от Biga

>>Синхронность в интерфейсе пользователя

Разъясни, пожалуйста.


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

KRoN73 ★★★★★
()
Ответ на: комментарий от schizoid

>Если код можно переписать с уменьшением размера, пожирания памяти и ресурсов и ускорением - это говнокод.

«Любую программу можно сократить на один байт» © примерно, эдак, 40-летней давности.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Черт, я ИМЕННО с таким кодом сейчас и работаю.
От себя еще хочу добавить
- Использование не очевидных конструкций(strcmp-ненависть)
- Использование гигантского количества переменных
- Именование переменных по принципу tmp_some1, tmp_some2, tmp_some3, res, result, presult, dresult и тому подобное(а у меня єто все еще и в пределах одной ф-ции) :)

Jetty ★★★★★
()
Ответ на: комментарий от KRoN73

> «Любую программу можно сократить на один байт» ©

Есть великолепнейший рассказ «как мне не хватало байта». Антипруф.

Biga
()
Ответ на: комментарий от KRoN73

>«Любую программу можно сократить на один байт» © примерно, эдак, 40-летней давности.

Только каждый следующий отвоёванный байт потребует в два раза больше времени.

schizoid ★★★
()
Ответ на: комментарий от yoghurt

>>Если код можно переписать с уменьшением размера, пожирания памяти и ресурсов и ускорением

И потерей гибкости/расширяемости?

/0

schizoid ★★★
()
Ответ на: комментарий от stevejobs

Согласен.

Добавлю ещё переносимость тогда. И читаемость :3

schizoid ★★★
()
Ответ на: комментарий от AlexCones

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

Примеры в C++: много ифов вместо коротенького switch, while вместо for, #include <iostream.h> (вроде как в четвертом gcc уже не поддерживается), struct с кучей функций для работы с ним вместо класса (хотя это не всегда говнокод, но в 99% случаев это именно говнокод), чрезмерное увлечение указателями и особенно указателями на указатели (усугубляется костылями невероятной сложности для сноса неиспользуемых объектов вместо банального подсчета ссылок (не является 100% критерием, т.к. иногда подсчет ссылок неприменим)), использование goto там, где оно не оправданно. К той же серии можно отнести такую банальную штуку, использование «магических чисел».

За большим разнообразием способов создания говнокода на куче языков - на govnokod.ru

Deleted
()
Ответ на: комментарий от KRoN73

> Пользователь жмёт кнопку

И в этом посте они...

Sadler ★★★
()
Ответ на: комментарий от Biga

>Антипруф.

Не-а. Пруф. Автор там сократил же :)

KRoN73 ★★★★★
()
Ответ на: комментарий от AlexCones

> Ряд if`ов вместо switch/case они не покажут.

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

И да, кто-то хотел не писать в talks`ах.


я не виноват:
www.linux.org.ru/forum/linux-org-ru/6802020?cid=7051953

aho
()
Ответ на: комментарий от AlexCones

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

Как хорошо, что я сегодня еще ничего не писал.

телепата не обманешь

registrant ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.