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

    −97

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Если  Стрк.Контрагент.ИНН = "7702691545" Тогда
    				ТекДок.Грузополучатель = Справочники.Контрагенты.НайтиПоКоду("000401789");
    			ИначеЕсли  ПоХенкелю Тогда
    				ТекДок.Грузополучатель = Заявка.Контрагент;
    			КонецЕсли;

    Навряд ли конечно кто-то из тех кто пишет такой код, читает этот сайт, но всё же обращаюсь к ним. Вот скажите, есть какой-то негласный принцип так писать? У вас какой-то орден масонский, где вас так учат делать? Расскажите же про свой негласный кодекс хорошего программиста! Просто я много где поработал, и постоянно в коде такое говно, написанное разными людьми. Генезис такого говна понятен: приходит тупорылый менеджер и приносит не менее тупорылую хотелку, но ведь вы программист, а значит вы должны видеть за деревьями лес.
    В каждой задаче нужно видеть за деревьями лес - вот принцип хорошего кода. Если менеджер пришёл 1 раз, он 100% придёт ещё раз, и принесёт подобную задачу. Не лучше ли сейчас немножко посидеть, написать ХОРОШО а в следующий раз решить подобную задачу за 1 минуту и дальше сидеть и пинать говно? Не лучше?!
    Что значит хорошо? Хорошо, это когда ваше решение шире задачи, а задача которую вам дали всего лишь частный случай того функционала, который вы реализовали. 1 - Мыслить нужно шире.
    Так же надо чётко разделять ту информацию которая хранится в базе, и имена переменных. Если наименование контрагента "Хенкель" то какого члена в тексте делает переменная "КонтрагентХенкель"?! Предопределенные элементы - это максимум хардкода, который приемлем. Вы вообще слышали про компиляцию? Компиляция процесс необратимый, и часто её делать нежелательно, поэтому максимум параметров надо выносить во всевозможные настройки и параметры, чтобы можно было их поменять на ходу. Ладно. Вы всё равно нифига не поймёте.

    levxxx, 20 Февраля 2016

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

    0

    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
    unsigned int FileScanner::smartBruteForce(QByteArray &haystack, QByteArray &needle)
    {
        unsigned int count = 0;
        unsigned int dataSize = haystack.size();
        unsigned int needleSize = needle.size();
        unsigned int needleSizeCut = needleSize - 1;
        char* dp = haystack.data();
        char* np = needle.data();
        char lastNeedle = *(np + needleSize - 1);
    
        for(unsigned int i = 0; i < dataSize - needleSize + 1; i++)
        {
            if(*(dp + (i + needleSizeCut)) != lastNeedle) //This is smart technology ))))
                continue;
            unsigned int j;
            for(j = 0; j < needleSize; j++)
            {
                if(*(dp + (i + j)) != *(np + j))
                    break;
            }
            if(j == needleSize)
                count++;
        }
        return count;
    }

    laMer007, 20 Февраля 2016

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

    −1

    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
    foreach($arModels as $arMark){
    									$str='<select name="" id="'.$arMark["NAME"].'" class="combobox2 modelbox" ><option value="">(все)</option>';
    									
    									foreach($arMark["MODELS"] as $val => $arMN){
    										/*if($val==$_REQUEST["arrFilter_pf"]["model"]) $add=" selected ";
    										else $add="";*/
    										if($val!=''){
    										$str.='<option'.$add.' class="'.$arMark["NAME"].'" value="'.$arMN.'">'.$arMN.'</option>';
    										$str2.='<option'.$add.' class="'.$arMark["NAME"].'" value="'.$arMN.'">'.$arMN.'</option>';
    										}
    										else{
    											$file = fopen ($_SERVER["DOCUMENT_ROOT"]."/ipol/NIKITA_DYMAI.txt","w");
    											if ( !$file )
    												echo("Ошибка открытия файла");
    											else
    												fputs ( $file, $arMark["NAME"].'   '.$arMN.'-пустой id');
    											fclose ($file);
    										}
    									}
    									$str.='</select>';
    
    
    содержание файла txt:
    Cadillac   STS I-пустой id

    не удалось подумать

    LesterTeheMolester, 20 Февраля 2016

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

    −100

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    |			&ДатаНач,
    |			&ДатаКон,
    |			СчетДт В ИЕРАРХИИ (&СчетаРасчетов)
    |				И СчетКт В ИЕРАРХИИ (&СчетаВозврата)
    |				И Организация = &Организация
    |				И Активность = ИСТИНА
    |				И (НЕ СчетДт В ИЕРАРХИИ (&СчетаРасчетов))) КАК ХозрасчетныйОборотыДтКт

    БП 2.0, типовой отчет.

    OdinAss, 19 Февраля 2016

    Комментарии (4)
  5. JavaScript / Говнокод #19497

    0

    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
    function Calc() {
    
    var af = parseInt(document.getElementsByName("a"));
    var ad=af.value;
    
    var bf = parseInt(document.getElementsByName("b"));
    var bd=bf.value;
    
    var a = parseInt(ad)
    
    var b = parseInt(bd)
    
    alert("Результат: " + (a+b))
    }
    
    function CalcMi() {
    
    var af = parseInt(document.getElementsByName("a"));
    var ad=af.value;
    
    var bf = parseInt(document.getElementsByName("b"));
    var bd=bf.value;
    
    var a = parseInt(ad)
    
    var b = parseInt(bd)
    
    alert("Результат: " + (a-b))
    }
    
    function CalcX() {
    
    var af = parseInt(document.getElementsByName("a"));
    var ad=af.value;
    
    var bf = parseInt(document.getElementsByName("b"));
    var bd=bf.value;
    
    var a = parseInt(ad)
    
    var b = parseInt(bd)
    
    alert("Результат: " + a*b)
    }
    
    function CalcDX() {
    
    var af = parseInt(document.getElementsByName("a"));
    var ad=af.value;
    
    var bf = parseInt(document.getElementsByName("b"));
    var bd=bf.value;
    
    var a = parseInt(ad)
    
    var b = parseInt(bd)
    
    alert("Результат: " + a/b)
    }

    от школьника

    mittorn, 19 Февраля 2016

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

    −98

    1. 1
    2. 2
    3. 3
    СтрокаТовары.Качество					       = СтрокиОст.Качество;
    СтрокаТовары.ЕдиницаИзмерения			= СтрокиОст.ЕдИзм;
    СтрокаТовары.ЕдиницаИзмеренияМест		= СтрокиОст.ЕдИзмМест;

    Поражает сам подход. А почему бы не выдумать для (поля/объекта/коллекции) ещё одно уникальное имя?! Ведь столько ещё свободных и красивых уникальных имён в мире есть! К тому же "ЕдИзм" - это ведь короче чем "ЕдиницаИзмерения", не правда ли? Дурак перепутает только, правда? Писать ведь будет удобней, правда?
    Ладно... про ЗаполнитьЗначенияСвойств писать уже баян. Но ведь СтрокиОст - это строка какой-то таблицы? А в исходной таблице это называлось "ЕдиницаИзмерения", наверное, да? Так зачем лишний раз придумывать псевдоним?!!! Зачем? Почему просто не соединить таблицы друг с другом в запросе? Почему?! Почему нужно постоянно дрочить циклами?!
    Циклы надо применять тогда, когда нельзя по-другому, а это узкий круг задач, например те, где нужен CAST которого в 1С нет, или распределение одной таблицы на другую по какому какой нибудь "хитровыдуманной и уникальной" бизнес логике. Даже списание по ФИФО уже придумали как сделать запросом... Не хочу! Хочу циклы...

    levxxx, 19 Февраля 2016

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

    −100

    1. 1
    2. 2
    3. 3
    4. 4
    ТипЗаказа = Число(Сред(СокрЛП(Формат(Стрк.Заказ, "ЧГ=")), 3, 1));
    ...
    Если ТипЗаказа = 9 ИЛИ ТипЗаказа = 8 ИЛИ ТипЗаказа = 7 Тогда
    ...

    Стрк.Заказ - есть строка с номером документа.
    Вообще, к статье брата Б. Нуралиева (простите не помню как его зовут) "1С как продукт инженерной мысли" хочется прилагать иллюстрации. И прилагать иллюстрации почему-то иллюстрации именно такие. Про "грамотное" использование составных типов хочется молчать.
    Если вы слышали про 13 правил Кодда, и слышали про атомарность данных в ячейках, и находите в этом рациональное зерно - ЗАБУДЬТЕ!

    levxxx, 19 Февраля 2016

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

    +9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    /*======================================================================*\
    	Function:	__destruct
    	Output:		Нет
    	Descriiption: Уничтожение объекта
    	\*======================================================================*/
    	public function __destruct(){
    	
    	}

    Javadoc отдыхает.

    sevenflash, 19 Февраля 2016

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

    −99

    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
    Типовая зуп 2.5 данные берутся из справочника  "Степени родства физических лиц" не предопределенные элементы. 
    
    
    
    	Если ТекущаяСтрока.Пол = Перечисления.ПолФизическихЛиц.Мужской Тогда
    		
    		Если СтепеньРодстваРебенка = "05 " ИЛИ СтепеньРодстваРебенка = "06 " Тогда // Сын // Дочь
    			
    			ТекущаяСтрока.Статус = СоответствиеСтепенейРодства["03"]; // Отец
    			
    		ИначеЕсли СтепеньРодстваРебенка = "42 " ИЛИ СтепеньРодстваРебенка = "43 " Тогда // Пасынок // Падчерица
    			
    			ТекущаяСтрока.Статус = СоответствиеСтепенейРодства["40"]; // Отчим
    			
    		КонецЕсли; 
    		
    	Иначе
    		
    		Если СтепеньРодстваРебенка = "05 " ИЛИ СтепеньРодстваРебенка = "06 " Тогда // Сын // Дочь
    			
    			ТекущаяСтрока.Статус = СоответствиеСтепенейРодства["04"]; // Мать
    			
    		ИначеЕсли СтепеньРодстваРебенка = "42 " ИЛИ СтепеньРодстваРебенка = "43 " Тогда // Пасынок // Падчерица
    			
    			ТекущаяСтрока.Статус = СоответствиеСтепенейРодства["41"]; // Мачеха
    			
    		КонецЕсли; 
    		
    	КонецЕсли;

    sandrohaos, 18 Февраля 2016

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

    −1

    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
    bool Diagram::checkIsOverlayElements(const int index)
            {
                int _x0, _y0, _xX, _yY;
    
                int x0 = _vectorFigure[index]->getCoordinate().getX0();
                int y0 = _vectorFigure[index]->getCoordinate().getY0();
                int xX = _vectorFigure[index]->getCoordinate().getXx();
                int yY = _vectorFigure[index]->getCoordinate().getYy();
    
                for(int _index = 0; _index < _vectorFigure.size(); _index++)
                {
                    _x0 = _vectorFigure[_index]->getCoordinate().getX0();
                    _y0 = _vectorFigure[_index]->getCoordinate().getY0();
                    _xX = _vectorFigure[_index]->getCoordinate().getXx();
                    _yY = _vectorFigure[_index]->getCoordinate().getYy();
    
                    if(((x0 >= _x0 && x0 <= xX)
                        &&(y0 >= _y0 && y0 <= _yY))
                        ||((xX >= _x0 && xX <= _xX)
                            &&(yY >= _y0 && yY <= _yY))
                        ||((x0 >= _x0 && x0 <= xX)
                            &&(yY >= _y0 && y0 <= _yY))
                        ||((xX >= _x0 && xX <= _xX)
                           &&(y0 >= _y0 && yY <= _yY)))
                    {
                        return true;
                    }
                }
                return false;
            }

    Проверка наложения фигур друг на друга.

    Isaac, 17 Февраля 2016

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