前言
“要是考试不考英语就好了”
哎,提起英语,都是伤心事。有时候严重怀疑自己不是一块学习英语的料。单词背了忘,忘了背,背了又忘。考试之前看啥单词都会,一上考场:这单词啥意思?
前两个月又开始了痛苦的英语学习。起步:背单词。开始还是按照以前的方法,每天规定背多少个单元,以此类推…当背完之后,测试自己的单词数。懵了,明明背过的单词,依然记不住…
总结失败经验,百度:为什么单词记不牢?发现:艾宾浩斯遗忘曲线[了解一点,没有实践过]。为了验证艾宾浩斯遗忘曲线是否有效,海轰按照遗忘表格背了一个月单词[中间有几天没有坚持住]点开测试网站,哈哈,单词量居然还真的提高了[具体提高多少就不说了,不然就可以猜出一共会多少个词了]
至今也用过几款单词APP,很好,但是感觉不适合自己。
不如,给自己写个吧o( ̄︶ ̄)o 希望实现的功能如下:
- 利用艾宾浩斯遗忘曲线记忆单词,统计每个单词自己错误的次数,便于复习
- 界面尽量简单,好操作一点
- 背诵一遍单词后,需要对之前的单词进行复习
程序截图
过程
1、确定数据结构
- 首先,需要一个集合记录单词,组成词库,一个集合记录用户的个人信息、背诵情况,便于之后数据分析。
2、确定功能
- 明确小程序应该具备的一些功能:背诵单词、复习、单词分析…起初开发一个测试版本,用于验证基础功能是否可以实现,然后在后续的版本慢慢更新新功能。
- 作为第一个版本,验证基础功能: 读取艾宾浩斯遗忘表格,确定当天需要新学、复习的单词章节
- 对于在背诵单词过程中,不认识的单词需要进行复习,一直到了解其意思为止//利用while循环
- 统计单词信息:每个单词错误次数、当天背诵单词数量、单词章节//为后续版本作基础
3、具体思路
对于艾宾浩斯遗忘表格,开始想的办法是将其存为一张二维表。首次加载界面时,获取当前日期,与数据库用户日期进行作差,计算出当天应该背诵复习的章节。之后不知道咋了,一直报错,不知道哪里出了问题。后面只好采用了比较笨的一种方法:一维数组存储。部分代码如下:
如何背诵单词呢?这里海轰采用的方法是:根据计算出的章节数组,依次获取对应章节里面的单词,然后再依次循环显示在界面上。背诵单词,首先界面只会显示一个单词,用户需要根据自己是否认识其含义,选择"不认识"or"认识"。选择"不认识",显示其含义,并将其单词信息加入复习队列,错误次数+1;选择"认识",则读写下一个单词。在学习完今日的单词之后,再开始对不认识的单词进行重温,必须将单词意思全部了解方可结束。只有不认识,则一直循环,直到认识为止。//是不是有点狠
从思路上看,难度不大。开始的时候海轰也是这样认为的。然而,真正自己开发的时候,完了,太难了。其他不论是"认识"/“下一个”,方法都是一样的,难就难在如何在一个方法中区分不同的情况。比如,认识有新学时候的认识,也有复习时候的认识。逻辑性比较强,这里花费的时间最多!部分demo代码如下:
4、问题反馈
- 第一个版本的demo写完以后,上线测试了一下。bug非常多!
- 页面自动滚动、单词显示不全
- 新用户无法读取最新单词库 用户无法更新
- 单词未背完,直接返回,程序会崩溃 单词数量出现异常
- 之后根据bug,一个一个找原因。后面还是慢慢找到了一些原因,比如啥变量声明错误、程序异常终止… 当然目前小程序上的背单词模块部分bug已经修复,但是依然有很多bug存在,只有在今后的版本更新再修复了//最近时间不太充足
5、收获
其实很久没有写过小程序了,很多语法都忘得差不多了。这几天稍微有点空,加上前段时间被英语折磨,一时心血来潮,就写了这个模块,希望以后有时间再慢慢完善吧。
这次觉得收获最大的事,学会了动态加载字体吧。以前对于字体这块,觉得没有啥,能看就行。后面发现单词如果还是默认字体的话,有点不好看。然后就不断百度,找方法。大多数的方法就是将字体库加载到本地或者服务器,再使用。加载到本地这个,不太行,一个字体都几M了,小程序代码限制在2M以内[近期内测,小程序最多16M];部署到服务器,不占空间,但是延迟大,用户体验不是很好。综合一些因素,选择了后者,部署在云服务器吧,自己用用也是可以了。[bug:部分手机无法加载新字体]
虽然目前自己的背单词模块使用体验不是很好,但是毕竟是自己一点一点写出来的,非常喜欢!!
总结
"巧记单词"模块已经上线小程序,感兴趣的小伙伴可以体验体验【小程序:海轰Pro,在"创意小屋"中】
目前还处在测试阶段,bug,肯定是非常多,以后有时间再慢慢更新吧。之后版本会依次加入单词默写、单词错误次数分析等功能。程序是一时头脑发热写的,很多地方写的不好,大佬勿喷。开发差不多用了一个下午+一个晚上,时间跨度2天。
如果有小伙伴发现bug或有什么好的提议,欢迎留言,谢谢♪(・ω・)ノ