-
Список говнокодов пользователя 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
-
+2
- 1
Как избавиться от говнокода?
Вот есть большой проект в большой корпорации. Ты приходишь и видишь, что архитектура говно, комментариев нет, стиль кода различается в разных частях одного файла, да и в остальных мелочах полный говнокод.
С другой стороны, нужно добавить много разных фич и пофиксить баги, все программисты и ты тоже активно заняты этим, вы приделываете новые костыли и заплатки.
Как с этим бороться? Убеждать менеджера, что вам нужно несколько недель, а то и месяцев на полный рефакторинг всего? Заниматься этим в свободное время? Забить и говнокодить дальше? Уйти в другое место (не факт ведь, что там будет лучше)?
imihajlov,
12 Ноября 2015
-
−40
- 1
- 2
- 3
- 4
- 5
- 6
- mContext.unregisterReceiver(mReceiver);
+ try {
+ mContext.unregisterReceiver(mReceiver);
+ }
+ catch (IllegalArgumentException e) {
+ }
Приложение падало при определенных сценариях, пофиксили.
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