Size: a a a

2021 March 23

CD

Constantine Drozdov in pro.cxx
претензий по содержанию не имею, да
источник

PZ

Pavel Zhigulin in pro.cxx
Constantine Drozdov
не, ну врапить [] от () и явный возврат хвостовой рекурсии лишнее
Я про рекурсию не особо понял :) Но в целом, мне нравится врапить)) Легко читать) Сразу видно список захвата, все параметры, и тело лямбды)
источник

PZ

Pavel Zhigulin in pro.cxx
И даже тип возвращаемого значения)
источник

CD

Constantine Drozdov in pro.cxx
Pavel Zhigulin
Я про рекурсию не особо понял :) Но в целом, мне нравится врапить)) Легко читать) Сразу видно список захвата, все параметры, и тело лямбды)
> про рекурсию
да я жопой выразился, имею в виду, что для функции, имеющей один return, нет смысла писать явное возвращаемое значение
источник

PZ

Pavel Zhigulin in pro.cxx
Constantine Drozdov
> про рекурсию
да я жопой выразился, имею в виду, что для функции, имеющей один return, нет смысла писать явное возвращаемое значение
ХЗ :) Я вот понятия не имею что там за special и чё он там возвращает :) А так сразу понятно. Я ж в этом месте еще не знаю, что эта лямбда в условии используется, а так уже намёк :)
источник

CD

Constantine Drozdov in pro.cxx
Pavel Zhigulin
ХЗ :) Я вот понятия не имею что там за special и чё он там возвращает :) А так сразу понятно. Я ж в этом месте еще не знаю, что эта лямбда в условии используется, а так уже намёк :)
угу, понятия не имеете, но почему-то завязались на то, что преобразование его к bool это implicit
может, оно хотело optional<Special> вернуть
источник

O

Ofee in pro.cxx
Constantine Drozdov
> про рекурсию
да я жопой выразился, имею в виду, что для функции, имеющей один return, нет смысла писать явное возвращаемое значение
А вместе с return вызывается другая функция-однострочник, где тоже решили, что для одного выражения явно писать возвращаемый тип не нужно (хотя, для лямбд, может, это и справедливо). Продолжайте развивать идею, пока она не разонравится
источник

PZ

Pavel Zhigulin in pro.cxx
Constantine Drozdov
угу, понятия не имеете, но почему-то завязались на то, что преобразование его к bool это implicit
может, оно хотело optional<Special> вернуть
Ну так и ладно :) Хорошо же :) Например, я знаю, что у меня special возвращает "что-то", например указатель. Так я явным образом обозначаю, что этот указатель будет использован как bool, а не как указатель :) Тоже неплохо)
источник

CD

Constantine Drozdov in pro.cxx
Pavel Zhigulin
Ну так и ладно :) Хорошо же :) Например, я знаю, что у меня special возвращает "что-то", например указатель. Так я явным образом обозначаю, что этот указатель будет использован как bool, а не как указатель :) Тоже неплохо)
Только не скомпилируется
источник

PZ

Pavel Zhigulin in pro.cxx
Constantine Drozdov
Только не скомпилируется
И слава богу :)
источник

PZ

Pavel Zhigulin in pro.cxx
Ну, т.е. если у меня начинается какая-то дичь, я бы хотел увидеть место этой дичи там, где она возникла (в return), а не там, где она не сработала (в if)
источник

CD

Constantine Drozdov in pro.cxx
Pavel Zhigulin
Ну, т.е. если у меня начинается какая-то дичь, я бы хотел увидеть место этой дичи там, где она возникла (в return), а не там, где она не сработала (в if)
Нет, вы хотите, чтобы в is_special был явный каст :)
источник

PZ

Pavel Zhigulin in pro.cxx
Constantine Drozdov
Нет, вы хотите, чтобы в is_special был явный каст :)
*если он там нужен. До тех пор пока special возвращает bool - все счастливы :)
источник

PZ

Pavel Zhigulin in pro.cxx
Pavel Zhigulin
Вот так совсем хорошо)

if (
   0 == a + b
   || 1 == a + b
   || 2 == a + b
   || special(
          a,
          b,
          we_are_descending_to_hell(
              a,
              b
          )
      )
)
Признаться честно меня бы не сильно расстроил и этот вариант :)
источник

PZ

Pavel Zhigulin in pro.cxx
Вполне читаемо)
источник

PZ

Pavel Zhigulin in pro.cxx
Ну разве что совсем идеально:

if (auto sum = a + b;
   0 == sum
   || 1 == sum
   || 2 == sum
   || special(
          a,
          b,
          we_are_descending_to_hell(
              a,
              b
          )
      )
)
источник

PZ

Pavel Zhigulin in pro.cxx
Тем не менее 99% известных мне программистов написали бы так:

if ( 0 == a + b || 1 == a + b
   || 2 == a + b || special(a, b,
          we_are_descending_to_hell(a, b))){
  /*...*/
}
источник

PZ

Pavel Zhigulin in pro.cxx
Всем всегда не хватает строчек :D
источник

CD

Constantine Drozdov in pro.cxx
Pavel Zhigulin
Тем не менее 99% известных мне программистов написали бы так:

if ( 0 == a + b || 1 == a + b
   || 2 == a + b || special(a, b,
          we_are_descending_to_hell(a, b))){
  /*...*/
}
Они просто ещё не записывали деревья раскладки для гуя с парой десятков листьев :)
источник

PZ

Pavel Zhigulin in pro.cxx
С другой стороны, все ж используют clang-format :) Но там нельзя закрыващую скобку при вызове функции перенести на следующую строку, так что предел, который можно добиться автоматизацией выглядит так:

if (0 == sum || 1 == sum || 2 == sum
   || special(a,
              b,
              we_are_descending_to_hell(a, b)))
{
   /*code */
}
источник