0%

oop大作业总结与从中看到的未来计划

这篇文章是在我完成了oop大作业之后,重新审视自己的开发流程与系统设计的一点总结与展望,简单来说:

  1. 这是个”154/“(一无是处)的项目
  2. 好在能够让我感受到一些努力的方向

代码就不开源了,实在太差了,就在这里口嗨一下就好

存在的问题与未来的计划

前端问题

  1. 没有对界面做任何的优化
  2. 没有任何的自动化测试,没有任何的后端分离的测试
  3. 模块化做的很差

没有对界面做任何的优化

CSS,是前端三大件中,我认为最复杂的一件,重点在于,CSS并不能被称为一门”编程语言”,应该来说,它是一门”设计用语”,在大学计算机科学中接触到的训练,可以说对CSS的学习是没有任何帮助的,这就导致即便看了很多CSS相关的资料,到了要实现界面效果的时候,还是会出现无从下手的情况

这次的大作业中,我几乎没有涉及到任何的CSS,只有在数个div需要并列做出类似column的效果时,使用了display: inline-block这样的属性设置,其他的我也想不到什么了

虽然离提交还有两三个星期,这个时间拿来上手一下element-ui之类的高层库,也是可能优化界面的,但是我觉得简约也是一种特色吧,另外,布置大作业时,长度不到一页纸的需求文档,我也没有太大的兴趣做出一个炫酷的界面,简约的界面反而和这样简约的需求很配呢

没有任何的自动化测试,没有任何的后端分离测试

前端的开发流程中,当然会需要测试

而我这次开发,测试的手段就是把后端服务起来,然后把前端dev-server起来,在界面上点来点去

这样子的效率低到令人发指,还需要后端的配合:

  1. 点来点去,人傻了都
  2. 如果几次操作之间记忆出现错误,很有可能上一回测到的路径,这次又没有测到
  3. 如果后端接口没有准备好,前端就没有办法测试

模块化做的很差

前端的模块化一直以来都是问题挺大的,说实在的设计类要做出非常好的模块化也有点尴尬,另外一方面没有使用高层框架,也会使得模块化更加困难

首先,vue中的各个模组就已经出现了类似的结构,但是我并没有很好地方法来模块化,做的也有点烦躁

其次,前端存储和请求发送没有能够很好的模块化,尤其是请求发送模块,完全耦合在了vue的代码里,前端存储模块由于使用的是vuex框架,模块性还好一些,但是由于使用上经验不足,在引入到vue中的时候,出现了一些可读性较差的冗余代码

前端未来的计划

  1. basic knowledge + code snippet 学习界面设计
  2. 了解前端的测试方式方法
  3. 了解好的前端架构与模块化开发方式

basic knowledge + code snippet 学习界面设计

如何学习界面的设计?如何用CSS+JS或者高层框架实现设计?这两个问题,每个人都有不同的答案

我的答案是: basic knowledge + code snippet

basic knowledge

这就是指对CSS+JS或者高层框架的基础知识要了解,不需要深入,只要能够做到,看到代码,不会感到一头雾水,而是明白,这个属性/样式作用在了哪里,至于效果如何,怎么配置,知道去那里可以查文档就行

code snippet

这个才是重头戏,毕竟设计类的,只要不是强要求,大部分都可以通过修改他人的设计,而后达到自己的目的

所以平时要多积累:

  1. 页面经典的布局(导航栏,登录界面,展示界面等)与实现代码
  2. 特殊的交互逻辑(固定在顶部的导航栏,顶部页面滑动进度显示等)与实现代码

到时候自己想要做炫酷的功能,就直接去code snippet库里找一找,改一改就好

了解前端的测试方式与方法

最重要的几个问题:

  1. 如何自动化?
    • 如何模拟鼠标,键盘等的交互操作?
    • 如何验证测试结果?
    • 前端JS逻辑代码如何测试?如何单元测试?
  2. 如何与后端分离?
    • 如何模拟(mock)后端接口?
    • 怎样设计

了解好的前端架构与模块化开发方式

去看看好的开源项目,他们是

  1. 如何联动使用vue,vuex,vue-router,axios的
  2. 如何将前端存储,请求发送包装成为独立的模块
  3. 如何包装前端框架中的各种模组
  4. 其他的优秀设计理念

后端的问题

  1. 没有自动化测试
  2. 没有使用数据库事务
  3. 后端REST接口设计的不好

没有自动化测试

没有,真的没有,为了快速开发,测试代码为零

没有使用数据库事务

这有需求文档的问题(其实大作业布置下来的要求根本没资格被称为需求文档,只能说是非常模糊的甲方需求,啊!万恶的甲方)

也有个人的问题,本身是有情景需要事务的,但是由于对技术栈不熟悉(JS的express.js+mongoose),在尝试了几下之后,就放弃了,毕竟还要优先保证完成业务逻辑,现在想想实际上并不是很困难,完全可以做

后端REST接口设计的不好

这个”不好”,指的是什么方面呢?

首先,后端接口在开发过程中还几经变迁,基本上是开发到哪算到哪,最终导致接口变来变去,同时REST的”面向资源的操作”特性不明显

特性不明显这一点倒感觉未必非常重要,但是几经变迁这件事槽点比较大

后端未来的计划

  1. 学会自动化测试
  2. 了解各类数据库的使用
  3. 学习各种后端接口的设计

学会自动化测试

  • 如何在框架内使用单元测试?
  • 如何mock HTTP请求?(postman)
  • 如何自动化mock HTTP请求并验证response?

了解各类数据库的使用

  • SQL与NoSQL
  • 数据库事务
  • 数据库底层的实现,各类锁

学习各种后端接口的设计

  • REST风格
  • GraphQL接口设计
  • RPC调用接口设计

开发流程上的问题与计划

主要是文档和git的workflow

文档方面,要养成良好的习惯,多写点注释,使用文档,需求文档,接口文档,设计的优先级一定是要高于编码的

git的workflow,要采用master/dev/feature/hotfix的开发方式,保持主分支的干净

总结

这次的开发活动,需求不明确,开发者也缺少经验,同时缺少动力(既不能赚钱,也不是自己感兴趣的产品),所以最终的成品是比较惨的

总的来说,需要多读,读开源项目的代码,多写,自己找到有兴趣的项目,做一些完整的,良好的开发活动