голову.
У меня есть функция
def get_cgi(host, user, password, timeout) -> int:
pass
А не лучше ли заменить 4 аргумента, на один словарь, например:
def get_cgi(args: Dict[str, str, str, int]) -> Dict:
return args
Что лучше ?
У Dict указывается тип ключей и тип значений, всего две штуки
Ну тогда так def get_cgi(args: Dict[str, str | int]) -> Dict: return args
def get_cgi(host: str, user: str, password: str, timeout: int) -> int: pass
ну и сиди гадай что там вообще
если у тебя словарь, значит там может лежать хз что. Наприме {"user": 11, "user2": 222, "user3": "xxx"} подробнее (тут не рассматривается передача отдельными аргументами, но думаю суть ясна) https://t.me/advice17/8
Суть полностью ясна. А если у меня так случится что аргументов будет 20, что уже по читаемости х**ня. Значит я должен будут разбивать функцию или я г**но кодер, верно ?
Ну вот для примера уже длинная куча аргументов. def add_host(zabbix, host: str, name: str, status: int, interfaces: dict, groups: dict, templates: list): zbx = zabbix try: zbx.host.create( host=host, name=name, status=status, interfaces=[interfaces], groups=[groups], templates=templates ) except ZabbixAPIException as e: print(e)
Ох, когда-то у меня была подобная херня в коде, но потом я понял, что это просто отвратительно. Ты не можешь никак отличить извне ситуацию когда у тебя все ок и когда не ок. И падать твой код будет не на zbx.host.create, а на каком-то другом куске кода(а возможно и в другом сервисе) еще и с непонятной ошибкой. Не надо так делать
Обсуждают сегодня