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());
первый вариант мне кажется более гуманным, чем второй, особенно если мне захочется чего нибудь переделать, например добавить еще одно поле к строке.
1)
string auxcode = auxCodeField.getAsString();
if (!Find(auxcode))
Add(auxcode);
и
2) if(!Find(auxCodeField.getAsString())) then
Add(auxCodeField.getAsString());
первый вариант мне кажется более гуманным, чем второй, особенно если мне захочется чего нибудь переделать, например добавить еще одно поле к строке.
no subject
no subject
no subject
no subject
1 - Работает дольше (из-за того что auxCodeField.getAsString() вызывается 2 раза)
2 - Потенциально опасен, из-за того что второй вызов auxCodeField.getAsString() может (в зависимости от алгоритма программы) вернуть уже не то, что вернул первый вызов auxCodeField.getAsString()
no subject
Ну если про метод заведомо известно что он может возвращать изменяющиеся значения, то да. Но чем меньше таких методов в системе, тем лучше она спроектирована.
no subject
А вот про второе у них ничего не написано, хотя это достаточно самоочевидное шыло.
no subject
no subject
no subject
no subject
no subject
В императивных языках - нет.
Замучаешься отлаживать.
no subject
no subject
но у гуру вэб-жаваскриптистов рекомендуется даже вместо:
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
Компилятор оптимизнёт один фиг.
Или тут борьба за чистоту пространства имён?
no subject
no subject
Если вызов getSome() - то дёргаем столько раз, сколько нужно.
Если вызов calculateCRCAndSendStatusToRemoteClient() - естественно, один раз и сохраняем в локальной переменной.
И что, весь Фаулер это вот такие вумные "советы"?
no subject
no subject
Правильно мне коллеги говорили, что он по сути воду льёт и банальщину, типа выноса инвариантов из цикла.
Советы в твоём посте из этой же серии - кто знает - критикует (из-за "рецепта вместо синопсиса"), кто начал догонять - запутается (из-за "рецепта вместо синопсиса" ), что ещё не знает - не поймёт о чём речь (из-за "рецепта вместо синопсиса").
Вывод: стиль "рецепт без синопсиса" порождает УГ, которое не нужно ни начинающим, ни продолжющим, ни знающим.