09暑期实习总结
第一周
本周的学习任务主要在熟悉MS SQL Server 2008/2000的使用,从在SQL Server Management Studio上建表到在Visual Studio 2008上编写存储过程,从选择数据类型到深入各类型间区别。所谓“磨刀不误砍柴工”,在实习的头一两天,一是忙碌于熟悉DBMS的使用,二是忙碌于熟悉项目整体结构和细节,这为后来的开发带来了不少便利。因为本学期数据库的课程设计我所选择使用的DBMS的正是MSSQL Server 2008,所以对SQL Server有一定的了解,当时看过关于SQL Server 2008的电子书《SQL Server 2008 for Dummies》,对于在SQL Server 2008上建表,建立表间关系,建立约束等等比较简单的操作都有一定的知识积累,就算是过了相当的一段时间也能从容地翻出资料回顾概念和操作过程。但毕竟未曾接触过SQL Server 2000,离开了SQL Server 2008强大的功能体后,如何更好地和SQL Server 2000兼容也是花了很大的一部分功夫。
在对数据库有了一定初步了解认识之后,开始对最初的数据库设计作修正并建立初步的ER关系模型图。还是因为数据库课上的课程设计,曾经在一本ASP.NET实例书上的一个案例上就有SQL Server数据库存储过程的代码,遂开始模仿该例子提供的存储过程为本项目数据库编写存储过程。但是这样一种亦步亦趋的学习方法无疑是在自掘坟墓,在别人功力深厚的代码上修改无疑是在“浮砂之上筑高台”。因为别人的实例使用了许多ASP.NET上提供的强大控件,自动生成了数据库的框架,理不清楚个中的来龙去脉根本就是在生搬硬套。最后在熟悉了编写存储过程语法和SQL语法之后开始自我感觉良好地写起代码来。但是这种“写到哪算哪”的方法是在无的放矢越搅越乱,这时发现整个项目虽是做了分工,但是却没有明确的模块划分,于是便自创地给各个模块取了名字并开始针对特定的模块编写特定的存储过程,并不时提醒自己要对整个过程考虑周到,并对之前考虑不周的表字段设计作了细微的增删修改,最后编写出《存储过程功能概要》和《存储过程和各模块关系》文档供组员开发过程中阅读。
本周的最后两天主要在“跟踪”各组员进展,检查自己所写的存储过程是否符合组员们的需求,并调试公共模块对存储过程的使用情况,全面地掌握项目各模块来龙去脉。在公共模块对存储过程调用支持的代码出来之前,曾尝试自己编写一个类似阐述如何调用存储过程的示例代码,但发现自己好久没有编写C#代码,写每一句话都要想半天,正在此时戴同学提供的公共模块出来了,读完戴同学的代码后发现自己缺乏的正是设计模式如此重要的知识,自己原来一直处于一种眼高手低的状态。因为没有系统地学习过设计模式,代码都是写到哪算哪,遂决定在休假期间开始研习.NET的设计模式。
最后,一周下来的实习感想是:学到用时方恨少,实践出真知,这是对自己在实习过程中技术方面最深刻的感想;这次的实习可谓是第一次真正融入到开发团队里面,虽说是欠缺默契,但是团队开发所带来的震撼是前所未有的。
第二周
由于先前已经完成了被分配到的任务,这星期里面主要的任务就落在了和其他组员合作,具体任务被分配到了好友管理模块的某些功能上。由于先前对项目的框架和各模块功能已比较熟悉,任务分配下来之后就是与康同学商量如何更好地使代码更有条理。商量决定,我需要完成后台访问数据库的代码,并以面向对象的方法提供接口给康同学在前台页面中调用。编写代码前,采取了对Wrox红皮书上一个WebShop实例进行研究的办法,分析并思考该实例所用到的数据绑定方法和分层结构。通过对各种数据绑定方法的尝试和总结,最终采取的对象绑定方法纠正了之前使用直接与存储过程绑定缺乏灵活和可读性差的缺点。在解决了数据绑定的问题和完成了数据操作层的代码后,我和康同学一块儿学习如何使用控件并在控件后台事件代码中调用数据操作类的接口。我们分析各个图表控件,研究它们某些特定属性的用法,并且因为之前分层和面向对象的准备工作,我们以清晰易读的代码完成了好友管理模块的大体功能。
由于我们模块提交得比较晚,其他模块已经整合起来并开始debug的阶段,刚进入集成阶段的初期发现有一种云里雾里的感觉,这是因为项目没有一个现成的框架而且没有一个命名的规范,并且有的关键地方缺少注释,还有的是自己对某些公共模块部分的知识欠缺。这只能在夜里对白天存在疑问的关键部分在msdn上查看文档来进行弥补。虽说由于时间的局限无法把msdn上对某个使用方法研究透彻,但是对ASP.NET框架有了更深的认识。虽然说白天里依然在“Rush To Code”,但是从Debug的过程中可以学习到别人Debug的方法。
整个项目下来,有了自己对团队开发的感想:一是要学习队内高人的代码和设计思路,二是要向队内其他人分享自己的学习所获,三是要学会虚心向其他人求教解决方法,四是要不断总结并加强学习项目所需知识使得自己不掉队。技术功底较为欠缺的队员要尽力是自己不拖团队的后腿,而技术上有优势的队员则要学会牺牲自己帮助别人带动起整个项目。最后在学习新技术上,要以一种迎难而上的态度和激情完成任务,最终才能达到一种触类旁通的效果。
笔记与参考资料:
l 【ObjectDataSource】中用作绑定的方法必须声明为static
l 【Button.CommandArgument属性】
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.button.commandargument(VS.80).aspx
l 【GridView.SelectedValue属性】
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridview.selectedvalue.aspx
l 【GridView中使用DataKeyNames存储数据键值 】
http://www.cnblogs.com/heekui/archive/2008/04/09/1143831.html
l 【什么是MVC(三层架构)】
http://sduchengxu.blog.51cto.com/147902/23710
l 【IsPostBack,客户端把页面回传的概念】
http://www.xing3.cn/post/IsPostBack-20071211.html
l 【Page与UserControl中IsPostBack用法的区别】
http://blogs.clearscreen.com/enadan/archive/2006/02/21/2838.aspx