- 
        Список говнокодов пользователя imihajlovВсего: 4 
- 
        
        
                −43         
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
 private static int getGroup(Map<String, Object> arg) {
    int group;
    Boolean in_range, known, configured;
    in_range = (Boolean)arg.get("in_range");
    known = (Boolean)arg.get("known");
    configured = (Boolean)arg.get("configured");
    if (null == in_range || null == known || null == configured)
        return 4;
    if (in_range && known && configured) {
        group = 0;
    } else if (!in_range && known) {
        group = 1;
    } else if (in_range && known && !configured) {
        group = 2;
    } else if (in_range && !known && configured) {
        group = 3;
    } else {
        group = 4;
    }
    return group;
}
/* Спустя 150 строк, внутри какого-то метода: */
switch(MyComparator.getGroup(map)) {
    case 0:
        (view.findViewById(R.id.imageButtonControl)).setVisibility(View.VISIBLE);
        (view.findViewById(R.id.imageButtonDelete)).setVisibility(View.VISIBLE);
        (view.findViewById(R.id.imageButtonSettings)).setVisibility(View.VISIBLE);
        (view.findViewById(R.id.imageButtonAdd)).setVisibility(View.GONE);
        break;
    case 1:
        (view.findViewById(R.id.imageButtonControl)).setVisibility(View.VISIBLE);
        (view.findViewById(R.id.imageButtonDelete)).setVisibility(View.VISIBLE);
        (view.findViewById(R.id.imageButtonSettings)).setVisibility(View.GONE);
        (view.findViewById(R.id.imageButtonAdd)).setVisibility(View.GONE);
        break;
    case 2:
        (view.findViewById(R.id.imageButtonControl)).setVisibility(View.GONE);
        (view.findViewById(R.id.imageButtonDelete)).setVisibility(View.VISIBLE);
        (view.findViewById(R.id.imageButtonSettings)).setVisibility(View.GONE);
        (view.findViewById(R.id.imageButtonAdd)).setVisibility(View.VISIBLE);
        break;
    case 3:
        (view.findViewById(R.id.imageButtonControl)).setVisibility(View.GONE);
        (view.findViewById(R.id.imageButtonDelete)).setVisibility(View.VISIBLE);
        (view.findViewById(R.id.imageButtonSettings)).setVisibility(View.GONE);
        (view.findViewById(R.id.imageButtonAdd)).setVisibility(View.VISIBLE);
        break;
    case 4:
        (view.findViewById(R.id.imageButtonControl)).setVisibility(View.GONE);
        (view.findViewById(R.id.imageButtonDelete)).setVisibility(View.GONE);
        (view.findViewById(R.id.imageButtonSettings)).setVisibility(View.GONE);
        (view.findViewById(R.id.imageButtonAdd)).setVisibility(View.VISIBLE);
        break;
    default:
        break;
}
 
 
            Вот вам забористый говнокод от профессианальных андроид-разработчиков.
         
             imihajlov,
            27 Ноября 2015 imihajlov,
            27 Ноября 2015
 
- 
        
        
                +2         
                            - 1
 Как избавиться от говнокода?
 
 
            Вот есть большой проект в большой корпорации. Ты приходишь и видишь, что архитектура говно, комментариев нет, стиль кода различается в разных частях одного файла, да и в остальных мелочах полный говнокод.
 С другой стороны, нужно добавить много разных фич и пофиксить баги, все программисты и ты тоже активно заняты этим, вы приделываете новые костыли и заплатки.
 
 Как с этим бороться? Убеждать менеджера, что вам нужно несколько недель, а то и месяцев на полный рефакторинг всего? Заниматься этим в свободное время? Забить и говнокодить дальше? Уйти в другое место (не факт ведь, что там будет лучше)?
 
             imihajlov,
            12 Ноября 2015 imihajlov,
            12 Ноября 2015
 
- 
        
        
                −40         
                            - 1
- 2
- 3
- 4
- 5
- 6
 -            mContext.unregisterReceiver(mReceiver);
+            try {
+                mContext.unregisterReceiver(mReceiver);
+            }
+            catch (IllegalArgumentException e) {
+            }
 
 
            Приложение падало при определенных сценариях, пофиксили.
         
             imihajlov,
            21 Октября 2015 imihajlov,
            21 Октября 2015
 
- 
        
        
                −42         
                            - 1
- 2
- 3
- 4
- 5
- 6
 use v5.12;
sub unimplemented { ... }
eval { unimplemented() };
if ($@ =~ /^Unimplemented at /) {
    say "I found an ellipsis!";
}
 
 
            Навеяно комментарием http://govnokod.ru/18873#comment300760
 
 Пример из документации перла (http://perldoc.perl.org/perlsyn.html#The-Ellipsis-Statement):
 When Perl 5.12 or later encounters an ellipsis statement, it parses this without error, but if and when you should actually try to execute it, Perl throws an exception with the text Unimplemented.
 
 Вот такая вот обработка исключений через =~
 
             imihajlov,
            16 Октября 2015 imihajlov,
            16 Октября 2015