metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-04-13 03:07 pm

There is one question that has been bugging me...

с тех пор как я обчитался Фаулера и Макконнела. А именно: где-то там у них не советуется заводить дополнительные временные переменные, а сразу дергать метод, если нужно, и брать его возвращаемое значение. Почему-то мне кажется, что завести переменную с понятным именем и хранить значение в ней будет более кратким и понятным вариантом, чем каждый раз вызывать метод:

1)
string auxcode = auxCodeField.getAsString();
if (!Find(auxcode))
Add(auxcode);

и
2) if(!Find(auxCodeField.getAsString())) then
Add(auxCodeField.getAsString());

первый вариант мне кажется более гуманным, чем второй, особенно если мне захочется чего нибудь переделать, например добавить еще одно поле к строке.

[identity profile] bigfrogg.livejournal.com 2009-04-13 12:19 pm (UTC)(link)
Второй код не то нечитабелен, он ещё
1 - Работает дольше (из-за того что auxCodeField.getAsString() вызывается 2 раза)
2 - Потенциально опасен, из-за того что второй вызов auxCodeField.getAsString() может (в зависимости от алгоритма программы) вернуть уже не то, что вернул первый вызов auxCodeField.getAsString()

[identity profile] metaclass.livejournal.com 2009-04-13 12:29 pm (UTC)(link)
Про первое вышеозначенные авторы писали, что это "ранняя оптимизация" и ее делать не надо :)
А вот про второе у них ничего не написано, хотя это достаточно самоочевидное шыло.