当你思考选择什么方案的时候

原创 2018年04月17日 16:26:10

我最近在维护一个非常重要而且非常老的一套代码。

比较没有兴致,既接触不到什么前沿的技术,老的代码还那么晦涩难懂,加起需求还要小心翼翼,有点不想上心。

今天早上,老大突然说:你把你昨天日报里写的你碰到那个问题,今天过来跟我讲一下,你是怎么想的。

惊!

老大要跟我讨论我的问题了。

然后我屁颠屁颠的过去。把我遇到的问题说了。

老大竟然一边就听懂了,然后很耐心地跟我讲了他的思路,不得不说,茅塞顿开呀。

这里写图片描述

目录

需求

画了个图:
这里写图片描述

需求:要求搜索带有记忆功能,上次搜了什么【标签】的内容,这次再搜索的时候,记忆上次搜索的【标签】。

比如,这次用户搜索了小猫,选择了恶搞标签。那么下次选择小狗的时候,希望还是在恶搞标签下。

需求分析

Tab Module可以拿到标签的切换。(其中tabMenu还是框架自带的组件,并没有暴露方法可以去劫持。)
Search Module可以实现页面的跳转。

明显这俩在两个模块里面呦。

当时想出了两个方案:

  1. Tab ModuleSearch Module通信,让Search Module把之前写死的路由改成通信发过来并缓存下来的路由。

  2. Search Module自己缓存上次选中的tab,页面跳转到令Search Module``active的时候,就让它redirect一下,把路由的tab query换掉。

2.明显要pass掉,怎么能到了页面还要redirect一下呢。太hack了。
当时就选择用1.方法。

为什么会有这个迷惑

实际上,项目在设计的时候,在searchpage之间,缺失了tab route这一层设计。

tab route的设计,在功能上,应该能控制跳转,拥有小路由的功能,自己有选择展示哪个page的能力。(实际上现在的tabMenu Module没有这个能力,它就是一个page)。

跳出这个需求,实际上,一个好的架构,像我这种小萌新,加起需求来是很顺的,不会有这种迷惑。

老大提示我:如果时间充足,可以把这层tab route加上,一个完整的功能,这些都是要有的。

老大还画了图,帮我分析了一下,加上一个tab route模块之后,数据的流动。并且替我考虑了更多可能需求的情况下,会有什么问题。

最后确定的方案是我之前选择的1.方案的基础上抽象出一个module的方案,我也非常认同。

老大比我思考的角度就是高了不少。

为什么会有这个迷惑 续

回头发现,
其实我之前用的现代化框架,就不会遇到这个问题,
我们现在的tab组件,路由组件丰富,功能强大。

现在化的框架,都越来越方便开发者开发,很多功能完整,用起来舒服。
实际上,它把架构的一些问题帮我们解决了。
所以我们在遇到很老的框架写的程序的时候,我们会蔑视它的用起来不舒服,不自动化,像半成品。
实际上,是我们把很多应该思考的东西,交给现代化框架去做了。

我们缺失了一些宏观的思考。

所以我们觉得写一个业务代码很简单,没什么难的。那是你站在巨人的肩膀上。

不光要多去思考,还要站的高度更高一点吧。

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014787301/article/details/79976696

当你面临选择的时候

人生要面临多种选择,有的是主动选择,有的是被动选择。有的选择微不足道,有的选择却会让你痛苦万分,        命运就像是一条线,每个选择就是一个点,无数个点连成一条百年的时间线。说是一百年,但...
  • f_kld
  • f_kld
  • 2017-08-23 21:23:36
  • 247

希望改变方法&test()内部的变量值$b

//希望改变方法&test()内部的变量值$b,如果该方法是引用,可以通过&test()引用调用,然后赋值给外部$a,改变$a就是改变方法内部的变量$b function &test() { ...
  • iamthebestiamthebest
  • iamthebestiamthebest
  • 2016-03-03 13:40:28
  • 121

A test

This is a test for the blog space provided by CSDN.Thats it. 
  • liywenhui
  • liywenhui
  • 2007-07-04 13:48:00
  • 76

test·B·Summary

#include #include #include #include #include using namespace std; void read(int& x) { x = 0; char ...
  • qq_33583069
  • qq_33583069
  • 2016-09-05 16:34:52
  • 116

当你打开一个网站的时候,都发生了什么

原文:这是原文地址 1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存 –...
  • qq_33417547
  • qq_33417547
  • 2017-07-23 12:07:02
  • 609

当你怕鬼时到底在怕什么?

克服对灵异恐惧最好的办法,不是逃跑,而是不停地思考,不停地问自己问题。...
  • u011280039
  • u011280039
  • 2014-05-21 14:20:46
  • 613

当你感觉为时已晚的时候,恰恰是最早的时候。

从现在开始,我要好好的学习一个动态语言:python
  • dotadage
  • dotadage
  • 2013-08-10 21:12:56
  • 685

当自己迷茫的时候要知道怎样去做

这里我感觉有的话不是特别合适,大家自己拿捏斟酌自己应该怎样做                                 当你对未来迷茫的时候请看看 工资2000的人看2遍,3000的看3遍...
  • huatian5
  • huatian5
  • 2016-05-01 19:12:02
  • 1428

当你哭泣时,抱紧你

当你哭泣时,抱紧你 每个人都是带着哭声来到这个世界上的,所以哭泣是人性的本能,当我们还不懂得说话时,我们用哭来表达自己的饥饿与不舒服,当我们还是孩子时,我们可以用哭来表示自己的不满,疼痛,内疚等等之上...
  • u013568834
  • u013568834
  • 2014-07-25 18:27:08
  • 492

多功能时钟数字电路设计ewb

  • 2009年02月17日 19:52
  • 333KB
  • 下载
收藏助手
不良信息举报
您举报文章:当你思考选择什么方案的时候
举报原因:
原因补充:

(最多只允许输入30个字)