1

Тема: Який код для вас є говнокодом?

У кожного є своє бачення що таке говнокод і при тому не одне.

Наприклад, дещо що в embedded вважаю нормально в промислових системах автоматизації вважають проявом говнокоду, те що в embedded вважаю говнокодом на пк вважаю норма, аналогічно для embedded вважаю говнокодом на android вважаю нормою і т.д. Тому не очікую, що тлумачення буде єдиним, але хотілося би знати у кого є які і чому так.

Подякували: 221VOLT1

2

Re: Який код для вас є говнокодом?

Загалом гівнокод - це код, який складно підтримувати.
А конкретні критерії - то вже деталі.

3

Re: Який код для вас є говнокодом?

Гівнокод - це будь який код, який не є моїм.

Подякували: 221VOLT, karmeljuk2

4

Re: Який код для вас є говнокодом?

VTrim написав:

Гівнокод - це будь який код, який не є моїм.

Знайдіть код, що ви писали 5 років тому.

Подякували: Eff1c, leofun01, 221VOLT, flatliner, ping, ReAl, ostap34PHP7

5

Re: Який код для вас є говнокодом?

koala написав:
VTrim написав:

Гівнокод - це будь який код, який не є моїм.

Знайдіть код, що ви писали 5 років тому.

Та я можу й 2річної витримки знайти, рівно стільки я нічого не пишу.

Подякували: 221VOLT1

6

Re: Який код для вас є говнокодом?

imho говнокод --
такий код, де все вперемішку --
html, css, js, php, sql-запити...
при цьому ще вперемішку різні стилі написання, таби з пробілами,
а також вперемішку код для різних версій php...

до цього ще можна додати купу jQ скриптів, з підключенням декількох версії jQuery на одній сторінці,
а також купа зайвих ооп-абстракцій, різних класів і всякої маячні там, де це взагалі не потрібно

і це все може зустрічатись разом в одному проекті!
Аве!

Подякували: leofun011

7

Re: Який код для вас є говнокодом?

VTrim написав:
koala написав:
VTrim написав:

Гівнокод - це будь який код, який не є моїм.

Знайдіть код, що ви писали 5 років тому.

Та я можу й 2річної витримки знайти, рівно стільки я нічого не пишу.

Чого покинули?

8

Re: Який код для вас є говнокодом?

HetmanNet написав:
VTrim написав:
koala написав:

Знайдіть код, що ви писали 5 років тому.

Та я можу й 2річної витримки знайти, рівно стільки я нічого не пишу.

Чого покинули?

Був переломний момент, можливо навіть на краще.
Скажу, що якийсь ентузіазм щодо програмування заради програмування я втратив точно. Намагався щось писати, але розумів, що більш безглуздішого заняття просто не знайти  :D

Подякували: 221VOLT1

9

Re: Який код для вас є говнокодом?

221VOLT написав:

imho говнокод --
такий код, де все вперемішку --
html, css, js, php, sql-запити...
при цьому ще вперемішку різні стилі написання, таби з пробілами,
а також вперемішку код для різних версій php...

до цього ще можна додати купу jQ скриптів, з підключенням декількох версії jQuery на одній сторінці,
а також купа зайвих ооп-абстракцій, різних класів і всякої маячні там, де це взагалі не потрібно

і це все може зустрічатись разом в одному проекті!
Аве!

Ви зараз перерахували купу різних ознак гівнокоду. Але ж далеко не факт, що код, який цьому не відповідає, буде адекватниним. Візьміть ідеальний код, автоматично мініфікуйте і вирівняйте. Код буде задовільняти всім вашим вимогам, але навряд чи ви що з цими a,b,c,d,....,y,z,a1,a2,... розберете.
Я вже не кажу, що є інші мови програмування, на яких описане вами просто неможливе. А гівнокод - можливий.

10

Re: Який код для вас є говнокодом?

Спробую викласти власні ознаки гівнокоду; але ще раз, це лише випливає з визначення, див. вище.
1. Помилки вирівнювання, суміш пробілів та табів, кілька дій в одному рядку.
2. Недостатні коментарі, зайві коментарі, незрозумілі коментарі, закоментовані рядки в комітах.
3. Незрозумілі назви ідентифікаторів, закороткі, задовгі, неоднорідні.

int some_variable, OtherVariable, x3, integer, one_MoreVariable;

4. Неоднорідна поведінка керівних конструкцій (кілька break і continue всередині складних умов у циклі, половина умов на параметри обробляється на початку функції, друга половина - в else наприкінці; goto, крім найочевидніших ситуацій; варіанти switch не за порядком).
5. Надмірність (зайві залежності; додатковий клас там, де можна використати стандартний чи просто функцію; переускладнений алгоритм; зловживання copy-paste). Коротше, порушення DRY, KISS, YAGNI.

