Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   По каким критериям вы определяете что над кодом работал говнокодер? (https://javascript.ru/forum/offtopic/25524-po-kakim-kriteriyam-vy-opredelyaete-chto-nad-kodom-rabotal-govnokoder.html)

devote 08.02.2012 00:13

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

Вот мои некоторые способы определения:
1. Использование коротких открывающмх тегов в PHP
<?
вместо
<?php
Хоть это и не особо считается определением говнокодерства, но не знание недостатков точно им не известно. Почему не рекомендуется юзать short_open_tag можно прочесть например тут

2. Далее отсутствие табуляций в блоках конструкций. ( сплошной код )

3. Использование внутри HTML конструкции вида:
<span<?if($bla=='test'){?>tratata<?}?>>
Это уродство совершенно не читаемое. А иногда видны и такие уродства:
<div><?if($blah){?>
    <div>tratata</div>
<?}?></div>
Ужастно сложно читать такое говнище. Не понимаю для кого говнокодеры так пишу, мучатся в этом говне самим же. Ну если уж очень нужно выполнить исключение более читаемо будет так:
<div>
<?php
    if ( $blah ) {
?>
    <div>tratata</div>
<?php
    }
?>
</div>

4. Смешивание большого количества одного языка с другим в одном файле. ( частый случай это смешивание PHP+HTML либо JavaScript+HTML )

5. Отсутствие пробелов в конструкицях:
$a+$b;
if($a=='b'){}
$a=trim($b);
// и т.д.

6. Отсутствие скобок блоков в конструкицях
if ($a) $b=2;
// или часто так пишут:
if ($a)
$b=2;

7. Использование Delphi подобных конструкций в PHP типа:
if ( $a == 1 and $b == 2 )
// или
if ( $a == 1 or $b == 2 )

8. Использование подобных конструкций:
$data=str_replace('[name]',$name,$data);
$data=str_replace('[email]',$email,$data);
$data=str_replace('[phone]',$phone,$data);
$data=str_replace('[patient]',$patient,$data);
$data=str_replace('[insurance]',$insurance,$data);
$data=str_replace('[date_birth]',$date_birth,$data);
$data=str_replace('[date1]',$date1,$data);
$data=str_replace('[date2]',$date2,$data);
$data=str_replace('[date3]',$date3,$data);
$data=str_replace('[time1]',$time1,$data);
$data=str_replace('[time2]',$time2,$data);
$data=str_replace('[time3]',$time3,$data);
$data=str_replace('[location]',$location,$data);

9. Использование переменных вида:
aaaa = 10;
zz = 13;
aaaaa = zzzzz;
qweqwe = 123;

Ну и еще десятки неприятных вещей которых делать не нужно.

PS. Я не пытаюсь кого-то обвинить в том что он говнокодер, но все что описано выше делать не стоит, с таким подходом вас никто не будет ценить, вы никому не будете нужны с такими способами кодирования. Устроившись в какую нить контору вам либо дадут делать работу ламерскую, либо скажут вам что вы не подходите. Помните, в конторах смотрят в первую очередь не на то что вы делаете а на то как вы делаете.

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

FINoM 08.02.2012 03:25

Терпеть не могу короткие переменные, не отражающие сути.
t = 4;
a = 'blabla';
k = e * 5;
b = t + k - 54;
с = j;

Уж лучше
dataContainerOuterWidth,
headerAdAnimateDuration ...

devote 08.02.2012 04:07

Цитата:

Сообщение от FINoM
Терпеть не могу короткие переменные, не отражающие сути.

Только в случае избыточности от них болит голова. Применение их в конструкциях типа:
for(var i = 0; i < 10; i++ ) {
}
вполне рационально, но в примере что привел FINoM, это избыточно и уродливо.

devote 08.02.2012 04:14

Цитата:

Сообщение от javascriptTZcss
ну там не только синтаксис как вы привели

А я что развел отридцал этого чтоль? Если уж говорить о правильности написания, то как правило в большинстве случаев вообще не пытаются толком задумываться о проверке существования переменных, проверки ошибок и т.п. ( мол типо PHP все за них исправит )

Цитата:

Сообщение от javascriptTZcss
но важен результат, вам же все равно как канкулятор написан, работает и ладно.

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

Цитата:

Сообщение от javascriptTZcss
если говорить о серьезном п.о то там гавнокодеры не кружатся

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

devote 08.02.2012 04:16

Цитата:

Сообщение от javascriptTZcss
уж тут я вас огорчу, тут так пишут как раз профессиональные кодеры.

ткни пальцем а?

devote 08.02.2012 04:22

Цитата:

Сообщение от javascriptTZcss
if(true)
echo$true;

Это что? покажи мне тех профи о которых говоришь. А кусок кода мне ни о чем не говорит.

devote 08.02.2012 04:23

Цитата:

Сообщение от javascriptTZcss
вы думаете у мен лругих дел нехватает как вот тут писюльки раскрашивать?

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

devote 08.02.2012 04:25

Цитата:

Сообщение от javascriptTZcss
разработчики facebook и se так пишут

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

devote 08.02.2012 04:27

Цитата:

Сообщение от javascriptTZcss
взаимно ненравится код - платите

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

devote 08.02.2012 04:30

Цитата:

Сообщение от javascriptTZcss
мораль в том что это не г-код а ваши нзнания коротких путей

:haha:

Ага, ну пи*дец буду сидеть учить как правильно писать обфусцированный код :D Вы сами то поняли что написали то?

FINoM 08.02.2012 04:32

Немо детектед.

devote 08.02.2012 04:38

Цитата:

Сообщение от javascriptTZcss
используйте netBeans или phpstorm вкачестве редактора на пхп
они умные анализируют ооп

Именно эти программы и штампуют говнокодеров... Профессиональный прогер использует этот софт лишь ради удобства, начинающий прогер используя подобный софт становиться говнокодером. Потому что вся эта раскраска кода приводит хоть к какой-то читаемости кода. От того и не видят своих недостатков. А открыв код в vi или mc или far в этом говне черт ногу сломит.

FINoM 08.02.2012 04:41

Цитата:

Уважаемый(ая) FINoM,

Javascript-форум информирует Вас, что Вы получили новое личное сообщение на Javascript-форум от javascriptTZcss с заголовком "укекуеуе".

Чтобы прочитать сообщение в оригинале, ответить и/или удалить сообщение, Вам следует пройти по данной ссылке:
http://javascript.ru/forum/private.php

Вот текст отправленного сообщения:
***************
дай скайп или асю дружок
***************
Мне стало сцыкотно. Особенно из-за заголовка. Немо детектед 2.

devote 08.02.2012 04:44

вот так я вижу весь этот говнокод:

monolithed 08.02.2012 08:54

Цитата:

Сообщение от devote
вот так я вижу весь этот говнокод:

может стоит сменить редактор? :)

