Какую альтернативу использованию оператора goto следует предпочитать при написании кода?

Как можно переписать этот код, чтобы избежать использования оператора "goto" и сделать его более читабельным?
  • 30 мая 2024 г. 14:51
Ответы на вопрос 2
При написании кода следует предпочитать использование структур управления, таких как циклы, условные операторы и функции. Оператор goto считается неудачным с точки зрения читаемости и поддержки кода, поэтому его использование следует избегать.

Пример переписанного кода без использования оператора goto:

```c
#include <stdio.h>

int main() {
    int num;

    printf("Введите число от 1 до 5: ");
    scanf("%d", &num);

    if(num < 1 || num > 5) {
        printf("Ошибка: число должно быть от 1 до 5.\n");
    } else {
        switch(num) {
            case 1:
                printf("Вы ввели число один.\n");
                break;
            case 2:
                printf("Вы ввели число два.\n");
                break;
            case 3:
                printf("Вы ввели число три.\n");
                break;
            case 4:
                printf("Вы ввели число четыре.\n");
                break;
            case 5:
                printf("Вы ввели число пять.\n");
                break;
        }
    }

    return 0;
}
```

Этот код более читабельный и легко поддерживаемый, так как используются стандартные структуры управления.
function rotateToLast($streamArrUrl, $streamUrl, $stream) {
    if (count($streamArrUrl) === 0) {
        return;
    }

    if (empty($streamUrl)) {
        $streamArrUrl = [$streamUrl];
        return;
    }

    if (ipTV_lib::$settings["priority_backup"] === 1) {
        return;
    }

    if (empty($stream["server_info"]["current_source"])) {
        return;
    }

    $sourceIdx = array_search($stream["server_info"]["current_source"], $streamArrUrl);
    if ($sourceIdx === false) {
        return;
    }
    
    $tmp = array_slice($streamArrUrl, $sourceIdx + 1);
    array_splice($streamArrUrl, $sourceIdx + 1);
    $streamArrUrl = array_merge($tmp, $streamArrUrl);
}

rotateToLast($streamArrUrl, $streamUrl, $stream);
Похожие вопросы