Не удается найти org.gnome.shell.recorder в gsettings

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

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

И спартанская статья Programming "SSDSLPedia" и единственная функциональная точка выхода статья "Портлендского Репозитория Шаблона Wiki" имеют некоторые проницательные аргументы вокруг этого. Кроме того, конечно, существует это сообщение для рассмотрения.

, Если Вы действительно хотите единственную точку выхода (на каком-либо non-exception-enabled языке), например, для высвобождения средств в одном единственном месте, я нахожу тщательное применение goto, чтобы быть хорошим; посмотрите, например, этот скорее изобретенный пример (сжатый для сохранения экранного агента по операциям с недвижимостью):

int f(int y) {
    int value = -1;
    void *data = NULL;

    if (y < 0)
        goto clean;

    if ((data = malloc(123)) == NULL)
        goto clean;

    /* More code */

    value = 1;
clean:
   free(data);
   return value;
}

Лично мне, в целом, не нравится стрелка, программируя больше, чем мне не нравятся несколько точек выхода, хотя оба полезны, когда применено правильно. Лучшее, конечно, должно структурировать Вашу программу для требования ни одного. Разрушение Вашей функции в несколько блоков обычно помогает:)

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

int g(int y) {
  value = 0;

  if ((value = g0(y, value)) == -1)
    return -1;

  if ((value = g1(y, value)) == -1)
    return -1;

  return g2(y, value);
}

В зависимости от проекта или инструкций по кодированию, большая часть шаблонного кода могла быть заменена макросами. Как примечание стороны, повреждая его вниз этот путь делает функции g0, g1, g2 очень легкими протестировать индивидуально.

, Очевидно, в OO и поддерживающем исключение языке, я не использовал бы операторы "if" как этот (или вообще, если бы я мог бы выйти сухим из воды с мало достаточно усилия), и код был бы намного более простым. И нестреловидный. И большинство незаключительных возвратов, вероятно, было бы исключениями.

Короче говоря;

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

2
задан 18.05.2020, 18:22

1 ответ

Это просто, потому что Вы не выполняете GNOME Shell, я предполагаю, что Вы выполняете Единицу Ubuntu, не вариант GNOME.

Для записи экранной демонстрации со звуком просто установите recordMyDesktop:

https://apps.ubuntu.com/cat/applications/gtk-recordmydesktop /

1
ответ дан 18.05.2020, 18:23

Теги

Похожие вопросы