1. Куча / Говнокод #12179

    +128

    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
    data Mode = Start | Read | Skip | End
    data State = State Mode String String [String]
    
    space c = elem c [' ', '\n', '\r', '\f', '\t', '\v', '\160']
    
    end r     = State End "" "" r
    skip t r  = State Skip t "" r
    get t w r = State Read t w r
    start t   = State Start t "" []
    
    step (State Start at@(t:ts) w r)
    	| space t   = step $ skip at r
    	| otherwise = step $ get at w r
    
    step (State Read at@(t:ts) w r)
    	| space t   = step $ skip at $ r ++ [w]
    	| otherwise = step $ get ts (w ++ [t]) r
    
    step (State Skip at@(t:ts) _ r)
    	| space t   = step $ skip ts r
    	| otherwise = step $ get at "" r
    
    step (State Start "" _ r) = step $ end r
    step (State Read "" w r)  = step $ end $ r ++ [w]
    step (State Skip "" _ r)  = step $ end r
    
    step (State End _ _ r) = r
    
    words' text = step $ start text

    Решил все-таки выложить этот позор. Если есть предложения по улучшению - с радостью выслушаю.

    Fai, 23 Ноября 2012

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

    −91

    1. 1
    2. 2
    // synthesize viewController
    @synthesize viewController;

    Никогда еще комментарии не были столь информативны.

    tirinox, 22 Ноября 2012

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

    −98

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #import <Foundation/Foundation.h>
     
    int main () {
        BOOL b1 = 71151208, b2 = 107155712;
        printf ("b1 is %s; b2 is %s.", (b1 ? "true" : "false"), (b2 ? "true" : "false"));
        return 0;
    }

    Ох, как же я эпично выстрелил себе в ногу.

    byss, 22 Ноября 2012

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

    +146

    1. 1
    <input name="login" type="text" id="imageName" value="Image Name" onblur="if (this.value == ''){this.value = 'Image Name'; }" onfocus="if (this.value == 'Image Name') {this.value = '';}"/>

    А вот так, нужно делать плейсхолдеры к инпутам.

    Starkua, 22 Ноября 2012

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

    +72

    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
    60. 60
    public void load()
    	{
    		for(Language lang : Language.VALUES)
    		{
    			strings.put(lang, new HashMap<String, String>());
    
    			File f = new File(Config.DATAPACK_ROOT, "data/string/strings_" + lang.getShortName() + ".properties");
    			if(!f.exists())
    			{
    				log.warn("Not find file: {}", f.getAbsolutePath());
    				continue;
    			}
    
    			LineNumberReader reader = null;
    			try
    			{
    				reader = new LineNumberReader(new FileReader(f));
    				String line = null;
    
    				while((line = reader.readLine()) != null)
    				{
    					if(line.startsWith("#"))
    						continue;
    
    					StringTokenizer token = new StringTokenizer(line, "=");
    					if(token.countTokens() < 2)
    					{
    						log.error("Error on line: " + line + "; file: " + f.getName());
    						continue;
    					}
    
    					String name = token.nextToken();
    					String value = token.nextToken();
    					while(token.hasMoreTokens())
    						value += "=" + token.nextToken();
    
    					Map<String, String> strings = this.strings.get(lang);
    
    					strings.put(name, value);
    				}
    			}
    			catch(Exception e)
    			{
    				log.error("Exception: " + e, e);
    			}
    			finally
    			{
                    try
                    {
                        reader.close();
                    }
                    catch(Exception e)
                    {
                        log.error("Cannot close reader", e);
                    }
    			}
    		}
    
    		log();
    	}

    java.util.Properties? Нет, не слышали :)

    EvSpirit, 22 Ноября 2012

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

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    private static readonly SortedDictionary<Type, ModelConvertor> ModelTypes = new SortedDictionary<Type, ModelConvertor>
    {
        { typeof(ObjectType),           в           => Convert((ObjectType)в) },
        { typeof(ObjectBodyFormat),     пятницу     => Convert((ObjectBodyFormat)пятницу) },
        { typeof(PropertyId),           набухаюсь   => Convert((PropertyId)набухаюсь) },
        { typeof(PropertyCategory),     нафиг       => Convert((PropertyCategory)нафиг) }
    };

    Сегодня случайно заметил этот крик души в мониторе одного коллеги. Всё-таки, в юникодных идентификаторах есть свой неуловимый шарм...

    roman-kashitsyn, 22 Ноября 2012

    Комментарии (0)
  7. Python / Говнокод #12173

    −107

    1. 1
    type<bool> str;

    http://ideone.com/Y8TP08
    Мы с коллегой обнаружили возможность писать шаблоны на пайтоне. Первым делом написали шаблонную фабрику.

    serpinski, 22 Ноября 2012

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

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    #include <iostream>
     
    int main() {
        std::cout << (2,0 * 2,5) << std::endl;   // 5
        std::cout << (0,625 * 6,4) << std::endl; // 4
        std::cout << (2,5 * 2,0) << std::endl;   // 5?
        return 0;
    }

    Почему в с++ умножение некоммутативно?

    http://ideone.com/Erp3uv

    bormand, 21 Ноября 2012

    Комментарии (44)
  9. JavaScript / Говнокод #12171

    +160

    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
    $('#info, #progress, #portfolio, #content1, #content2, #content3, #content4, #content5, #content6, #content7, #content8, #content9, #content10, #content11, #content12, #content13, #content14, #oneclick, #zoomer, #noback, #noinfo').fadeOut(0);
      $('#abouticon').toggle(function(){
    	  $('#pad, img[src*="line"]').fadeOut(500);
    	  $('#abouticon').css({'background' : '#dae2e6'});
    	  $('#info, #progress').delay(500).fadeIn(500);
    	  $('img[src*="iDrugov.png"]').fadeOut(500);
    	  //
    	  $('#portfolio').fadeOut(500);
    	  $('#icon3').css({'background' : '#83bdda'});
      }, function(){
    	  $('#pad, img[src*="line"]').delay(500).fadeIn(500);
    	  $('#abouticon').css({'background' : '#a3c7da'});
    	  $('#info, #progress').fadeOut(500);
    	  $('img[src*="iDrugov.png"]').delay(500).fadeIn(500);
      })

    Много хорошего, годного jQuery!

    nbspjr, 21 Ноября 2012

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

    −101

    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
    - (void) setSavedData:(NSMutableDictionary *) chordsSettings
    {
    	if ([chordsSettings count]) 
        {
    		currentVariationsIndex = [[chordsSettings valueForKey:@"currentVariationsIndex"] intValue];
            pickerComponent0Row = [[chordsSettings valueForKey:@"pickerComponent0Row"] intValue];
            pickerComponent1Row = [[chordsSettings valueForKey:@"pickerComponent1Row"] intValue];
            canPlayString1 = [[chordsSettings valueForKey:@"canPlayString1"] boolValue];
            canPlayString2 = [[chordsSettings valueForKey:@"canPlayString2"] boolValue];
            canPlayString3 = [[chordsSettings valueForKey:@"canPlayString3"] boolValue];
            canPlayString4 = [[chordsSettings valueForKey:@"canPlayString4"] boolValue];
            canPlayString5 = [[chordsSettings valueForKey:@"canPlayString5"] boolValue];
            canPlayString6 = [[chordsSettings valueForKey:@"canPlayString6"] boolValue];
            lockedString1 = [[chordsSettings valueForKey:@"lockedString1"] boolValue];
            lockedString2 = [[chordsSettings valueForKey:@"lockedString2"] boolValue];
            lockedString3 = [[chordsSettings valueForKey:@"lockedString3"] boolValue];
            lockedString4 = [[chordsSettings valueForKey:@"lockedString4"] boolValue];
            lockedString5 = [[chordsSettings valueForKey:@"lockedString5"] boolValue];
            lockedString6 = [[chordsSettings valueForKey:@"lockedString6"] boolValue];
            chordPartOne = [[chordsSettings valueForKey:@"chordPart1"] retain];
            chordPartTwo = [[chordsSettings valueForKey:@"chordPart2"] retain];
    		flag = [[chordsSettings objectForKey:@"notes"] boolValue];
    	}
        else
        {
        	canPlayString1 = canPlayString2 = canPlayString3 = canPlayString4 = canPlayString5 = canPlayString6 = YES;
        	lockedString1 = lockedString2 = lockedString3 = lockedString4 = lockedString5 = lockedString6 = NO;
        	pickerComponent0Row = pickerComponent1Row = 0;
        	currentVariationsIndex = 0;
    		chordPartOne = @"C";
    		chordPartTwo = @"";
    		flag = NO;
    	}
    	chordPartThree = @"";
    }

    Интересно, если б аффтару нужно было писать приложение не для 6-струнной гитары, а для 12-струнной гитары или даже для арфы, он бы и там упорно не использовал массивы?

    QuickNick, 21 Ноября 2012

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