Подякували: 221VOLT, leofun01, ostap34PHP3

11

Re: Який код для вас є говнокодом?

І так, я подекуди порушую чи не всі ці правила. Мене звати Павло, і я гівнокодер (хор: привіт, Павле!)

Подякували: 221VOLT, leofun01, HetmanNet, ostap34PHP4

12 Востаннє редагувалося 221VOLT (07.11.2019 01:18:27)

Re: Який код для вас є говнокодом?

koala написав:

Ви зараз перерахували купу різних ознак гівнокоду. Але ж далеко не факт, що код, який цьому не відповідає, буде адекватниним. Візьміть ідеальний код, автоматично мініфікуйте і вирівняйте. Код буде задовільняти всім вашим вимогам, але навряд чи ви що з цими a,b,c,d,....,y,z,a1,a2,... розберете.

я відносно часто читаю мініфікований js

з цим також можна мати справу: редагувати,
висмикувати звідти деякий код для власних потреб тощо

це лише на перший погляд у страху очі великі


хоча.. мені декілька разів говорили, що я деколи пишу код, який виглядає, наче після мініфікації  :D

13

Re: Який код для вас є говнокодом?

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

аж доводиться гуглити, щоб у цьому розібратись
https://replace.org.ua/uploads/images/5402/ddc61c3ddf476cc6318dc7ac30d56ea7.png
навскидку -- тут 12 строчок, замість 2х
мінімум на 10 зайвих непотрібних строчок більше ...


я, звичайно, допускаю думку, що десь це справді може бути потрібно --
там, де потрібні різні екземляри зі стейтом, їх взаємодія,
таке ж, як взаємодія окремих процесів в erlang,

та у випадку лінійного ! однопоточного ! коду
(тут саме так -- випадок з браузеркою на php, і без вебсокетів, де вся взаємодія йде лише через базу даних) --
ці всі численні тисячі строчок ооп треба викинути,
замінивши декількома сотнями рядків простих функцій

жах)

14

Re: Який код для вас є говнокодом?

Щодо DRY - я і мої колеги іноді свідомо порушують цей принцип, коли є бажання чітко розділити певні кейси і вмістити весь код, що належить одному кейсу в одне місце, не залежно від того, чи буде той самий код в інших кейсах. Якось так.

Подякували: 221VOLT, leofun012

15

Re: Який код для вас є говнокодом?

ось дають завдання - пофіксити якусь багу.

ми відкриваємо чужий код, який ні разу не бачили і знаємо що він робить в загальному.

три речі, які оцінюються найперше:
1. наявність документації (хоча б readme на сторінку), юніт-тестів
2. структура коду - нам треба в'їхати - який блок робить/не_робить те, що приводить до баги
3. назви змінних, об'єктів, класів, методів, функцій, модулів, пакетів,... - хороші назви самопояснюють своє призначення

Подякували: leofun01, flatliner2

16 Востаннє редагувалося reverse2500 (07.11.2019 14:33:48)

Re: Який код для вас є говнокодом?

тут проблема не в бидлокоді та чи embedded
для вбудованих систем важко сказати чи буде там бібліотека stdio.h, stdlib.h, тому пишуть в embedded

if((a == y) ... (a == Y)) { ....

в програмуванні ПК

if(strcmpy(a) ....

уже з функціями стандартних бібліотек, але препроцесор ніхто не відміняв з компіляцією для прикладу -DEMBEDDED чи -DOSYSTEM

17

Re: Який код для вас є говнокодом?

koala написав:
VTrim написав:

Гівнокод - це будь який код, який не є моїм.

Знайдіть код, що ви писали 5 років тому.

Не можна двічі зайти в одну річку.
«я» навіть пів року тому —  це не той «я», що зараз. Хоча дещо спільне є.
А «мій» код навіть дворічної давності — писав не «я-нинішній».
То 5-річної давності то вже ще той говнокод (і говносхеми, і говноплати) :(

Подякували: 221VOLT, leofun01, ostap34PHP3

18

Re: Який код для вас є говнокодом?

reverse2500 написав:
if((a == y) && (a == Y)) { ....

:D

Подякували: koala1

19

Re: Який код для вас є говнокодом?

Я зрозумів, що хотів написати пан reverse2500, але краще все ж таки виправити. Бо таки гівнокод...

Подякували: 221VOLT1

20 Востаннє редагувалося wander (07.11.2019 11:56:51)

Re: Який код для вас є говнокодом?

Який код для вас є говнокодом?

>

Прихований текст

https://i.gyazo.com/543e7d0ae6071da9b02a0f50affe1dda.png

Подякували: 221VOLT1