Больше функций

Функции нужны, чтобы сделать код понятным и реиспользуемым.

Понятным – это когда с первого взгляда понятно, что он делает:

credentials = load_oauth_credentials_from_file('fb_creds.json')
fb_api = get_facebook_api(credentials)
messages = fb_api.get_unread_messages()
send_notifications_to_slack(messages=messages, user='ilebedev')

Сперва из файла загружаются ключи доступа к АПИ Фейсбука, потом создаётся объект для взаимодействия с АПИ и получаются непрочитанные сообщение. Эти сообщения отправляются в Слак пользователю ilebedev.

Достаточно проглядеть код сверху вниз и сразу понятно, что он делает. Если нужны детали – можно перейти к исходникам каждой функции. Они могут быть сложными, но тут этого не видно: код написан на английском.

Любой из этих кусков может пригодиться в других скриптах: например, доступ к АПИ можно хранить не только для Фейсбука, но и для Адводс или Вконтакте. Отправлять сообщения в Слак – тоже полезная функция, даже в отрыве от примера выше.

Такой код выглядит как конструктор: нашёл нужные функции, импортировал, вызвал, указал правильные аргументы – и готово.

Чтобы это работало, каждая функция должна делать что-то одно: load_oauth_credentials_from_file просто загружает oauth-ключи, она не знает про Фейсбук и про то, что с помощью этих ключей будут получены сообщения. Функции get_facebook_api всё равно, откуда к ней приехали credentials – из базы данных, файла или просто из скрипта. send_notifications_to_slack ничего не знает о том, что messages к ней приехали от Фейсбука, для неё это просто сообщения, которые надо отправить пользователю user.

Каждая функция делает что-то одно