| Alexey Tigarev ( @ 2004-10-02 14:32:00 |
| Entry tags: | nlp, software_development |
О "рационализации" кода при отладке
Рационализацией называется придумывание сознательных объяснений тем или иным собственным действиям, произведённым благодаря бессознательным импульсам. Люди стремятся во всём искать смысл - вот и придумывают словесные объяснения.
Примерно такое же явление я обнаружил при отладке программы. Программа модифицируется так, чтобы отладочные сообщения объясняли человеку, что на самом деле происходит и почему. Так, например, код:
if (!doNotStartLoop) {
if (fragment.isLoop()) {
L.l.d("LOOP " + loopVar);
dataProvider.loop(loopVar);
registerLoop(loopVar, fragmentNo);
}
}
Преобразуется в:
if (fragment.isLoop()) {
if (!doNotStartLoop) {
L.l.d("LOOP " + loopVar);
dataProvider.loop(loopVar);
registerLoop(loopVar, fragmentNo);
} else {
L.l.d("loop found but not starting - doNotStartLoop is true");
}
}
Т.е. появляется дополнительная проверка и дополнительное действие (аналог человеческого внутреннего диалога) для объяснения, почему не сделали что-либо. В общем случае эффективность программы снижается, зато становится возможным её отладить (и впоследствии убрать отладочную печать).
Рассуждая о человеческих стратегиях - наборах поведенческих и мыслительных шагов - по аналогии с отлаживаемой программой, получаем ясное свидетельство, что осознавание каждого шага стратегии в общем случае снижает её эффективность - появляются лишние шаги - внутренний диалог, но это может быть полезно при внесении изменений ("отладке"). После внесения изменений можно оптимизировать стратегию, выбросив все эти объяснялки и другие лишние шаги.