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] metaclass.livejournal.com 2009-04-15 09:06 am (UTC)(link)
Не, тут вопрос в читабельности и адекватности кода.

[identity profile] zamotivator.livejournal.com 2009-04-15 09:08 am (UTC)(link)
Ммм. Тут баланс тогда нужен.
Если вызов getSome() - то дёргаем столько раз, сколько нужно.
Если вызов calculateCRCAndSendStatusToRemoteClient() - естественно, один раз и сохраняем в локальной переменной.
И что, весь Фаулер это вот такие вумные "советы"?

[identity profile] metaclass.livejournal.com 2009-04-15 09:19 am (UTC)(link)
Да, похожие советы. Только я толком не помню, это у фаулера или у макконнела было.

[identity profile] zamotivator.livejournal.com 2009-04-15 09:24 am (UTC)(link)
Макконел - Совершенный код?
Правильно мне коллеги говорили, что он по сути воду льёт и банальщину, типа выноса инвариантов из цикла.
Советы в твоём посте из этой же серии - кто знает - критикует (из-за "рецепта вместо синопсиса"), кто начал догонять - запутается (из-за "рецепта вместо синопсиса" ), что ещё не знает - не поймёт о чём речь (из-за "рецепта вместо синопсиса").
Вывод: стиль "рецепт без синопсиса" порождает УГ, которое не нужно ни начинающим, ни продолжющим, ни знающим.