Как стать автором
Обновить
0.66

Говнокод

Код, за который должно быть стыдно

Сначала показывать
Порог рейтинга
Уровень сложности

Говнокод: врага надо знать в лицо

Время на прочтение4 мин
Количество просмотров56K


Все примерно представляют, что такое говнокод. На этом замечательном сайте собрана целая коллекция.

Что делает код говнокодом — никто точно не знает. Точного определения нет. Часто то, что одни считают очевидным говнокодом, другим кажется лаконичным и эффективным решением.

Примеры


Примеры говнокода варьируются от избыточных до откровенного хардкода. Самые любмые примеры — такие, говнокодистость которых очевидна для всех:
Boolean b = new Boolean( is_admin );
if( b.toString().length() == 4 ) {
   // something...
}
// something


Но знаете, что я скажу? Осуждать говнокод легко, но написать его не так-то легко!
Не верите? Давайте попробуем!

UPD Ниже добавлен анализ поступивших решений.

Вот простое задание

Система частиц на PHP в 3D

Время на прочтение5 мин
Количество просмотров5.1K
С детства есть у меня заветная программерская мечта — написать физический движок. Как и положено мечте, я к ней никогда близко не подходил. Но однажды выдалась пара ночей, когда я должен был дежурить в помещении, и у меня с собой был ноутбук.
В общем, взялся я моделировать движение и столкновение частиц на PHP. Почему на PHP? Потому что это единственный язык, на котором я могу свободно излагать свои программерские мысли. В общем, сначала координаты выводились в консоли, потом стал делать графические снимки. Немедленно появилась мысль генерировать анимацию…
image

Погуглив, я...

По колено в г… коде

Время на прочтение2 мин
Количество просмотров9.9K
по колено в Си++
Я по роду своей деятельности много и часто медитирую над разнообразнейшим C++ кодом. И, как говорится, у меня накопилось. Не могу больше нести это в себе. Извините, сейчас и с вами поделюсь.

Читать дальше →

Assword

Время на прочтение1 мин
Количество просмотров1.8K
Один из самых восхитительных примеров кода, который я когда-либо встречал.
Как сказано в комментарии, этот код пытается найти в строке подстроку «Nothing», «Successful», «Password» или «Failed», причём регистр первой буквы неважен.

protected void parseSummaryLines()
{
   ...

   // NOTE: First letters are ommited in order to
   // support capitalized words as well
   String RESULT_GOOD_TEXT_1 = "othing"; // Nothing
   String RESULT_GOOD_TEXT_2 = "uccessful"; // Successful
   String RESULT_BAD_TEXT_1 = "assword"; // Password
   String RESULT_BAD_TEXT_2 = "failed"; // Failed

   ...
}


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

Но в любом случае, получившееся в результате «Жопослово» — это шедевр…

Установка лимита времени выполнения скрипта

Время на прочтение1 мин
Количество просмотров2K
//This is an optimization. We assume than no step can take more than one year.
if($time_limit > 0)
$end_time = time() + $time_limit;
else
$end_time = time() + 365*24*3600; // One year


Взято из 1С-Битрикс (из класса разбора CommerceML).

Феерические архитектурные подходы или Javascript наше всё

Время на прочтение4 мин
Количество просмотров1.7K
Моё кунфу сильнее, сказал Вася и продолжил дописывать замечательный сайт.
Раскрыть тайный смысл сайтостроения

Обнови свой браузер!

Время на прочтение1 мин
Количество просмотров865
Решил поинтересоваться у Яндекса как определить браузер посетителя (на PHP).
Вторая ссылка привела на «замечательный» пример скрипта.

<?
//Для начала назначаем переменные

.if(eregi("opera",$HTTP_USER_AGENT))// Если у тебя Опера, то переменная $browse = OP
$browser = "OP";

else if(eregi("msie",$HTTP_USER_AGENT))// Если у тебя MSIE, то переменная $browse = IE
$browser = "IE";

else if(eregi("Mozilla.[4.]",$HTTP_USER_AGENT))
$browser = "NS";

else if(eregi("Mozilla.[5|6]",$HTTP_USER_AGENT))
$browser = "MO";
else // если что-то другое , то OT
$browser = "OT";
?>
//Все . Закончили с определением. Мы уже знаем какой у тебя браузер. Теперь выведеминфу о тебе.

<? if ($browser=="IE") {
echo "Internet Explorer";//Если ie, то пишет Internet Explorer
}
if ($browser=="OP") {
echo "Opera!
Обнови свой броузер и перестань морочить голову дизайнерам всякой межбраузерностью!
";
}
if ($browser=="NS") {
echo "Netscape!
Обнови свой броузер и перестань морочить голову дизайнерам всякой межбраузерностью!
";
}
if ($browser=="MO") {
echo "Mozilla! Обнови свой броузер и перестань морочить голову дизайнерам всякой межбраузерностью!";
}
if ($browser=="OT") {
echo "А что у вас за Browser?";//если OT то пишет ...
}
?>


