В моем кабинете возникла дискуссия об использовании троичных операторов. В этом обсуждении есть две стороны.
Сторона 1) Тернарные операторы просты в написании и чтении, поэтому удобство - это чистая экономия средств.
Сторона 2) Эти троичные операторы трудно поддерживать, потому что они требуют избыточного оттока кода, если они когда-либо должны быть изменены, чтобы быть даже малейшим немного сложнее.
Дополнительные очки для ботаников, если вы можете сослаться на любые фактические исследования, проведенные одним из ведущих учреждений по этому предмету ... Мне очень интересно увидеть достоверные данные по этому вопросу.
Моя теория состоит в том, что лучший код - это код, который может легко изменяться и адаптироваться, и что чем меньше сложность требуется для изменения, тем меньше шансов на перерыв. Пример:
$id = $user->isRegistered() ? $user->id : null;
Хорошо, так что это полностью верно, но что происходит, когда код должен измениться, чтобы стать чем-то более сложным?
$id = null;
if ($user->isRegistered() || $user->hasEmail()) {
$id = $user->id;
}
Любой здравомыслящий программист посмотрел бы на троицу и преобразовал бы в стандартный if / else. Однако для этого потребовалось 4-строчное изменение по сравнению с:
if ($user->isRegistered()) {
$id = $user->id;
}
Что потребовало бы только изменения в 1 строку.