egorius: (Default)
egorius ([personal profile] egorius) wrote2011-05-20 01:12 am

О тавтологиях

Даже удивительно, сколько разработчиков не знают, что вместо, к примеру:

if a > b then
  gt_flag := true;
else
  gt_flag := false;
end if;

можно (и нужно) писать:

gt_flag := a > b;

Хотя это работает во всех языках, где есть булевский тип, от Паскаля до PL/SQL.

На самом деле даже такой случай:

if a > b then
  gt_flag := some_expression;
else
  gt_flag := another_expression;
end if;

в PL/SQL можно немного улучшить:

gt_flag := case
  when a > b then some_expression;
  else another_expression;
end;

[identity profile] d-byzero.livejournal.com 2011-05-20 08:08 am (UTC)(link)
ну что значит "можно и нужно"? Можно. А нужно ли -- вопрос философский. Да, я тоже предпочитаю второй вариант. Но я бы не сказал, что первый менее читабельный.

В Си, как ты знаешь, вообще есть оператор ? :. Который позволяет в одну строчку красиво (но нечитабельно) записать очень сложные выражения.

[identity profile] ptzy.livejournal.com 2011-05-20 08:50 am (UTC)(link)
у нас уже месяца два висит в планах бумажка "договориться о стандарте оформления кода". думаю, они скоро драться начнут.
я к тому, что религиозные диспуты можно вести бесконечно. :)

[identity profile] egorius.livejournal.com 2011-05-20 07:38 pm (UTC)(link)
Никаких религиозных войн, что ты, что ты. Когда у нас очередной раз раздаётся «а давайте введём стандарт», я первый миротворец на деревне.
Религия начинается, когда плюсы не перевешивают очевидным образом минусы, а тут всё ясно.

[identity profile] egorius.livejournal.com 2011-05-20 07:31 pm (UTC)(link)
Нужно, нужно.
В моём табеле о ценностях понятность стоит выше, чем краткость.
Но в данном примере второй вариант более краток и (за счёт этого) более ясен. Первый вариант проигрывает подчистую, ему нет объяснения, кроме «не знал, что так можно».