V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Krma
V2EX  ›  程序员

框架可以解决的问题需要逻辑上再做单独处理吗?

  •  
  •   Krma · 2019-06-06 11:21:40 +08:00 · 1243 次点击
    这是一个创建于 1996 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做新手引导系统,基本思路是封装好一个引导的框架,在各个界面通过各类条件调用不同的引导条目。

    那么,是应该在框架里做一些处理比如客户端限制同一步引导只能触发一次这样,还是应该在不同界面通过逻辑规避多次触发同一步引导的问题更好呢?

    我的想法是逻辑尽量规避,但最终还是需要靠框架来保证表现效果。 这边技术老大则表示,一切问题都是逻辑问题,不能靠框架的统一处理把问题掩盖过去。

    大家在遇到类似框架可以解决的问题时会坚持一定要在逻辑上做到完美吗。

    2 条回复    2019-06-06 12:56:35 +08:00
    firefffffffffly
        1
    firefffffffffly  
       2019-06-06 12:17:10 +08:00   ❤️ 3
    我的理解框架可以做这种通用逻辑,但是很重要的一点是框架绝不能隐藏或者掩盖这些逻辑产生的信息,越重要的信息就越应该越明显的暴露给业务层,这样才能保证调用方对框架接口产生足够清晰的预期。

    比如你的引导框架有 show()/hide()两个接口,这时候如果你将 show()中加入只能展示一次的逻辑,这时 show()接口是否真正生效,就应该是非常重要的信息(在编写框架时,不能提前假设调用方用不到这个信息),暴露这个信息就很多种方式,比如如下几个,越往下的提示越明显。

    boolean show() 用返回值是否成功 show

    initShowType(int type, int maxTimes)和 show(type), 提供提前初始化引导的接口显式提示这个逻辑

    show(int maxTimes) 用显式参数让调用方察觉这个逻辑存在

    show() throw AlreadyShownException 最明显的提示,迫使调用方必须考虑这个情况

    具体的理想实现方法还要同时参考很多其他的设计原则,而且也依赖具体场景。比如你暴露了过多的信息,就会违反最小知识原则,让业务层需要关注太多不必要信息。
    Krma
        2
    Krma  
    OP
       2019-06-06 12:56:35 +08:00
    @firefffffffffly 学习了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4732 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:46 · PVG 17:46 · LAX 01:46 · JFK 04:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.