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

2019-06-06 11:21:40 +08:00
 Krma

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

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

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

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

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

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

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

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

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

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

具体的理想实现方法还要同时参考很多其他的设计原则,而且也依赖具体场景。比如你暴露了过多的信息,就会违反最小知识原则,让业务层需要关注太多不必要信息。
Krma
2019-06-06 12:56:35 +08:00
@firefffffffffly 学习了!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/571432

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX