2021SC@SDUSC
本次项目的代码分析基本结束,在这次项目代码的分析中,我确确实实的学到了很多知识:
个人学习总结
一、优秀的编程思想
我再前面的有关分析中也说到过,实践出真知,在课本中学的再好,也中就遇不到那些经典的问题,有些东西课本上不会去、也没有办法去教给我们,只有在实践中才能感觉到实际的做法,这些是讲授大的思想的时候贯彻不到的地方。
二、框架与模型思维
在这个项目中,这个项目本身就是一个巨大的模型化,框架化的东西,我再分析的过程中也是一点一点的咀嚼出了它的巨大味道,面向对象的很多思想,比如接口、封装、继承、还有很多编程原则比如单一职责原则、重用原则、接口隔离原则、里式替换法则、迪米特法则等都在项目里面得到了深刻的体现,我们在学习这些原则的时候感觉是很容易,可是在实际的开发中用这些原则去处理问题的能力却大大的缺失,这也许也是我们开设实践课的原因,分析整个项目,仔细回味,其实这就是无形中的开发经验,这是单靠理论学习难以创造的,我们必须去上手实际的操作,熟能生巧,在实际的开发或者分析中掌握这种思维。
三、团队的交流学习过程
在刚开始分析的时候,我觉得一个人进行自己的分析就行,不用去管组员的分析,也不要去向他们求助,可是后来我就改变了,在这种实际项目的分析中与组员进行交流是获取正确的知识,增加理解的最快方法,在小组的分析中,每个人都有各自的分工,可这个项目是一个整体,其中的部分功能怎么也不可能完全去耦合,这在面向对象中是不可能做到的,所以这就难免要去分析上下文,去进行组员功能间的相互验证,如果我们一个人去进行,那么就难免既费力又不省心,所以这时候与组员进行交流才是王道,而且在相互交流的过程中也可以帮助加深我们对项目的理解,更重要的是起到了佐证的作用,相互印证,才学的更快。
然后就是整个项目的总结:
围绕项目的总体实现,也就是流程:
一、已经过json校验和传输校验
{
"[]": {//返回一个array
"page": 1,//array条件,页码
"count": 5,//array条件,返回数量,用pageSize必须和pageNum一起用,这个就不需要。
"sortDirection": "increase",
"sortOrder": "/user/id",
"user": {//返回一个object
"range": 1,//object条件
"sex": 0
},
"work": {
"userId": “/user/id”//缺省路径,自动补全,只在同级可用。 // "user.id"
},
"comment[]": {/返回一个array,名为comment。[comment]??
"page": 0,
"count": 3,
"comment": {//Map<[]/comment[]/comment/workId, []/work/id>
"workId": “[]/work/id”//全路径 //“work.id”
}
},
}
}
解析:
1.每解析一个object前赋值path = parentPath + objectName;
2.判断是否含转义路径:如果没有就直接获取,放到一个resultObject内并移除requestObject内对应key-value;如果有就添加到一个Map<key, path> relationMap
3.最后把resultObject的内容根据relationMap用key对应的值 替换requestObject里的
path。
4.根据requestObject再获取一次。
返回数据:
{
"[]":[
{
"comment[]":[//改为这种?{"array":[], "page": 1, "hasMore": true,//服务器还有更多数据(1)}
{
"comment":{
"content":"This is a Content...-68",
"id":68,
"parentId":448,
"targetUserId":959,
"targetUserName":"targetUserName-959",
"userId":2314,
"userName":"userName-92565",
"workId":371
}
},
{
"comment":{
"content":"This is a Content...-13",
"id":13,
"parentId":790,
"targetUserId":7162,
"targetUserName":"targetUserName-7162",
"userId":34,
"userName":"userName-5526",
"workId":371
}
},
{
"comment":{
"content":"This is a Content...-3",
"id":3,
"parentId":725,
"targetUserId":59960,
"targetUserName":"targetUserName-59960",
"userId":82002,
"userName":"userName-85560",
"workId":371
}
},
null//最后一个为null表示没有更多了,否则就是服务器还有更多数据(2)
],
"user":{
"head":"http://www.tooopen.com/view/82002.html",
"id":82002,
"name":"Name-82002",
"phone":"1300082002"
},
"work":{
"content":"This is a Content...-371",
"id":371,
"picture":"http://www.tooopen.com/view/371.html",
"title":"Title-371",
"userId":82002
}
}