![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
с тех пор как я обчитался Фаулера и Макконнела. А именно: где-то там у них не советуется заводить дополнительные временные переменные, а сразу дергать метод, если нужно, и брать его возвращаемое значение. Почему-то мне кажется, что завести переменную с понятным именем и хранить значение в ней будет более кратким и понятным вариантом, чем каждый раз вызывать метод:
1)
string auxcode = auxCodeField.getAsString();
if (!Find(auxcode))
Add(auxcode);
и
2) if(!Find(auxCodeField.getAsString())) then
Add(auxCodeField.getAsString());
первый вариант мне кажется более гуманным, чем второй, особенно если мне захочется чего нибудь переделать, например добавить еще одно поле к строке.
1)
string auxcode = auxCodeField.getAsString();
if (!Find(auxcode))
Add(auxcode);
и
2) if(!Find(auxCodeField.getAsString())) then
Add(auxCodeField.getAsString());
первый вариант мне кажется более гуманным, чем второй, особенно если мне захочется чего нибудь переделать, например добавить еще одно поле к строке.
no subject
Date: 2009-04-13 12:17 pm (UTC)no subject
Date: 2009-04-13 12:18 pm (UTC)no subject
Date: 2009-04-13 12:38 pm (UTC)no subject
Date: 2009-04-13 12:18 pm (UTC)no subject
Date: 2009-04-13 12:21 pm (UTC)Ну если про метод заведомо известно что он может возвращать изменяющиеся значения, то да. Но чем меньше таких методов в системе, тем лучше она спроектирована.
no subject
Date: 2009-04-13 12:19 pm (UTC)1 - Работает дольше (из-за того что auxCodeField.getAsString() вызывается 2 раза)
2 - Потенциально опасен, из-за того что второй вызов auxCodeField.getAsString() может (в зависимости от алгоритма программы) вернуть уже не то, что вернул первый вызов auxCodeField.getAsString()
no subject
Date: 2009-04-13 12:29 pm (UTC)А вот про второе у них ничего не написано, хотя это достаточно самоочевидное шыло.
no subject
Date: 2009-04-13 12:29 pm (UTC)no subject
Date: 2009-04-13 12:31 pm (UTC)no subject
Date: 2009-04-13 03:06 pm (UTC)no subject
Date: 2009-04-13 08:05 pm (UTC)В императивных языках - нет.
Замучаешься отлаживать.
no subject
Date: 2009-04-14 03:56 am (UTC)no subject
Date: 2009-04-14 06:31 am (UTC)но у гуру вэб-жаваскриптистов рекомендуется даже вместо:
var myDiv = document.getElementById('my_div');
myDiv.style.border = "3px solid red";
myDiv.style.display = "block";
писать:
var myDiv = document.getElementById('my_div');
var myDivStyle = myDiv.style;
myDivStyle.border = "3px solid red";
myDivStyle.display = "block";
ибо даже доступ к переменной-члену объекта (не говоря об вызове функции) уже нееффективнее, чем доступ к локальной переменной
такие дела :)
вообще, в общем, тут дело индивидуальной градации - начиная с какого момента начинается параноя, излишество.
я стараюсь делать так: если некий результат используется более одного раза - в переменную его. (благо eclipse позволяет быстро и легко рефакторить жава-код).
и не делать цепочных вызовов - так легче потом дебажить.
no subject
Date: 2009-04-15 08:51 am (UTC)Компилятор оптимизнёт один фиг.
Или тут борьба за чистоту пространства имён?
no subject
Date: 2009-04-15 09:06 am (UTC)no subject
Date: 2009-04-15 09:08 am (UTC)Если вызов getSome() - то дёргаем столько раз, сколько нужно.
Если вызов calculateCRCAndSendStatusToRemoteClient() - естественно, один раз и сохраняем в локальной переменной.
И что, весь Фаулер это вот такие вумные "советы"?
no subject
Date: 2009-04-15 09:19 am (UTC)no subject
Date: 2009-04-15 09:24 am (UTC)Правильно мне коллеги говорили, что он по сути воду льёт и банальщину, типа выноса инвариантов из цикла.
Советы в твоём посте из этой же серии - кто знает - критикует (из-за "рецепта вместо синопсиса"), кто начал догонять - запутается (из-за "рецепта вместо синопсиса" ), что ещё не знает - не поймёт о чём речь (из-за "рецепта вместо синопсиса").
Вывод: стиль "рецепт без синопсиса" порождает УГ, которое не нужно ни начинающим, ни продолжющим, ни знающим.