1. C# / Говнокод #18362

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public void checkApply()
            {
                if (((((Parent as StackPanel).Parent as Grid).Parent as ToolControlPanel).Parent as ToolControl).Parent != null)
                {
                    var w = (((((((((Parent as StackPanel).Parent as Grid).Parent as ToolControlPanel).Parent as ToolControl).Parent as DockPanel).Parent as DockPanel).Parent as DockPanel).Parent as Window).Owner as MainWindow);
                    if (w != null)
                        w.EnableApplyNext();
                }
            }

    промолчу... ибо и так все ясно... :)

    Tlk, 18 Июня 2015

    Комментарии (0)
  2. C++ / Говнокод #18361

    +142

    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
    void AttachToParser(Parser* pParser)
    {
    	parser=pParser;
    		
    	static const char* const typeNames[]={"ShaderInterface", "ShaderModule", "ShaderModuleType", "ShaderModulePattern", "ShaderTemplate"};
    	typedef void (ShaderGeneratorParser::* StructureProcessor)();
    	static StructureProcessor processors[]={&ShaderGeneratorParser::ProcessShaderInterface, &ShaderGeneratorParser::ProcessShaderModule,
    		&ShaderGeneratorParser::ProcessShaderModuleType, &ShaderGeneratorParser::ProcessShaderModulePattern, &ShaderGeneratorParser::ProcessShaderTemplate};
    
    	for(uint i=0; i<numof(processors); i++)
    	{
    		auto processor=processors[i];
    		ShaderGeneratorParser mycopy=*this;
    		parser->DeclarationBlockParsers.Append(typeNames[i], [mycopy, processor]() mutable {(mycopy.*processor)();});
    	}
    }

    Делаю парсер конфигов для своего игрового движка. Он готов наверное всего на 10% и представлял собой один класс, который уже разросся. Стало неудобно по нему передвигаться. Решил разбить парсер на модули. Это код того, как один из модулей цепляется к основному классу парсера.
    Этот модуль умеет парсить 5 разных блоков, объединённых общим назначением - сборка шейдеров из модулей. За каждый тип блоков отвечает своя функция. Об этом функция и сообщает основному классу.

    Цель такая, чтобы модуль работал даже после удаления самого экземпляра. Для этого пришлось пропихнуть копию экземпляра внутрь std::function. Более нормального способа, чем через лямбду с замканием, я не нашёл.

    gammaker, 18 Июня 2015

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

    +171

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    мне кажется, до полноценности php не хватает несколько функций:
    alias() - заменяет один код другим кодом при парсинге,
    var_history() - возвращает историю значений переменной в виде массива,
    function_history() - возвращает массив аргументов, которые передавались функции,
    var() - устанавливает и изменяет значение и тип переменной.

    С тостера

    pi3141592653, 18 Июня 2015

    Комментарии (90)
  4. PHP / Говнокод #18359

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    foreach ($news as $post) {
                if (isset($post->important)) {
                    if($post->important == 1)
                    {
                    $import = $post;
                    break;
                    }
                }
                $import = 0;
            }
    
    if (!is_integer($import)) // ...

    Tairesh, 18 Июня 2015

    Комментарии (2)
  5. C# / Говнокод #18358

    +142

    1. 1
    2. 2
    3. 3
    return ("" + ((10 - (acn = "229" + acn)
                            .Select((c, с) => (int)(c - '0') * (с % 2 + 1))
                            .Sum(c => c / 10 + c % 10) % 10) % 10)).Insert(0, acn);

    symon, 18 Июня 2015

    Комментарии (2)
  6. C# / Говнокод #18357

    +145

    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
    public string define(string content)
        {
                    int till;
                    char[] CharArr = content.ToCharArray();
                    for (int i = 0; i < CharArr.Length; i++)
                    {
                        if (CharArr[i] == 'i')
                        {
                            till = i;
                        }
                    }
                    string Re = content.Substring(0,till);
                    return Re;
                }

    С тостера. Я рыдал.

    planaric, 18 Июня 2015

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

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    protected virtual void OnDisconnected()
    {
    		DispatcherHelper.CheckBeginInvokeOnUI(() =>
    		{
    			...
    			Cameras.ToList().Clear();
    			Meltings.ToList().Clear();
    			Spans.ToList().Clear();
    			...
    		});
    }

    Очищаем коллекции с данными, привязанные на списковые контролы UI. Доступ к свойствам Cameras, Meltings, Spans только через IEnumerable<>. Как же их очистить?

    elmanav, 18 Июня 2015

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public static class BoolExt
        {
            public static string ToYesNoString(this bool value)
            {
                return value ? "Да" : "Нет";
            }
        }

    alexCoder2007, 17 Июня 2015

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

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    public static bool IsEmpty(this string input)
            {
                return String.IsNullOrEmpty(input);
            }

    А почему бы и да?

    alexCoder2007, 17 Июня 2015

    Комментарии (5)
  10. Куча / Говнокод #18353

    +144

    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
    $ git log --pretty=oneline
    
    c8220f95d1b11d2e8a2d57cf4349c40a180bd7f3 Commit 33
    6eeac872fa772c2ea1d57faf286f6520fc831777 Commit 32
    fba42d3f0a6678e670d477bcc0c56819cafd34f9 Commit 31
    4292c5dc9cb9c4360f7ad03b2d5ecabbeb451a55 Commit 30
    2ba640394371f0fd44296c41b99fd42f6abfaf95 Commit 29
    80aa4d6754e5f82f3b111075747fd74f63e1a26c Commit 28
    7f43aa08d9d94e6c09f6435635942010320a824e Commit 27
    574524bf2b0dcb8070ce46ced75cec626e7c84ad Commit 26
    eb620063a690c489e746e2f5633771da66df0903 Commit 25
    
    ...

    https://github.com/gikraychik/bets

    eg0r, 17 Июня 2015

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