По каким критериям вы определяете что над кодом работал говнокодер?
Собственно немного флейма, с вопросом связанным с говнокодорством. Как вы определяете кто писал, профи или говнокодер?
Вот мои некоторые способы определения: 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. Те кому есть еще что добавить пишите. Тема будет в целях обучения как нужно НЕ делать. Отписал это все от злости, так как сижу ковыряю подобный говнокод и трачу нервы. |
Терпеть не могу короткие переменные, не отражающие сути.
t = 4; a = 'blabla'; k = e * 5; b = t + k - 54; с = j; Уж лучше dataContainerOuterWidth, headerAdAnimateDuration ... |
Цитата:
for(var i = 0; i < 10; i++ ) {
}
вполне рационально, но в примере что привел FINoM, это избыточно и уродливо. |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Ага, ну пи*дец буду сидеть учить как правильно писать обфусцированный код :D Вы сами то поняли что написали то? |
Немо детектед.
|
Цитата:
|
Цитата:
|
вот так я вижу весь этот говнокод:
![]() |
Цитата:
У 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. Не помогайте компилятору, он умнее вас и т.д. |
Цитата:
|
Цитата:
второе - так пишут, я так пишу иногда, но так писать не стоит, т.к. если захочется добавить что-то в тело оператора и забыть при этом добавить скобки, то может произойти бобо)) |
Цитата:
<?php if ( $blah ): ?>
<div>tratata</div>
<?php elseif( $blah_another ): ?>
<div>tralala</div>
<?php else: ?>
<div>залогиньтесь</div>
<?php endif; ?>
|
Цитата:
|
|
Ничего вы не видели, если вас смущают такие пустяки. Это не говнокод, это просто автор ещё зелен и не знает как писать хорошо, а как плохо.
Настоящий говнокод это когда пишут мегабайты кода, а потом их дописать или изменить нельзя после того, как ещё один "автор" приложит к ним руку. Когда действительно проще отказаться от работы. Настоящий говнокод я видел всего один раз и средний говнокод тоже один раз. Пример: 1. Использование бессистемного или слабо систематиированного подхода в названии шаблонов и их расположении. Шаблоны могут быть при этом тоже хитросамопильные. 2. Использование сложных структур, где требуется простой подход. Куча includ-ов с разнесением кучи конфигов. 3. Написание своего интерфейса в процедурном стиле для работы с базой(встретил один такой) . Зачем?! Мелкие недочёты с короткими переменными или смешанный код не так портят настроение, как "фиг поймешь чё где - автор был пьян, когда писал и сам не помнит". |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
У каждого свои представления о клавиатуре. Фотка в тему: ![]() |
Цитата:
|
мне не так часто попадает в руки чужой код , но если наблюдать в живом времени то:
копировать / вставить с помощью мышки (да, такие еще остались), но тут скорее не говно кодер, а лоукоодер |
7-й пункт чем именно так плох?
|
вот что такое говнокод
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, время: 08:04. |