У Python программистов есть несколько бзиков на эту тему. Приведу несколько, за которые вас назовут говнокодером:

1. Если используется символ возврата каретки (;)
2. Если используются закрытые (private) члены класса
3. Если вместо функции используется класс (Классы исполняются только теми кто познал истину "Дзен", как-правило на это имеют право только серьезные или имеющие большой функционал приложения)
4. Если заместо итераторов используются обычные циклы
5. Если вы проверяете входные аргументы функций или тип объектов
6. __repr__ должен возвращать только серьезные объекты, никаких примитивов
7. Если вычисляется длина строки или объекта на проверку "пусто не пусто"
Т.е. так писать не нужно:
if array.__len()__:
//или так
if len(array):

Нужно так:
if array:

8. Если заместо форматирования строки используется конкатенация:
К примеру что может быть проще:
i = 'foo' + obj + 'bar'

А нет:
i = 'foo%sbar' % (obj)

9. Не помогайте компилятору, он умнее вас

и т.д.

Shaci 08.02.2012 12:23

Цитата:

Сообщение от FINoM (Сообщение 156050)
Мне стало сцыкотно. Особенно из-за заголовка. Немо детектед 2.

да добавь ты его в скайп, не пожалеешь))

Shaci 08.02.2012 12:26

Цитата:

5. Отсутствие пробелов в конструкицях:
1 $a+$b;
2 if($a=='b'){}
3 $a=trim($b);
4 // и т.д.

6. Отсутствие скобок блоков в конструкицях
1 if ($a) $b=2;
2 // или часто так пишут:
3 if ($a)
4 $b=2;
немо(это ведь ты, да? Ж)), первое неприемлимо,
второе - так пишут, я так пишу иногда, но так писать не стоит, т.к.
если захочется добавить что-то в тело оператора и забыть при этом добавить скобки, то может произойти бобо))

melky 08.02.2012 12:48

Цитата:

