Почему мне кажется, что это говнокод?

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

<?php
$userDice=mt_rand(1,6);
$computerDice=mt_rand(1,6);
if ($userDice > $computerDice)
echo "У юзера выпало $userDice, а у компьютера $computerDice. Выигрыш юзера";
else
if ($userDice < $computerDice)
echo "У компьютера выпало $computerDice, а у юзера $userDice. Выигрыш компьютера";
else
if ($userDice == $computerDice)
echo ("У юзера выпало $userDice, а у компьютера $computerDice. Ничья!");
?>
  • Вопрос задан
  • 368 просмотров
Пригласить эксперта
Ответы на вопрос 3
delphinpro
@delphinpro
frontend developer
Держи еще вариант ГК

$message = 'У юзера выпало %s, а у компьютера %s. %s';
$resultMessages = ['Выигрыш компьтера', 'Ничья', 'Выигрыш игрока'];

$userDice = mt_rand(1,6);
$compDice = mt_rand(1,6);

$diff = $userDice - $compDice;
$result = ($diff ? $diff / abs($diff) : $diff) + 1;

printf($message, $userDice, $compDice, $resultMessages[$result]);


Рефакторим на php7 (минус две строки)
$message = 'У юзера выпало %s, а у компьютера %s. %s';
$resultMessages = ['Выигрыш компьтера', 'Ничья', 'Выигрыш игрока'];

$userDice = mt_rand(1,6);
$compDice = mt_rand(1,6);

printf($message, $userDice, $compDice, $resultMessages[($userDice <=> $compDice) + 1]);
Ответ написан
rpsv
@rpsv
делай либо хорошо, либо никак
Потому что это говно код. Дело закрыто!

www.php-fig.org

А если по коду:
$userDice = mt_rand(1,6);
$computerDice = mt_rand(1,6);

// для PHP 7
switch ($userDice <=> $computerDice) {
	case -1:
		$message = "У компьютера выпало {$computerDice}, а у юзера {$userDice}. Выигрыш компьютера";
		break;
	case 0:
		$message = "У юзера выпало {$userDice}, а у компьютера {$computerDice}. Ничья!";
		break;
	case 1:
		$message = "У юзера выпало {$userDice}, а у компьютера {$computerDice}. Выигрыш юзера";
		break;
}

echo $message;
Ответ написан
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Если не устраивать из этого ООП, то в голову приходит только это:
<?php
$userDice = mt_rand(1,6);
$computerDice = mt_rand(1,6);
$text = 'У юзера выпало ' . $userDice . ', а у компьютера ' . $computerDice . '.'; 
if ($userDice > $computerDice){
  $text .= ' Выигрыш юзера';
} else if ($userDice < $computerDice){
  $text .= ' Выигрыш компьютера';
} else {
  $text .= ' Ничья';
}
echo $text;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы