首先感谢wmw这半年来给我的指导和信任,我在这个环境中学到了不少,并希望ll能很好的完成后面的任务,并有所收获。
在工作中,学到了些东西,其实大部分是项目的经验,也有一小部分技术,列出来的应该算是这半年来在做的比较重要的
工作或者印象比较深刻的经验。
1.委托,事件,观察者,databinding,线程(Compensator,laserInterferometer)
a.使用线程,通过一个线程,定期的通过调用API读取空气传感器和材料传感器的数据到逻辑层。而逻辑层判断底层的数据是否改变
,通过观察者模式实现了数据到UI的传递。
b.熟悉了c#和.net中的委托和事件的机制。用这种方式来实现callback,可以用这种方式实现观察者模式。
c.另一种实现观察着模式的方式,仅适用于c#,使被观察者继承INotifyPropertyChanged接口,通过databinding实现UI和逻辑层的
绑定。
2.组合,继承(实现),工厂(Measurement)
a.在软件中大量使用组合而非继承,这样可以达到松耦合的效果。
b.在组合关系中,组合的类不应该是一个具体的类的实例,而应该是一个抽象类,通过工厂来产生具体类的实例。(将变化封装)
c.只继承抽象类或接口,而不继承具体类,避免耦合。将有相似功能的类的共同功能抽象出来,并在抽象基类中实现,并在抽象类
中提供abstract方法,在具体类中实现不同的功能。(软件中的各种measurement)
3.重构
a.将底层应该提供的功能用函数实现,并在顶层调用,避免UI和具体的功能产生耦合。(UnitConvert)
b.将反复出现的功能或类似的功能写入函数,其中的不同可以通过参数确定。(AddGroup,NoOfRuns)
4.线程同步
当两个或以上线程同时访问资源,并有线程需要对资源进行修改时,要进行线程同步(锁,信号量等)(E1735A,E1736A)。
5。UI(DotNetBar,Chart)
6。Wix
我的实习感触:
1。应该通过实际的开发扩展和巩固自己的知识,而不应该被项目撵着走,尽量用最漂亮的实现方式完美的实现软件的功能。
2。实习的目的是学习,不是帮资本家创造价值,如果学不到太多东西,就离开这家公司,毕竟我们和正式员工不一样,我们需要充实自己。当然,作为公司指导我们的回报,我们应该尽最大努力做好自己的工作,争取做到比经理要求的更好。
3。定期梳理并巩固自己学到的东西。
下面是从我个人角度来看这次项目管理中存在的问题:
1。对项目的进度要有清醒的认识,分工明确。(后期任务分工不明确导致效率低下,士气低落)
2。正在做的任务尽量一气呵成,不要中途打断做其他任务。(之后再看这段代码,根本想不起来在做什么)
3。测试和开发要同步完成。(同上,节省时间保证质量)
4。宁可少做一些功能,不要贪多(感觉这个项目不会按时发布release)
5。给程序员自由的空间,让他们自由的完成任务,效率会高许多,在程序员完成任务时,应该给鼓励而不是一味的再分配好多琐碎
的任务。
6。代码的重构很重要,不要为了赶进度,把重构放在后面,磨刀不误砍柴工,之宁可牺牲一点速度,后重构会越来越困难。
7。不应该为很少的用户的琐碎需求而改变软件的功能,或者放在后面的release,应该把精力用在核心功能上,我们需要作出一个
通用的软件而不是客户订制的软件。