1. Си / Говнокод #13490

    +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
    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
    void mb_sim_pix(uchar* IN, uchar* OUT, int *WH, int *bSize, int *A, int *pSize, float *threshold){
    	int pos = mb_calc_pos(A, WH, pSize);
    	int nPos;
    	int i, n;
    	int B[2];
    		
    	for(n = 0; n < 4; n++){
    		
    		switch(n){
    			case 0:
    				B[0] = A[0] + 1;
    				B[1] = A[1];
    			
    			case 1:
    				B[0] = A[0];
    				B[1] = A[1] - 1;
    			
    			case 2:
    				B[0] = A[0];
    				B[1] = A[1] + 1;
    			
    			case 3:
    				B[0] = A[0] - 1;
    				B[1] = A[1];
    		}
    		
    		if(	B[0] >= 0 && B[0] < WH[0] &&
    			B[1] >= 0 && B[1] < WH[1]){
    			nPos = mb_calc_pos(B, WH, pSize);
    			if(mb_val_pix(OUT, &nPos, pSize) == 0){
    				if(mb_sim_pack(IN, &pos, &nPos, pSize) >= *threshold){
    					for(i = 0; i < *pSize; i++) OUT[nPos + i] = IN[nPos + i];
    					mb_sim_pix(IN, OUT, WH, bSize, B, pSize, threshold);
    				}
    			}
    		}
    	}
    }

    Тоже самое через if работает, а через switch проваливается на значении 0 все итерации. Почему?

    Stertor, 27 Июля 2013

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

    +75

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    int i, n;
    for(n = 0; n < 3; n++)
    {
       switch(n){
             case 0:
                    n+=i;
             case 1:
                    n-=i;
             case 2:
                    n*=i;
       }
    }

    Написал это, встал и хорошенько вымыл руки с мылом.

    http://programmersforum.ru/showthread.php?t=241288

    Stertor, 26 Июля 2013

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

    +12

    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
    struct c_test
    {
      int value;
      
      c_test(void)
      {
        (void)new (this) c_test (10);
      }
      
      c_test(int v)
      {
        value = v;
      }
    };

    LispGovno, 26 Июля 2013

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

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    $rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => $arResult['IBLOCK_ID']), false, array("UF_TEMPLATE_TYPE"));
    while ($ar = $rsResult->GetNext()) {
        if ($ar["UF_TEMPLATE_TYPE"]) {
            var_dump($ar["UF_TEMPLATE_TYPE"]);
        }
    }

    maeln0r, 26 Июля 2013

    Комментарии (1)
  5. Java / Говнокод #13485

    +68

    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
    LineDir ld = ild.next();
    int y = ld.getYDirAdj(), h = ld.getHeightDir();				
    PDFTextStripperByArea pts = new PDFTextStripperByArea();
    pts.addRegion("column3", new Rectangle(470,y,70,h));
    pts.addRegion("column4", new Rectangle(540,y,50,h));
    pts.extractRegions(page);
    try {
              int g = 0;
              String column3 = pts.getTextForRegion("column3").trim();
              String column4 = pts.getTextForRegion("column4").trim();
              if (column3.isEmpty()) {
                        g = 1/0;
              }
              g = Integer.valueOf(column4);					
    } catch(Exception e) {
             ild.remove();
    }

    Парсил pdf ничего лучше чем проверка нахождения 1)непустой строки(11) и 2)числа(14) в выбраных областях не нашел (в этих строках всегда есть эти столбцы). 2 если там не число то будет ошибка а в 1 сделал что бы ошибка за компанию была )

    Mooncrafter, 26 Июля 2013

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

    +8

    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 <pthread.h>
    template<class T = long long>
    class AtomicCounter
    {
        public:
            explicit AtomicCounter( T value = 0 ): _count( value ) { pthread_spin_init( &_lock, PTHREAD_PROCESS_PRIVATE );};
            ~AtomicCounter()  { pthread_spin_destroy( &_lock );    };
    
            T operator++(int) volatile {  return interlockFetchAndAdd( 1 );      };
            T operator--(int) volatile {  return interlockFetchAndAdd( -1 );     };
            T operator() ()   volatile {  return interlockFetchAndAdd( 0 );      }
    
        private:
            volatile T    _count;
            pthread_spinlock_t _lock;
    
            T interlockFetchAndAdd( int delta ) volatile
            {
                T x = 0;
                pthread_spin_lock( &_lock );
                x = _count;
                _count += delta;
                pthread_spin_unlock(&_lock);
                return x;
            }
    };

    Принцип наименьшего удивления, говорите

    roman-kashitsyn, 26 Июля 2013

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

    +14

    1. 1
    2. 2
    3. 3
    4. 4
    std::string buf_str = str;
    buf_str.erase( 0, strBlobFsParam.size() + 1 );
    buf_str.erase( buf_str.begin(), find_if(buf_str.begin(), buf_str.end(), not1( ptr_fun<int, int>(isspace) ) ) );
    buf_str.erase( find_if( buf_str.rbegin(), buf_str.rend(), not1( ptr_fun<int, int>(isspace) ) ).base(), buf_str.end() );

    trim головного мозга

    roman-kashitsyn, 26 Июля 2013

    Комментарии (7)
  8. Java / Говнокод #13482

    +111

    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
    public class PmsUtil {
    	
    	public static boolean allowViewFolder(IFolder folder) {
    		return isIntersected(folder.getPermissions(), getUserPms());
    	}
    
    	private static Set<Permission> getUserPms() {
    		return LoginController.get().getUser().getRole().getPermissions();
    	}
    
    	private static boolean isIntersected(Set<Permission> pmsSetA, Set<Permission> pmsSetB) {
    		for(Permission pms : pmsSetB) {
    			if(pmsSetA.contains(pms)) {
    				return true;
    			}
    		}
    		return false;
    	}
    
    	
    }

    К слову об именах переменных... любил мой предшественник делать нестандартные сокращения.

    someone, 26 Июля 2013

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

    +69

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    SOAPMessage msg = ctx.getMessage();
    
    //msg.writeTo(System.out);
    
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    msg.writeTo(baos);
    logger.trace(baos);

    где у хвалёного log4j метод для передачи его как аргументом java.io.OutputStream???

    defecate-plusplus, 26 Июля 2013

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

    +110

    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
    private void Save(string ThreadID, string Board)
            {
                string pathL;
                if (cbGIF.Checked)
                {
                    pathL = String.Format(path, Board, ThreadID, "-gif");
                }
                else
                {
                    pathL = String.Format(path, Board, ThreadID, "");
                }
                string htmlPath = String.Format(threadPath, Board, ThreadID);
    
                WebClient wcli = new GZipWebClient();
                string cThread = wcli.DownloadString(htmlPath);
                
                var rx = new Regex(cbGIF.Checked ? regExGif : regEx);
                var ms = rx.Matches(cThread);
                imgSaved = 0;
                imgCount = ms.Count;
                saveProgress.Minimum = 0;
                saveProgress.Maximum = imgCount;
                saveProgress.Value = 0;
                if (!Directory.Exists(pathL))
                {
                    Directory.CreateDirectory(pathL);
                }
                try
                {
                    foreach (Match m in ms)
                    {
                        WebClient ccl = new WebClient();
                        ccl.DownloadFileCompleted += new AsyncCompletedEventHandler(ccl_DownloadFileCompleted);
                        string[] v = m.Value.Split('"');
                        string sd = v[1].Split('/').Last();
                        string a = url + v[1];
                        string b = pathL + sd;
                        if (File.Exists(b))
                        {
                            imgSaved++;
                            saveProgress.Value = imgSaved;
                            lblSaveProgress.Text = imgSaved.ToString() + "/" + imgCount.ToString();
                            if (imgSaved == imgCount)
                            {
                                btnSave.Enabled = true;
                                lblSaveProgress.Text = "FUKKEN SAVED!";
                            }
                        }
                        else ccl.DownloadFileAsync(new Uri(a),b);
                    }
                }
                catch (WebException e)
                {
                    MessageBox.Show(e.Message + e.StackTrace);
                }          
            }

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

    A1mighty, 26 Июля 2013

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