November 7, 2018

Business Logic Code

业务逻辑代码很模糊,感觉什么都算业务逻辑,比如某个字段为空时抛出异常,时间范围大于N时执行方法A,否则执行方法B(如下代码)

@route('GET', '/export')
def export_data():
    start_date = get_http_argument('start_date', to_type=to_date)
    end_date = get_http_argument('end_date', to_type=to_date)
    if end_date - start_date > timedelta(days=7):  # <-- 1. this is business logic code?
        async generate data
    else:
        return generate_date(start_date, end_date)


def generate_date(start, end):
    query data from db with start and end date 
    process data # <-- 2. this is business logic code?
    return data

如果说“1”处的代码算业务逻辑的话,那么“2”处的也算吗?

“2”处代码看起来是在处理从数据库中取出的数据,但如何处理数据可得讲求业务逻辑,比如数据中有空值,那不同业务逻辑自然对空值处理不同,有的认为保持空就好,有的认为这是非法数据,抛出异常,所以这样看起来这也算业务逻辑的一部分了。

那我应该把“1”处的代码和”2”处的放在一起么,都是业务逻辑代码放在一起不是很清晰么?如果这样的话route handler将会很薄,可能只需要做一些类型转换、解析http参数的工作。

是不是只有与当前问题领域相关的才算业务逻辑呢?例如系统解决零售领域问题,那么订单处理、计算就算是业务逻辑,至于某个字段值在不在范围内就不算了。

Powered by Hugo & Kiss.