Обнови свой броузер!

источник

Дыры в форуме NetCat

Время на прочтение1 мин
Количество просмотров2.8K
Вы наверное уже слышали о CMS Netcat и даже видели кое-какие примеры кода этой CMS.

С тех пор ребята пообещали исправится и, кроме прочего, год назад пообещали выпустить новый форум через пол года. Воз и ныне там.

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

Вот я и решил поделиться этим багом.

1) Заходим в любую ветку форума, пусть для определенности будет эта.
1,5) Если вы залогинены, нужно выйти
2) Нажимаем Ответ
3) Вводим в поле «Имя пользователя» число.

Все!

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

Можно представить, какой бардак творится в коде у системы.

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

Правильное сглаживание шрифтов в ACID3

Время на прочтение1 мин
Количество просмотров825
Не знаю, может кто уже видел, но меня очень удивило:

Make the Ahem font antialias correctly on Acid3

String nameStr(fullName.get());
m_allowFontSmoothing = (nameStr != "Ahem");


Не ожидал такого от WebKit =(
Ссылка на commit

За что я «люблю» PHP или переназначение переменных)

Время на прочтение1 мин
Количество просмотров1.9K
  1. if(is_numeric($email) && !empty($email)){
  2.     $email = $this->query("SELECT email FROM users WHERE id=".$email);
  3.     if($email && mysql_num_rows($email)>0){
  4.         $email = mysql_fetch_row($email);
  5.     $email = $email[0];
  6.     }
  7. }

Очередной перл выданный индусами.

Время на прочтение1 мин
Количество просмотров3K
Попался мне код, писанный одним индусом, а если точнее то мне было лень проверять в C# является ли строка числом с помощью метода TryParse и я решил посмотреть есть ли более «короткий» способ. вот на что я наткнулся

for (int i=0; i<this.textbox1.text.length; i++)
{
  if (char.IsDigit(this.textbox1.text[i])==false)
    // give any error
}


* This source code was highlighted with Source Code Highlighter.


Я конечно понимаю, что это «оптимизированный» метод на основе Replace, но всё равно забавно :).

Ближайшие события

Причины и следствия

Время на прочтение3 мин
Количество просмотров1.2K
Здесь я хочу поделиться с вами тремя примерами неадекватного кода. И в то же время постараюсь разобрать и классифицировать каждый случай. Тем самым расскажу не только «что такое плохо?», но и «почему?»

Читать дальше →

Rss grabber для DLE жжот

Время на прочтение1 мин
Количество просмотров3.6K
Вот такой интересный код можно встретить в HttpClient'e Rss Grabber'а для DLE

while (true)
{
$this->errormsg = 'Connection failed (' . $errno . ')';
$this->errormsg .= ' ' . $errstr;
$this->debug ($this->errormsg);
if (true)
{
return false;
}
}


мне так и не удалось разгадать тайный смысл этого инопланетного послания .))

Индусские програмисты

Время на прочтение1 мин
Количество просмотров21K
Говорят что программистам из Индии деньги платят за количество строчек кода которые они написали(редко обращая внимание на качество).
Вот пример одной из конструкций:
if ($x == 0) {
// Do 1....
}
elseif ($x!=0) {
// Do 2.....
}
else {
//
// А вот здесь чистые деньги :)
//
}



P.S. В каждой шутке есть дуля шутки.

Введите код, изображенный на картинке

Время на прочтение1 мин
Количество просмотров4.7K
Наткнулся на интересную реализацию капчи.
По привычке стал дергать картинку курсором в опере, каково же было удивление когда изображение оказалось текстом.


Ссылка попала в руки по наводке Alert.

Заглянем в CMS NetCat?

Время на прочтение1 мин
Количество просмотров16K
Вам нравится NetCat? Нам с NickMitin тоже — его реализация достойна призовых мест в шитпараде.

Посмотрим что внутри?
if ($f_Checked && $admin_mode)
{
$IsChecked = $f_Checked + 0;
}

WTF?!..

Хочу еще бреда!

Валидный код

Время на прочтение1 мин
Количество просмотров1.1K
1.
string[] strs = new List<string>().ToArray();* This source code was highlighted with Source Code Highlighter.


2.
class MyClass
{
   int a;
   public MyClass(int a)
   {
      try
      {
         this.a = a;
      }
      catch (Exception ex)
      {
         logger.Error(ex);
      }
   }
}
* This source code was highlighted with Source Code Highlighter.