Refactor
Я бы начал с того, что не буду звонить props.getProperty("app.auth.idp.strategy")
повторно.Назовите его один раз, и у вас сразу будет меньше причин разбивать любые строки.
strategy = props.getProperty("app.auth.idp.strategy")
if not strategy or strategy == 'saml/simpleSAMLphp' and PROXYING_MECHANISM == "ngrok":
IDP_STRATEGY = "saml/simpleSAMLphp"
elif strategy == 'saml/gsuite':
IDP_STRATEGY = "saml/gsuite"
elif strategy == 'saml/remote-simpleSAMLphp':
IDP_STRATEGY = "saml/remote-simpleSAMLphp"
else:
IDP_STRATEGY = "saml"
Продолжение строки
Для первой длинной строки ваши варианты - это продолжение строки, либо явное:
if not strategy or \
strategy == 'saml/simpleSAMLphp' and \
PROXYING_MECHANISM == "ngrok":
или неявно, внутри скобок:
if (not strategy or
strategy == 'saml/simpleSAMLphp' and
PROXYING_MECHANISM == "ngrok"):
Использовать поиск, а не повторные сравнения
Четная лучше опциязаменить длинную строку сравнений поиском dict
:
strategies = {
"saml/gsuite": "saml/gsuite",
"saml/remote-simpleSAMLphp": "saml/remote-simpleSAMLphp",
}
if PROXYING_MECHANISM == "ngrok":
strategies['saml/simpleSAMLphp'] = 'saml/simpleSAMLphp'
IDP_STRATEGY = strategies.get(props.getProperty("app.auth.idp.strategy"), "saml")
И поскольку каждый ключ dict
просто сопоставлен с самим собой, вы можете заменить , который , напростой set
поиск.
strategies = {
"saml/gsuite",
"saml/remote-simpleSAMLphp",
}
if PROXYING_MECHANISM == "ngrok":
strategies.add('saml/simpleSAMLphp')
IDP_STRATEGY = "saml"
strategy = props.getProperty("app.auth.idp.strategy")
if strategy in strategies:
IDP_STRATEGY = strategy
Выберите, какой из двух последних вы найдете более читабельным.dict
является более избыточным в своем определении, но допускает одно присвоение IDP_STRATEGY
.