Используя операторы сравнения за пределами условных выражений

Вы должны добавить название своего ключа API, например:

headerw = { 'ApiKey': 'xxxx-yyyy-zzz' }
10
задан Coding Mash 7 September 2012 в 19:08
поделиться

12 ответов

Было бы приемлемо - если бы Ваш тип возврата был bool.

37
ответ дан 3 December 2019 в 13:11
поделиться

Это абсолютно приемлемо! На самом деле Joel упомянул это на последнем stackoverflow подкасте. Он сказал, что это была одна вещь, которую он должен был показать почти каждому программисту, который запускается в Ручье Вуали.

31
ответ дан 3 December 2019 в 13:11
поделиться

Первый случай совершенно хорош, намного лучше, чем второе, по моему скромному мнению. Как удобочитаемость, я лично сделал бы

   return  (a > 10);

но это - незначительная гнида, и не один все договорились бы.

6
ответ дан 3 December 2019 в 13:11
поделиться
return a > 10 ? 1 : 0;

... имеет больше смысла, потому что Вы возвращаете интервал, не bool.

13
ответ дан 3 December 2019 в 13:11
поделиться

Я буду обычно делать первого по последнему.

0
ответ дан 3 December 2019 в 13:11
поделиться

Мало того, что тот синтаксис 100% приемлем, необходимо также не стесняться использовать булевы выражения за пределами если операторы, т.е. int x = i && ( j || k ); (или возвращающий значения как этот).

1
ответ дан 3 December 2019 в 13:11
поделиться

Я не вижу ничто плохого с ним. Если бы что-нибудь, это более кратко и я думаю, что большинство разработчиков с умеренным опытом предпочло бы его.

4
ответ дан 3 December 2019 в 13:11
поделиться

Я записал бы bool f(int); и первая форма как bool boolean введите в C++. Если я действительно должен возвратиться int, Я записал бы что-то как

int f(int) {
    ...
    const int res = (i>42) ? 1 : 0;
    return res;
}

Я никогда не понимал, почему люди пишут

if (expr == true)
    mybool = true ; 
else 
    mybool = false;

вместо плоскости

mybool = expr;

Булева алгебра является инструментом, который любой разработчик должен смочь обработать инстинктивно

Кроме того, я определил бы именованный временный файл, поскольку некоторые отладчики не обрабатывают функциональные возвращаемые значения очень хорошо.

2
ответ дан 3 December 2019 в 13:11
поделиться

Я думаю, что часть его имеет отношение к стилю и культуре языка. Первый пример, который Вы записали, - то, что ожидалось бы от опытного программиста C. Они очень дросселировали бы себя, чем вставили бы ненужный блок операторов.

Я думаю, что совершенно приемлемо, когда язык позволяет его, и использование является частью парадигмы того языка

1
ответ дан 3 December 2019 в 13:11
поделиться

Я думаю ее совершенно приемлемое, при условии, что Вы удостоверяетесь, чтобы Вы приложили дополнительное усилие для поддержания удобочитаемости. Как я удостоверился бы, что имя метода очень однозначно, и Вы используете хорошие имена переменной.

Вторая альтернатива, что Вы, если я думаю, почти хуже, потому что она включает оператор ветвления и несколько операторов возврата и эти вещи, увеличивает сложность метода, сами уменьшая его удобочитаемость.

1
ответ дан 3 December 2019 в 13:11
поделиться

Первое очень предпочтительно для меня, так как это более кратко. (И это избегает нескольких возвратов:)

2
ответ дан 3 December 2019 в 13:11
поделиться

Я только что попробовал три разных варианта с GCC:

int one(int x) { return (x > 42) ? 1 : 0; }
int two(int x) { return x > 42; }
int thr(int x) { if (x > 42) return 1; else return 0; }

Как только вы включаете некоторую оптимизацию, сгенерированный код для всех них одинаков. Поэтому следует использовать тот вариант, который легче всего читать.

1
ответ дан 3 December 2019 в 13:11
поделиться