这篇文章是在我完成了oop大作业之后,重新审视自己的开发流程与系统设计的一点总结与展望,简单来说:
- 这是个”154/“(一无是处)的项目
- 好在能够让我感受到一些努力的方向
代码就不开源了,实在太差了,就在这里口嗨一下就好
存在的问题与未来的计划
前端问题
- 没有对界面做任何的优化
- 没有任何的自动化测试,没有任何的后端分离的测试
- 模块化做的很差
没有对界面做任何的优化
CSS,是前端三大件中,我认为最复杂的一件,重点在于,CSS并不能被称为一门”编程语言”,应该来说,它是一门”设计用语”,在大学计算机科学中接触到的训练,可以说对CSS的学习是没有任何帮助的,这就导致即便看了很多CSS相关的资料,到了要实现界面效果的时候,还是会出现无从下手的情况
这次的大作业中,我几乎没有涉及到任何的CSS,只有在数个div
需要并列做出类似column的效果时,使用了display: inline-block
这样的属性设置,其他的我也想不到什么了
虽然离提交还有两三个星期,这个时间拿来上手一下element-ui之类的高层库,也是可能优化界面的,但是我觉得简约也是一种特色吧,另外,布置大作业时,长度不到一页纸的需求文档,我也没有太大的兴趣做出一个炫酷的界面,简约的界面反而和这样简约的需求很配呢
没有任何的自动化测试,没有任何的后端分离测试
前端的开发流程中,当然会需要测试
而我这次开发,测试的手段就是把后端服务起来,然后把前端dev-server起来,在界面上点来点去
这样子的效率低到令人发指,还需要后端的配合:
- 点来点去,人傻了都
- 如果几次操作之间记忆出现错误,很有可能上一回测到的路径,这次又没有测到
- 如果后端接口没有准备好,前端就没有办法测试
模块化做的很差
前端的模块化一直以来都是问题挺大的,说实在的设计类要做出非常好的模块化也有点尴尬,另外一方面没有使用高层框架,也会使得模块化更加困难
首先,vue中的各个模组就已经出现了类似的结构,但是我并没有很好地方法来模块化,做的也有点烦躁
其次,前端存储和请求发送没有能够很好的模块化,尤其是请求发送模块,完全耦合在了vue的代码里,前端存储模块由于使用的是vuex框架,模块性还好一些,但是由于使用上经验不足,在引入到vue中的时候,出现了一些可读性较差的冗余代码
前端未来的计划
- basic knowledge + code snippet 学习界面设计
- 了解前端的测试方式方法
- 了解好的前端架构与模块化开发方式
basic knowledge + code snippet 学习界面设计
如何学习界面的设计?如何用CSS+JS或者高层框架实现设计?这两个问题,每个人都有不同的答案
我的答案是: basic knowledge + code snippet
basic knowledge
这就是指对CSS+JS或者高层框架的基础知识要了解,不需要深入,只要能够做到,看到代码,不会感到一头雾水,而是明白,这个属性/样式作用在了哪里,至于效果如何,怎么配置,知道去那里可以查文档就行
code snippet
这个才是重头戏,毕竟设计类的,只要不是强要求,大部分都可以通过修改他人的设计,而后达到自己的目的
所以平时要多积累:
- 页面经典的布局(导航栏,登录界面,展示界面等)与实现代码
- 特殊的交互逻辑(固定在顶部的导航栏,顶部页面滑动进度显示等)与实现代码
到时候自己想要做炫酷的功能,就直接去code snippet库里找一找,改一改就好
了解前端的测试方式与方法
最重要的几个问题:
- 如何自动化?
- 如何模拟鼠标,键盘等的交互操作?
- 如何验证测试结果?
- 前端JS逻辑代码如何测试?如何单元测试?
- 如何与后端分离?
- 如何模拟(mock)后端接口?
- 怎样设计
了解好的前端架构与模块化开发方式
去看看好的开源项目,他们是
- 如何联动使用vue,vuex,vue-router,axios的
- 如何将前端存储,请求发送包装成为独立的模块
- 如何包装前端框架中的各种模组
- 其他的优秀设计理念
后端的问题
- 没有自动化测试
- 没有使用数据库事务
- 后端REST接口设计的不好
没有自动化测试
没有,真的没有,为了快速开发,测试代码为零
没有使用数据库事务
这有需求文档的问题(其实大作业布置下来的要求根本没资格被称为需求文档,只能说是非常模糊的甲方需求,啊!万恶的甲方)
也有个人的问题,本身是有情景需要事务的,但是由于对技术栈不熟悉(JS的express.js+mongoose),在尝试了几下之后,就放弃了,毕竟还要优先保证完成业务逻辑,现在想想实际上并不是很困难,完全可以做
后端REST接口设计的不好
这个”不好”,指的是什么方面呢?
首先,后端接口在开发过程中还几经变迁,基本上是开发到哪算到哪,最终导致接口变来变去,同时REST的”面向资源的操作”特性不明显
特性不明显这一点倒感觉未必非常重要,但是几经变迁这件事槽点比较大
后端未来的计划
- 学会自动化测试
- 了解各类数据库的使用
- 学习各种后端接口的设计
学会自动化测试
- 如何在框架内使用单元测试?
- 如何mock HTTP请求?(postman)
- 如何自动化mock HTTP请求并验证response?
了解各类数据库的使用
- SQL与NoSQL
- 数据库事务
- 数据库底层的实现,各类锁
学习各种后端接口的设计
- REST风格
- GraphQL接口设计
- RPC调用接口设计
开发流程上的问题与计划
主要是文档和git的workflow
文档方面,要养成良好的习惯,多写点注释,使用文档,需求文档,接口文档,设计的优先级一定是要高于编码的
git的workflow,要采用master/dev/feature/hotfix的开发方式,保持主分支的干净
总结
这次的开发活动,需求不明确,开发者也缺少经验,同时缺少动力(既不能赚钱,也不是自己感兴趣的产品),所以最终的成品是比较惨的
总的来说,需要多读,读开源项目的代码,多写,自己找到有兴趣的项目,做一些完整的,良好的开发活动