1. Лучший говнокод

    В номинации:
    За время:
  2. JavaScript / Говнокод #17998

    +165

    1. 1
    2. 2
    3. 3
    <% var telString = data.phone.toString(); %>
    <p class="mb0">Phone: <a class="mb0" itemprop="telephone" rel="dofollow"><%= "("+telString[0]+telString[1]+telString[2]+") "+telString[3]+telString[4]+telString[5]+"-"+telString[6]+telString[7]+telString[8]+telString[9] %></a></p>
    <% } %>

    data.phone - телефон в виде "0951112222".
    Нужно привести к виду (095)111-2222.

    vetal, 15 Апреля 2015

    Комментарии (48)
  3. PHP / Говнокод #17820

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    function user_ini() {
    	
    	session_start();
    	dbconnect();
    	if(!isset($_SESSION['id']) && isset($_COOKIE['id'])) {
    		$u_id=security_sql($_COOKIE['id'],32);
    		$id_request = mysql_query("select id from users where uniq_id='$u_id'");
    		if(mysql_num_rows($id_request) == 1) {
    			$id_mass = mysql_fetch_array($id_request);
    			$_SESSION['id'] = $id_mass['id'];
    		}
    		else die("wrong user data");
    	}
    	if(isset($_SESSION['id'])) {
    		mysql_query("UPDATE users SET last_date='".date("Ymd")."'  where id='".$_SESSION['id']."'");
    	}
    }

    инициализируем юзверя

    zombie65536, 18 Марта 2015

    Комментарии (48)
  4. C# / Говнокод #16523

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    var status = true;
                    var name = aspnet_UsersRepository.FindAll().FirstOrDefault(u => u.aspnet_Membership.Email.Equals(model.Email, StringComparison.InvariantCultureIgnoreCase));
                    if (name != null) { return View("Error_user"); }
    
                    /*13.08.2014 EmirMamashovCode{} нахождение сущ. ли такой агент*/
                    var usersBalanses = UserBalancesRepository.FindAll().ToList();
                   /* если заполнено код агента и имя агента */
                    if (model.KodAgent != null && model.NameAgent != null)
                    {
                        foreach (var usersBalanse in usersBalanses)
                        {
                            if (model.KodAgent == usersBalanse.KodforPay)
                            {
                                status = true;
                            }
                            else{status = false;}
                        }
                        if (status == false)
                        {
                            return View("Error_notFoundAgent");
                        }
                       
                    }

    нахождение сущ. ли такой агент

    Emir, 13 Августа 2014

    Комментарии (48)
  5. PHP / Говнокод #16479

    +160

    1. 1
    ($isLead) ? $customerBalance = 0 : $customerBalance = $customerMapper->calculateBalance($customer);

    Код от мастера Йода

    andr435, 05 Августа 2014

    Комментарии (48)
  6. JavaScript / Говнокод #16458

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    scope = new Object();
    scope = document.getElementById("scope");
    …
    var block = document.getElementById("scope");
    var els = block.getElementsByClassName("noactive");
    for(var n in els)
    {
    els[n].className = "active";
    }

    Проклятие, этот человек хоть что-нибудь думает, когда кодит? Хочется взять — и… Потому что мне с этим потом работать.

    torbasow, 31 Июля 2014

    Комментарии (48)
  7. PHP / Говнокод #16155

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    <?
    $arr = array(2,1,1,1,1);
    echo $arr[rand(0,count($arr)-1)];
    /*вероятность двойки 20%, 5 чисел = 100%, 1 число = 20%. Так и делается, ничего не говнокод.
    И в других языках по этому же принципу.
    */
    ?>

    Человек спросить, как сделать псевдорандом с вероятностью выпадения числа в 20 процентов. Вот что ему ответили.

    timurkin, 12 Июня 2014

    Комментарии (48)
  8. C++ / Говнокод #14175

    +9

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    // fib.h
    #pragma once
    using ull = unsigned long long;
    
    inline constexpr ull fib(size_t n, ull first, ull second) {
      return n == 0 ? first : fib(n - 1, second, first + second);
    }
    
    inline constexpr ull fib(size_t n) {
      return fib(n, 0, 1);
    }
    // fibs.h
    #pragma once
    #include "fib.h"
    #include <array>
    
    enum class fibs : ull {
    #define FIB(i, val) fib##i = val,
    #define COUNT(val) COUNT = val
    #include "fibs.inl"
    #undef COUNT
    #undef FIB
    };
    
    std::array<ull, static_cast<size_t>(fibs::COUNT)> const & fibs_values() {
      static std::array<ull, static_cast<size_t>(fibs::COUNT)> values = {
    #define FIB(i, val) val,
    #define COUNT(val)
    #include "fibs.inl"
    #undef COUNT
    #undef FIB
      };
      return values;
    }
    // main.cpp
    #include "fibs.h"
    #include <iostream>
    
    int main() {
      using namespace std;
      for (auto fib : fibs_values()) {
        cout << fib << "," << endl;
      }
      return 0;
    }
    // fibs.inl = gen.exe > fibs.inl
    // gen.cpp
    #include "fib.h"
    #include <iostream>
    
    int main() {
      using namespace std;
      size_t i;
      for (i = 0; i < 94; i++) {
        cout << "FIB(" << i << ", " << fib(i) << ")" << endl;
      }
      cout << "COUNT(" << i << ")";
      return 0;
    }

    LispGovno, 04 Декабря 2013

    Комментарии (48)
  9. C++ / Говнокод #13087

    +23

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    #ifndef SAFE_RELEASE
    #define SAFE_RELEASE(x) \
       if(x != NULL)        \
       {                    \
          x->Release();     \
          x = NULL;         \
       }
    #endif
    
    #define SAFE_DELETE(a) if( (a) != NULL ) delete (a); (a) = NULL;
    
    #ifndef SAFE_ARRAY_DELETE
    #define SAFE_ARRAY_DELETE(x) \
       if(x != NULL)             \
       {                         \
          delete[] x;            \
          x = NULL;              \
       }
    #endif
    
    #define SAFE_FREE( p )      if( p ) { free( p ) ; p=NULL ; }

    Я вот все никак не могу забыть старый код из доков макрософт по COM, а также из книги Андре Ла Мота.

    Два макроса до сих пор висят среди доков на сайте мс (по коду догадаетесь какие):

    http://msdn.microsoft.com/ru-RU/library/windows/desktop/dd743946(v=vs.85).aspx

    LispGovno, 01 Июня 2013

    Комментарии (48)
  10. Java / Говнокод #12629

    +142

    1. 1
    2. 2
    if(!true) // это - не говнокод. это - заглушка.
                    return false;

    Оправдывается ещё )

    pitch, 21 Февраля 2013

    Комментарии (48)
  11. Java / Говнокод #12615

    +67

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    public final class SomeActivity extends Activity {
           @Override
    	protected Dialog onCreateDialog(int id) {
    		Dialog dialog = null;
    		if (id == DialogGenerator.SETTINGS_DIALOG) {
    			dialog = mDialogGenerator.createSettingsDialog();
    		}  {
    			dialog = super.onCreateDialog(id);
    		}
    		return dialog;
    	}
    
    	@Override
    	protected void onPrepareDialog(int id, Dialog dialog) {
    		super.onPrepareDialog(id, dialog);
    		if (id == DialogGenerator.SETTINGS_DIALOG) {
    			mDialogGenerator.prepareSettingsDialog((AlertDialog) dialog, someBoolValue, someObjectValue);
    		} 
    	}
    }
    
    public final class DialogGenerator {
    	public Dialog createSettingsDialog() {
    		int dialogId = SETTINGS_DIALOG;
    		int titleId = R.string.settingsTitle;
    		String[] itemsArray = getStringArray(R.array.settings);
    		ThreeTypeOptionsAdapter adapter = new ThreeTypeOptionsAdapter(mControllerAsActivity, itemsArray,
    				mCheckableOptions, mTwoTextOptions);
    		AlertDialogCallback dialogCallback = new AlertDialogCallback(mControllerAsDialogHost, dialogId);
    		AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mControllerAsActivity);
    		dialogBuilder.setTitle(titleId);
    		// костыль
    		dialogBuilder.setSingleChoiceItems(itemsArray, 0, null);
    		// конец костыля
    		dialogBuilder.setAdapter(adapter, dialogCallback);
    		AlertDialog dialog = dialogBuilder.create();
    		setMainListenersOnDialog(dialog);
    		dialog.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    		return dialog;
    	}
    	
    	public void prepareSettingsDialog(AlertDialog dialog, boolean someBoolValue, String someStringValue) {
    		//костыль
    		ListView dialogList = dialog.getListView();
    		dialogList.clearChoices();
    		dialogList.setItemChecked(POSITION_FOR_BOOL, someBoolValue);
    		//конец костыля
    		ThreeTypeOptionsAdapter adapter = (ThreeTypeOptionsAdapter) dialogList.getAdapter();
    		adapter.setAdditionalValue(POSITION_FOR_STRING, someStringValue);	
    	}
    }

    Задача: показать диалог, внутри которого есть 3 типа ячеек: выделяемые с чекбоксом справа, невыделяемые с дополнительной надписью справа, обычные невыделяемые.
    Примерно так:
    Use GPS checkbox
    Selected country Russia
    Launch some activity

    В комментах к методам я описал костыль:
    Здравствуйте, дорогие друзья. Сегодня мы с вами поговорим об уникальном виде животных, которых открыли только в конце XX века. Это, дорогие друзья, Ява-обезьяны. Давайте дружно откроем сырцы Андроид-СДК, а именно - класс com.android.internal.app.AlertController .AlertParams - и метод createListView(AlertController). Видите, одна обезьяна решила, что нам будет удобней, если диалог автоматом задисмиссится, когда мы щёлкнем по элементу списка в CHOICE_MODE_NONE, и OnClickListener будет не null? А теперь давайте перейдём в android.app.AlertDialog.Builder. Видите, там другая обезьяна решила, что для multi-choice списка нам не потребуется хитроумный адаптер? Поэтому, дорогие друзья, когда мы поставили кастомный адаптер (setAdapter()) и сопроводили его слушателем, то какой бы мы choice mode не ставили после AlertDialog.Builder.create(), диалог дисмиссился. Поэтому, дорогие друзья, пришлось пойти на хитрость и вначале установить single choice (чтобы флаг mIsSingleChoice стал true), а потом уже ставить адаптер.

    QuickNick, 20 Февраля 2013

    Комментарии (48)