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

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

    +15

    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
    #include <iostream>
    #include <functional>
     
    template<class Container, class F, class A>
    auto accumulate(Container c, F f, A acc) -> A
    {
      auto id = [](const A& a) -> const A& {return a;};
      typedef decltype(std::begin(c)) Iterator;
      const std::function<A(const Iterator& lst, const std::function<A(const A&)>&)> doIt = 
      [&](const Iterator& lst, const std::function<A(const A&)>& cont) -> A
      {
        if(lst==c.end())
          return cont(acc);
        else
        {
          auto conter=[&](const A& acc) -> A {return cont(f(*lst, acc));};
          return doIt(lst+1, conter);
        }
      };
      return doIt(std::begin(c), id);
    }
     
    int main() {
            std::cout<<accumulate({1,2,3,4}, std::plus<int>(), 0);
            return 0;
    }

    Похоже написал какой-то монадолог.
    http://ideone.com/y4Dm9z
    Пример использования accumulate сам накатал.
    Я побаловался с этим примером, чтобы разобраться и GCC ожидаемо упал:
    http://ideone.com/XWfuoP
    Я убежден, что эта функция должна была выглядеть как-то так:

    template<class Container, class F>
    accumulate(const Container& c, const F& f=std::plus<decltype(*(std::begin(c)))>(), const decltype(*(std::begin(c))) acc=decltype(*(std::begin(c)))()) -> decltype(*(std::begin(c)))
    {
    return std::accumulate(c.begin(), c.end(), acc, f);
    }
    //Вызов этой функции:
    accumulate({1,2,3,4});

    Ну и я погуглил на тему этого говнокода и нашел на функциональном языке похожий:
    let fold_right func acc list =
    let rec loop list cont = //сюда мы передаем текущую функцию континуации
    match list with
    |[] -> cont acc //а вот и наше ключевое вычисление.
    |head::tail -> loop tail (fun racc -> cont (func head racc))
    loop list (fun x -> x)

    LispGovno, 23 Ноября 2012

    Комментарии (39)
  3. C# / Говнокод #12136

    +136

    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
    private BusinessSocialProfile GetSocialProfileLink(string searchProvider, string searchKey)
    {
    	var link = new BusinessSocialProfile { Name = searchProvider, Url = "#" };
    	
    	if (searchProvider.Contains("city", StringComparison.InvariantCultureIgnoreCase))
    	{
    		link.Url = cityLink;
    		link.Logo = "/citysearch.png";
    		link.ImageStyle = "margin-top:-8px";
    	}
    	else if (searchProvider.Contains("google", StringComparison.InvariantCultureIgnoreCase))
    	{
    		link.Url = googleLink;
    		link.Logo = "/google.png";
    	}
    	else if (searchProvider.Contains("yelp", StringComparison.InvariantCultureIgnoreCase))
    	{
    		link.Url = yelpLink;
    		link.Logo = "/yelp.png";
    		link.ImageStyle = "margin-top:-8px";
    	}
    	else if (searchProvider.Contains("manta", StringComparison.InvariantCultureIgnoreCase))
    	{
    		link.Url = mantaLink;
    		link.Logo = "/manta.png";
    	}
    	else if (searchProvider.Contains("patch", StringComparison.InvariantCultureIgnoreCase))
    	{
    		link.Url = patchLink;
    		link.Logo = "/patch.png";
    	}
    	else
    	{
    		link.Url = "#";
    		link.Logo = string.Empty;
    		link.Name = string.Empty;
    	}
    
    	return link;
    }

    уже до боли известный девелопер ;) а для чего еще нужна бизнесс-логика...?

    mangyst, 16 Ноября 2012

    Комментарии (39)
  4. Java / Говнокод #12102

    +71

    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
    class ........... {
        BigDecimal t;
    ...
        public boolean t_is_zero(){
            BigDecimal zero = new BigDecimal(0);
    
            if(this.t == zero)
                return true;
            else
                return false;
        }
    ...
    }

    для операции сравнения была создана новая переменная как эквивалент )

    azv, 12 Ноября 2012

    Комментарии (39)
  5. Си / Говнокод #11582

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    enum
      {
        MaxStringLen = 1024
      };

    Офигенный метод объявления констант!

    glook, 13 Августа 2012

    Комментарии (39)
  6. Assembler / Говнокод #11302

    +184

    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
    __declspec (naked) INT16U getWordOfCPUFlags(void)
    {
    	_asm
    	{
    		pushf;
    		xor eax, eax;
    		pop ax;
    		ret;
    	}
    }
    
    void setWordOfCPUFlags(const INT16U WordOfCPUFlag)
    {
    	_asm
    	{
    		push WordOfCPUFlag;
    		popf;
    	}
    }
    
    bool getCPUTraceFlag(void)
    {
    	return 0 != (getWordOfCPUFlags() & 0x100);
    }
    
    void setCPUTraceFlag(const bool CPUTraceFlag)
    {
    	const INT16U MaskOfTraceFlag=((INT16U)CPUTraceFlag)<<8;
    	//setWordOfCPUFlags( (getWordOfCPUFlags() and ~MaskOfTraceFlag) ^ MaskOfTraceFlag);
    	if(CPUTraceFlag)
    		setWordOfCPUFlags( getWordOfCPUFlags() | MaskOfTraceFlag);
    	else
    		setWordOfCPUFlags( getWordOfCPUFlags() & ~MaskOfTraceFlag);
    }

    Видимо автору кода строка 29 показалась слишком сложной.

    HaskellGovno, 26 Июня 2012

    Комментарии (39)
  7. 1C / Говнокод #10392

    −119

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
    .....
    ГДЕ
    .....
    И ОсновныеНачисления.Авторасчет = Истина
    И ОсновныеНачисления.Авторасчет = Ложь"

    Выбрать обязательно различные! :)

    mrbus, 29 Мая 2012

    Комментарии (39)
  8. ActionScript / Говнокод #10271

    −165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    /**
         * This is a really fast way to check for NaN; see the spec of NaN
         * on why this works; this check can yield false only for a Number
         * since it's the only one capable of having NaN as a value.
         */
        if (d != d) {
         throw new Error("value can't be NaN!");
        }

    kyzi007, 15 Мая 2012

    Комментарии (39)
  9. PHP / Говнокод #8969

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    function cut($text){
    $full_text = explode("<cut/>",$text);
    return $full_text;
    }

    Функция обрезания текста по тегу <cut/>

    Skitch, 07 Января 2012

    Комментарии (39)
  10. Си / Говнокод #8234

    +147

    1. 1
    signed bool

    ohlol, 18 Октября 2011

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

    +73

    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
    public boolean alwaysAllowed(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.alwaysAllowed");
    	}
    	
    	public boolean remoteAccess(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.remote");
    	}
    	
    	public boolean canUse(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.use");
    	}
    	
    	public boolean canInvite(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.caninvite");
    	}
    	
    	public boolean infiniteHomes(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.infinite");
    	}
    	
    	public boolean noWarmup(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.nowarmup");
    	}
    	
    	public boolean noCooldown(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.nocooldown");
    	}
    	
    	public boolean freeSetHome(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.freesethome");
    	}
    	
    	public boolean freeHome(String player) {
    		return getServer().getPlayer(player).hasPermission("over9000homes.freehome");
    	}

    Всё тот же Bukkit проект.

    Uhehesh, 12 Октября 2011

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