По каким критериям вы определяете что над кодом работал говнокодер?
Собственно немного флейма, с вопросом связанным с говнокодорством. Как вы определяете кто писал, профи или говнокодер?
Вот мои некоторые способы определения: 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, время: 13:53. |