Должен ли я заменить все мои операторы if / else на троичные сокращения if / else?(PHP) - PullRequest
3 голосов
/ 22 декабря 2010

Я читал о троичных сокращениях if / else, и мне интересно, имеет ли смысл или было бы более выгодно заменить все (или большинство) моих традиционных выражений if / else на троичные сокращения?Это заставило бы это бежать быстрее?Или все преимущества заключаются в том, что в нем меньше кода?

Спасибо за ваши идеи!

Ответы [ 10 ]

7 голосов
/ 22 декабря 2010

Тернарные операторы if / then должны использоваться для базовой логики, когда в любом случае есть четкий выбор. Когда вы начинаете вкладывать троичные выражения if / then, вы просто делаете больше головной боли для себя (или своих будущих преемников), когда необходимо внести изменения или исправить ошибки.

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

6 голосов
/ 22 декабря 2010

Это было бы бессмысленно.Тернарный полезен только в очень «примитивных» условиях, и большинство if более сложны.

Вы потеряете много времени, чтобы получить абсолютно ничего.

3 голосов
/ 22 декабря 2010

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

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

1 голос
/ 22 декабря 2010

Нет увеличения производительности вообще. Это действительно то, что легче читать. Если у вас есть куча операторов if-else, было бы проще, если бы вы оставили это так. Троичные записи обычно используются для назначения условий, таких как $var = $bool ? "IF TRUE" : "IF FALSE". Если вы делаете оператор if для выполнения ветвления кода, тогда троичный код не имеет смысла.

1 голос
/ 22 декабря 2010

Нет, они скомпилированы / интерпретированы в один и тот же код.

В конце концов, все, что вам нужно сделать, это сделать ваш код труднее для чтения и менее поддерживаемым.

0 голосов
/ 06 января 2012

Это более старый разговор, но я использую VS2010, .NET 4.0, и троичный оператор последовательно работает на 18-22% лучше, чем эквивалентный оператор if-then.

0 голосов
/ 22 декабря 2010

Существуют четко определенные случаи, когда нужно реорганизовать существующий код.

Переход от обычного if тогда к тройному выражению не является одним из них.

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

0 голосов
/ 22 декабря 2010

Я не думаю, что я бы порекомендовал сменить старые ifs на работающий проект. Подумайте о обратной совместимости, если вы не развернете свой проект в новой системе, он не будет работать.

И если вы пытаетесь ускорить процесс, я думаю, что в этом вопросе есть лучшая практика.

Итак, подведем итог, я думаю, что вы не

0 голосов
/ 22 декабря 2010

Тернары не заставляют ваш код работать быстрее - они просто ярлык (и немного сложнее для чтения). Вы должны быть очень осторожны при замене операторов if / else на троичные.

Если цепочка if / else имеет одну строку в каждом предложении (и это не другой оператор if), вы, вероятно, можете смело сводить код к троичному и полагать, что тот, кто придет после вас, сможет его понять. , Однако, если ваш код состоит из нескольких строк или вложенных операторов if, вы не должны преобразовывать их в троичные - все, что вы делаете, это добавляет сложность в этом случае.

0 голосов
/ 22 декабря 2010

Абсолютно нет, что, если вы хотите добавить дополнительные ifs? Плюс троичный метод на самом деле не быстрее

...