LINUX.ORG.RU

Как не говнокодить?

 ,


0

1

Приветствую!

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


Почему так происходит и как этого избежать

Это не нужно. Нужно, наоборот, чтобы код критиковали. Иначе как ты научишься писать хорошо?

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

Без ЧСВ трудно будет достигать хоть какого-то совершенства.

crutch_master ★★★★★ ()

Для того, чтобы не говнокодить, достаточно просто не писать на Bash. Это просто.

EXL ★★★★★ ()

Следование SOLID решает огромную часть проблем с говнокодом.
Вообще, если перестать херачить код и подумать сначала, то будет ещё лучше.

system-root ★★★★★ ()

Как не говнокодить?

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

А так ревью (другим сотрудником команды) помогает и вообще, если что-то нет необходимости делать - не делать (aka KISS).

И да, здесь суть

SkyMaverick ★★★ ()

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

ilovewindows ★★★★★ ()
  1. Следовать консистентному и оправданному стилю.
  2. Review с вовлеченными людьми.
  3. Опыт.

Вообще, «говнокод» - понятие часто субъективное, поэтому без конкретных претензий - не несущее полезной информации. У каждого планка задрана по разному, еще разная система догм и верований. Обычно особо к коду особо придирается только что выпущенная студентота без опыта но зато с «экстремистскими» взглядами на жизнь и мнением по любому вопросу. Поэтому нужно опираться на конкретику, здравый смысл и кодинг стайл.

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

Участие в чужом проекте, например в разработке Linux, вырабатывает определенную дисциплину и привычку.

Участие в review как своего так и чужого кода так же добавляет необходимый опыт.

slapin ★★★★★ ()

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

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

Примеры типичного говнокодинга обычно включают задачи, которые в любом современном языке уже решены «из коробки»: парсинг csv, xml, json, поиск файлов по вайлдкардам (wildcards) и т.д. и т.п.

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

Почему появляются предъявы к коду, который можно написать лучше? (а ещё лучше - и вовсе не писать?)

и как этого избежать

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

dsxl ()

За любой код, который будет написан сейчас - через полгода уже будет стыдно. И так будет всегда… ))

А вообще, в иудаизме есть хорошая практика критиковать не человека, как такового, а то, что он делает.

Я к чему - не нужно бояться критики. без нее невозможен рост.

debiani ()

ищя

syntax error

натыкаюсь на обсуждения, что это так называемый

govnokod

olelookoe ()

Перед тем, как начать пытаться достичь какой-то цели, нужно поставить вопрос, а зачем её вообще достигать ? Не говнокодидить чтобы что ? Чтобы понравиться вот этому, называющему себя синьёром или ещё как ?

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

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

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

lenin386 ★★★ ()
Последнее исправление: lenin386 (всего исправлений: 1)

Как правило такой код вполне рабочий

И ему вполне позволительно быть говнокодом если разработчик решил что это разумная цена взамен на скорость разработки в данном конкретном случае

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

Иногда бывает так

Но не в большинстве случаев.

dsxl ()
Ответ на: комментарий от vertexua

разумная цена взамен на скорость разработки в данном конкретном случае

Чтобы оценить разумность цены нужно обладать некоторым опытом. В контексте вопроса ТСа опыта, видимо, нет.

dsxl ()

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

buka14 ()
Ответ на: комментарий от D3306

Боюсь, что стану таких же хамлом как и ты.

Да не бойся, не станешь.

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

Не льсти себе, @Nervous, очевидно, искромётно шутит. Чаще всего обвинения в говнокоде оправданные, наверняка, и в твоём случае.

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

WitcherGeralt ★★ ()
Ответ на: комментарий от system-root

А вот и представители карго-культа подъехали.

Бросание бессмысленных аббревиатурок, постулирующих, и так очевидные любому опытному программисту истыны, даже вне рамок ООП, — это высшее мастерство высера. И даже будь оно к месту, подавать солид как панацею просто смешно.

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

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

Говнокод может быть и в усмерть оптимизированным.

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

Товарищ, ненависть, как и любовь - она не за что-то. Она просто.

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

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

Nervous ★★★★★ ()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

У всего есть причина, и у любви, и у ненависти, просто ты не всегда можешь ее сформулировать или даже осмыслить.

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

lenin386 ★★★ ()
Последнее исправление: lenin386 (всего исправлений: 1)

В случае конкретно bash первый шаг прочь от говнокода - это наконец-то прочитать хоть что-то об языке который используешь (кроме очередных «10 команд которые пригодятся каждому») и понять, что это не «странная ухудшенная версия питона», а самостоятельный язык, со своим подходом. И не надо жаловаться, что man bash длинный - буквари по большинству живых ЯП гораздо длинее.

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

Лол, давай без этого агро говна.
Солид это такая же бессмыслица, как и первая сутра Кор’ана - «по кайфу делай по кайфу будет есть жи».
Только ей не следуют. А про опытных быдлокодеров, которым всё очевидно, но в 2021 году мы всё ещё в дерьме - это просто эпик.

system-root ★★★★★ ()

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

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

Ну баш способствует рождению говнокода. Питон в этом смысле гораздо луче, хотя какие-нибудь более строгие языки, вроде C#/Java/Rust лучше. Сишка и кресты нет, они ради скорости много говнокода разрешают писать.

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

Ты когда-нибудь заглядывал в сорцы библиотеки pandas? Я тут глянул и обомлел. То что оно работает, это чудо. То что оно крашится иногда вообще на ровном месте с невнятной ошибкой и краш происходит при определённых фазах пятой луны Сатурна и определённой версии питона+ОС, это норма. То что оно является стандартом в работе с маленькими большими данными, это факт.

peregrine ★★★★★ ()
Ответ на: комментарий от system-root

Только ей не следуют.

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

crutch_master ★★★★★ ()
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от D3306

Bash не годится для хоть сколько-то сложных скриптов, которые делают больше чем for i in *.jpg; do convert $i ${i%jpg}png; done. Правда и админам обычно более сложные скрипты не приходится писать.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от crutch_master

По I на ЛОР-е проще срач развести. Там такой простор для творчества и линукс можно приплести, так как I про зоопарк и увлекаться им тоже чревато.

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

У меня не крашилась. Видимо, удачное сочитание версии питона+ОС и фаз луны. Так что нет, не заглядывал. Ну, допустим, там говнокод внутри. И что теперь делать? Велосипедить?

является стандартом в работе с маленькими большими данными

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

dsxl ()

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

vaddd ★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей