课否 · 回复功能开发实践(三): 对于业务的思考

这个月大部分闲暇时间都在开发《课否》的这个回复功能,今天终于把完整的代码commit并且push掉了。在这期间,我走了一些弯路,同时也有了一些感悟,想要记录下来。

首先先来聊一聊我们的这个回复功能到底是什么吧。

课否之前的界面是这样的,对于每一个老师展示其所有的评价。(回复按钮由我新增)

课否原界面

我们的需求是针对每一条评价进行回复,并且对于回复也可以进行回复。我仿照了浙大云朵朵小程序的设计方式:在每一条评论的下面显示若干条回复,如果回复较多,则提供展开回复的按钮,通过点击按钮来展现左右的回复。按照这个思路,我在数据库中为每一个comment下添加了replies字段。

这里我同色老师进行过一次交流,针对设计方案的选择进行讨论。色老师提议采用微博的回复方式,在每一条评论下放置几条回复以及一个查看所有回复的按钮,点击按钮之后跳转到一个新的界面,这个界面上方呈现被评论的评价,下方呈现该评价的各种回复。

色老师的这个建议让我拨开云雾见到了青天。

在此之前,我对于数据库的设计十分纠结,不知道是该服用comment还是新建一个replies的表。按照色老师的建议,我们自然而然的想到,要新建一个replies的表,每个reply保存其root是哪个comment,而在comment下保存reply的外键数组。

解决了数据库的结构和界面的设计问题之后,我很快的完成了这些功能。

这次实践给了我很多反思。

其一是技术层面的,关于redux和state的选择。在开发时,我最开始把很多数据都一股脑塞进了redux中,后来我才回想起redux的作用是为了不同组件共享数据。于是我才想到应当把一些数据写进组件里,用state就足够了。

其二则是开发经验上的。在此之前我总觉得前端开发就是学框架、学语言。框架会用了,自然就会开发了。但是经过这次开发我才发现,我们如何完成需求往往才开发人员要做的。或者说,我们应当用怎样的方式去设计、去完成这个需求。

写到这里,我对于这篇博客很不满意。觉得自己不知所云。觉得自己没有把内心的那种感悟写出来。不知道是不是我的表达能力出了问题。

也可能是我经验还不够足,对于开发的认知也很浅薄。

总之,在以后的开发中,我应当先好好地分析需求,分析业务逻辑,再去写代码。而不是写了半天不知道自己在写什么。