什么是干净的方式(或模式)来进行功能参数检查?

Rab*_*ski 9 parameters design-patterns

是否有任何设计模式或干净的方法来进行功能/方法参数检查(针对允许的值)?

目前,我的函数中的许多初始代码都包含这些参数检查(空字符串,无效字符,现有id,...),并且在必要时,它有点难看并且混淆了函数的"真实"代码.通常,我的代码是这样的:

def my_function(p1,p2,p3,p4):
    #check parameters
    if p1 == ''
       raise InvalidArgError('p1 can not be empty')
    if p1 not in valid_list:
       raise InvalidArgError('p1 does not exist')
    if p2 < 0:
       raise InvalidArgError('p2 can not be negative')
    ...

    #finally do something
    p = p2+p3
Run Code Online (Sandbox Code Playgroud)

对于解决方案,我正在思考Python中的装饰器.
我正在使用Python,虽然我想一个好的解决方案是与语言无关的.

orl*_*rlp 0

我想不是真的,没有一种统一的方法来做到这一点。

我个人在我的函数中澄清了这一点:如果需要进行大量参数检查(随机示例),则真正的代码从何处开始:

def setpoint(x, y):
    # checking for out of bounds
    if x < 0 or x >= maxwidth: return false
    if y < 0 or y >= maxheight: return false

    # start function
    map[x][y] = true
Run Code Online (Sandbox Code Playgroud)

也许您应该考虑将函数拆分为更小的函数,以分散参数检查。