V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolair
V2EX  ›  问与答

请教一下装饰器的逻辑

  •  
  •   coolair · 2019-01-07 16:51:21 +08:00 · 697 次点击
    这是一个创建于 2148 天前的主题,其中的信息可能已经有所发展或是发生改变。
    拿用户举例:
    @shop_is_existed # 店铺存在,不存在跳转到店铺不存在页面。
    @user_is_existed # 用户存在(该用户是上述店铺下的用户),不存在则 403。

    这两个装饰器,在 @user_is_existed 这个装饰器中需要在判断店铺是否存在吗?如果判断的话,就相当于 @user_is_existed 里面的部分功能和 @shop_is_existed 重复了。如果不判断的话,在使用上就得注意,@shop_is_existed 不能漏掉,并且需要在 @user_is_existed 前调用。

    哪种写法更合适?
    1 条回复    2019-01-07 17:01:50 +08:00
    Vegetable
        1
    Vegetable  
       2019-01-07 17:01:50 +08:00
    如果说不存在店铺,就肯定不存在用户
    那么就必须在 user 装饰器里检查店铺是否存在

    否则使用过程中出现了遗忘的情况,会出现难以预料的问题

    功能出现重叠很正常啊,仔细想一下,这不就是继承吗?
    user 继承了 shop 的功能,在此基础上检查是否存在用户.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2705 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:32 · PVG 18:32 · LAX 02:32 · JFK 05:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.