在开始做第二张卡片的第一天,仝老师跟我谈了一下我第一张卡片的完成情况。
主要有以下几个问题:
1.在写代码的时候,我的很多变量名函数名字起的很奇怪。变量名字和函数名字应该尽量朝业务语言发展,尽量做到代码即文档。
2.不要总是copy-paste,在不断重复的做同样工作的时候,就应该意识到有问题了。消除重复很重要!(我觉得不只是对写程序来说有道理)
3.有些地方能够用参数传递解决问题的,不要都用localStorage解决。应该尽量减少全局变量的使用。
4.模块化,把一些可以抽取出去的代码单独编写成函数模块化。
5.保持工作区的neat,改哪个文档里面的程序就开哪个文档。不要一次性打开好几个文档改代码。
6.尽量想办法降低圈复杂度,也就是减少if,for,switch的使用。
7.利用好github库。细化工作,及时提交。Agile思想:小步快跑,清晰思路。
8.对于controller文档,尽量每一行都是$scope,调用函数实现功能,保持代码整洁。
带着大胡子叔叔提的建议,我把这次写第二张卡片的重心放在了尽量解决以上问题。在写程序之前,给自己写了一个提纲,每一个阶段该完成什么,一步步去实现第二张的要求。
完成第二张卡片的主要思路:
在程序中一共建立了三个全局变量,通过localStorage在各个controller之间使用,分别是activity_list(活动列表),current_activity(当前进入的活动报名页面),current_registration(当前进行中的活动).
activity_list中的每个元素一共有五个key:name,activity_id,participants,state..其中state的作用是用来表示活动的状态,state=1代表活动从来没有开始过,state=2代表报名活动正在进行中,state=3代表报名活动已经结束。participants里面存的是该活动的报名者的信息。
current_activity是直接从activity_list中抽取的。当点击一个页面的时候,这个活动中的所有信息都将被传到current_activity中。
current_registration中一共只有两个key,一个是id,一个是state。id代表了他的活动编号。state代表的是活动的状态。
由这三个变量,在程序间的相互传递就可以实现第二张卡片的要求。
具体来说,就是在活动列表中点击相应的活动,将该活动的信息传给current_activity。由current_activity控制在报名页面的显示。在报名页面如果对current_activity的值有改动的话,再调用一个自己编写的同步函数,将current_activity的变化实时的i改写到activity_list上面。
current_registration用来控制开始按钮的变化,报名人数的显示,和短信的收发,还有颜色的变化。
activity_list主要起一个存储活动信息的作用,保障活动的信息在各个页面之间实时的变化和显示。
我的问题:
1.在给自己列提纲的时候,对整张卡片的要求没有一个比较宏观的概念。所以在完成第二张卡片的时候,林林总总改了4次数据结构。
在大学上课的时候,老师就有讲过,一个程序,代码不是最重要的,算法才是core。所以,在写程序的时候,花在思考上面的时间一定比写程序的时间多。忌想到一点写一点,因为写到后面,很可能造成写一句后面改一次前面的情况。我这一次就是这样,在一开始给自己定计划的时候考虑的很不全面。导致写到后面,完成一个新的阶段就要改一次数据结构。在写的过程中还是很有挫败感的,有一种学一点新东西就掉一些旧知识的无力感。希望在做下一张卡片的时候吸取这一张的教训。
2.在写的时候,代码真的很丑。每一次都要在写完之后单独花时间将代码美化。
3.程序的完备性还是有问题,总是会考虑漏一些情况,然后又再想办法补救。
4.再该程序前,也要想好了再下手改。有好几次都把正确的误改错了。
收获:
1.在完成这张卡片的过程中,仔细的研究了一下js中对字符串的操作。意外的学到了一个去掉字符串里面所有空格的函数
replace(/[ ]/g,"")
2.学会了怎么样去刷新页面的数据。
var page_jump_or_not = document.getElementById('participant');//这个participant需要在该页面的html标签中设置id if (page_jump_or_not) { var scope = angular.element(page_jump_or_not).scope(); scope.$apply(function () { scope.data_refresh(); //这段函数代码到相应的controller里去写 }) }
3.对于{{}}在html页面中的应用有了新的理解。知道了{{}}也可以用在标签里。
相关推荐
数据格式 uid_score_bid 如 dingdanglbh,4.0 ,25862578 Luna-cat,5.0 ,25862578 aiyung,5.0 ,25862578
9点潮流计算PSO的优化算法 很简单,只要在MATLAB运行就可以
Repaso_Clases_Objetos_call_aplly_bid_22_02_2021
欧美1分钟历史数据,2003年5月到2019年2月,MT4EA回测好用。
去噪代码 matlab
mc_bid
bid0-lid64-steam.game_steamzc9_2.0.0.2702.exe.file
crc-16的编码,使用的多项式是G(x)=x^16+x^12+x^5+1
bid0-lid0-steam游戏管家_steambdth01_1.0.0.1487@1prw2r@gog.exe
Bid Documents - Toyota Hilux Fx
backup_1000821v1001400000.zip
bid0-lid64-steam.game_steamzc_2.0.0.2242.exe
附加服务器 欢迎使用Addons Server存储库! 请随时访问托管的当前项目的网页。 如果要安装,请遵循 指南。 我们希望您的帮助! 如果您有任何疑问,可以通过与我们联系。 请在此处报告错误: : 或您可以通过访问AMO...
出价统计信息和详细信息 作为签约过程一部分而...bids.details数组用于提供一个或多个Bid对象,每个对象代表收到的唯一出价。 bids.statistics数组用于表示有关投标和投标者数量的关键统计信息。 数组中的每个条目都
VHDL语言编写,实现双向移位寄存器功能,在MAX+plus软件下实现
bid格式招投标文件阅读器,可以打开浏览、管理电子招标文件,如果打不开标书文件,请按下面步骤检查:1、请查看招标文件(.bid文件)是否下载完全,请用IE下载工具下载;2、查看IE浏览器版本,如果版本低于IE8,低于IE...
[1]和[2]中的适用于类的BID方法的MATLAB DEMO。 该方法基于即插即用(PnP)框架。 MAIN BID函数:Main_BID_PnP.m 演示脚本:Demo_BID_PnP.m%========================================== ========================...
kp guide on how to use the kp tools
create index book_bid_idx on book(bid); create index abc on student(sid,sname); create index abc1 on student(sname,sid);他们是不同的 2、查看索引 select index_type,index_name,table_name,uniqueness from...
PHP Pro Bid v5.zip