В своем комментарии я упомянул три преимущества функций:
Их легче тестировать и проверять на правильность.
Функции можно легко повторно использовать (получить) в будущих сценариях
Они нравятся вашему боссу.
И никогда не недооценивайте важность числа 3.
Я хотел бы затронуть еще одну проблему:
... так что возможность произвольно менять порядок выполнения - это не то, что мы вообще делал бы. Например, вы бы не захотели внезапно поместить
declare_variables
послеwalk_into_bar
, это могло бы нарушить работу.
Чтобы получить преимущество разбиения кода на функции, нужно попытаться сделать функции как можно более независимыми. Если walk_into_bar
требует переменной, которая больше нигде не используется, тогда эта переменная должна быть определена и сделана локальной для walk_into_bar
. Процесс разделения кода на функции и минимизации их взаимозависимостей должен сделать код более понятным и простым.
В идеале функции должны легко тестироваться по отдельности. Если из-за взаимодействия их нелегко протестировать, это признак того, что им может быть полезен рефакторинг.
Немного поздно, но я тоже только что наткнулся на эту проблему.
Проблема в том, что x0vncserver нуждается в сеансе X для входа в систему для вашего пользователя, поэтому вы должны обеспечить две вещи:
Ваш пользователь должен быть настроен для автоматического входа в систему
Поместите спящий режим в команду ExecStart
, чтобы рабочий стол мог запуститься и войти в систему до того, как служба x0vncserver
попытается запуститься:
ExecStart=/usr/bin/sh -c 'sleep 3 && /usr/bin/x0vncserver -display :0 -rfbport 5900 -passwordfile /home/<your_user_name>/.vnc/passwd &'
Сон помог мне, и теперь мой x0vnc
работает.
Поскольку x0vncserver
запускается только после сеанса xsession, а у меня среда LXDE, проще создать файл script.sh
, как показано ниже
#!/bin/bash
x0vncserver -display :0 -rfbport 5900 -passwordfile ~/.vnc/passwd
и сделайте его исполняемым с помощью sudo chmod +x script.sh
и добавьте строку в файл ~/.config/lxsession/LXDE/autostart
, как показано ниже
path_to_the_script_file/script.sh
и x0vncserver
запускаются при запуске сеанса рабочего стола LXDE, и это то, что мне нужно.