Сообщение от devote (Сообщение 156002)
3. Использование внутри HTML конструкции вида:
<span<?if($bla=='test'){?>tratata<?}?>>
Это уродство совершенно не читаемое. А иногда видны и такие уродства:
<div><?if($blah){?>
    <div>tratata</div>
<?}?></div>
Ужастно сложно читать такое говнище. Не понимаю для кого говнокодеры так пишу, мучатся в этом говне самим же. Ну если уж очень нужно выполнить исключение более читаемо будет так:
<div>
<?php
    if ( $blah ) {
?>
    <div>tratata</div>
<?php
    }
?>
</div>

[b]

Разве не для этого ли используют альтернативный синтаксис ?
<?php if ( $blah ): ?>

    <div>tratata</div>

<?php elseif( $blah_another ): ?>

    <div>tralala</div>

<?php else: ?>

    <div>залогиньтесь</div>

<?php endif; ?>

monolithed 08.02.2012 13:03

Цитата:

Сообщение от melky
Разве не для этого ли используют альтернативный синтаксис ?

А что это кардинально меняет?

DreamTheater 08.02.2012 15:34

http://govnokod.ru/javascript

Gozar 08.02.2012 16:55

Ничего вы не видели, если вас смущают такие пустяки. Это не говнокод, это просто автор ещё зелен и не знает как писать хорошо, а как плохо.

Настоящий говнокод это когда пишут мегабайты кода, а потом их дописать или изменить нельзя после того, как ещё один "автор" приложит к ним руку. Когда действительно проще отказаться от работы.

Настоящий говнокод я видел всего один раз и средний говнокод тоже один раз.

Пример:
1. Использование бессистемного или слабо систематиированного подхода в названии шаблонов и их расположении. Шаблоны могут быть при этом тоже хитросамопильные.

2. Использование сложных структур, где требуется простой подход.
Куча includ-ов с разнесением кучи конфигов.

3. Написание своего интерфейса в процедурном стиле для работы с базой(встретил один такой) . Зачем?!

Мелкие недочёты с короткими переменными или смешанный код не так портят настроение, как "фиг поймешь чё где - автор был пьян, когда писал и сам не помнит".

devote 08.02.2012 23:08

Цитата:

Сообщение от monolithed
может стоит сменить редактор?

Спасибо за предложение, но пока привык я к этому =) Другие меня замедляют почему-то. Да и к редакторам привыкнешь к этим их фишкам, потом жить без них тяжко будет.
Цитата:

Сообщение от monolithed
У Python программистов есть несколько бзиков на эту тему. Приведу несколько, за которые вас назовут говнокодером:

Ну да, ну тут мы говорим о веб-программинге.. А фитон не особо к ним относится.
Цитата:

Сообщение от melky
Разве не для этого ли используют альтернативный синтаксис ?

Используют, но вот он мне что-то не подошел по душе... Как то не мое, и всеравно кажется отвратительным ИМХО
Цитата:

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

Согласен
Цитата:

Сообщение от Gozar
Настоящий говнокод это когда пишут мегабайты кода, а потом их дописать или изменить нельзя после того, как ещё один "автор" приложит к ним руку. Когда действительно проще отказаться от работы.

Не спорю, могу показать такие проекты... Там не то что говнокод, там логики нет никакой.

Gozar 08.02.2012 23:55

Цитата:

Сообщение от devote (Сообщение 156226)
к редакторам привыкнешь к этим их фишкам, потом жить без них тяжко будет.

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

У каждого свои представления о клавиатуре.
Фотка в тему:

devote 08.02.2012 23:59

Цитата:

Сообщение от Gozar
Фотка в тему:

ахах.... жесть! :)

Duda.Ml1986@gmail.com 21.02.2012 10:36

мне не так часто попадает в руки чужой код , но если наблюдать в живом времени то:
копировать / вставить с помощью мышки (да, такие еще остались), но тут скорее не говно кодер, а лоукоодер

Bandicoot 08.07.2013 23:22

7-й пункт чем именно так плох?

cyber 09.07.2013 09:57

вот что такое говнокод
if (window.IsLocking !== window[Math.random()])
// или

if (window.IsLocking !== [].xxx)

или еще вот так
function calculateRow(element) {
            var qty = element.val();
            var price = element.parent().next().next().children().text();
            var total = (qty * price).toFixed(2);
            $(element).parent().next().next().next().children().first().text(total);
        }


Часовой пояс GMT +3, время: 13:53.