首页 > 解决方案 > 是否通过参数分开方法?

问题描述

你能告诉我A或B哪个更好吗?

我有时会迷失在方法的定义中。

# Both returns same value.
# Only the arguments are difference.


# ------------------
# pattern A
def some_method_by_name(name: str):
    record = <SELECT ... WHERE record_name=str>
    return record

def some_method_by_id(id: int):
    record = <SELECT ... WHERE record_id=id>
    return record


# ------------------
# pattern B
def some_method(**kwargs):
    if 'id' in kwargs:
        record = <SELECT ... WHERE record_id=kwargs.get('id')>
    elif 'str' in kwargs:
        record = <SELECT ... WHERE record_name=kwargs.get('str')>
    else:
        raise Exception('wrong!')
    return record

我认为'A'很好,因为通过参数分隔方法很容易理解,但我认为它很冗长。

谢谢。

标签: pythonfunctionmethodsarchitecture

解决方案


推荐阅读