Java实验小结
一个看起来并不怎么困难的小项目,结果花去了我总共大概50个小时左右的时间,记录一下写代码时的所感所想,以备后鉴。
首先,对于一门刚刚接手的语言,给我最大的学习助手除了google,还是google。相比较而言,我并不觉得那本被传的神乎其神的《Thinking in Java》比Google更优秀。当然,这句话的前提是针对“刚刚接手Java的初学者”,并且,我的意思是,与其总是单纯显耀自己手中有一本厚厚的经典之著而只翻看前面的简介几页,还不如务实的用Google多查几个实例认真研究一下。所以,谢谢你,Google。
然后,当一个客户(老师)提出的需求是一种模糊性的方向性需求,并且尽可能给你发挥的空间的时候,那么你就可以充分利用这个可以发挥的空间,进行想象、进行实现。我发现同学们之间各个最终成果的差距就是,除了代码实现的能力些许不同以外,更大的差距在于,你是不是能想象得到某种实现,你的视野是不是很开阔。比如,在存储结构中,既然我能用xml,为什么还要用c语言擅长的文本流?不是怕做不到,就怕想象不到。
项目的框架搭建和细节撰写同样重要。例如,整个项目如果能用多个有不同意义的java类来实现,并且界面操作和功能操作相分离,比只用一个庞大的java class,晕头转向的将滚动条拖来拖去要简洁明了的多,更重要的是,前者的做法远远提高了程序运行的时间和空间效率。因为,我不必在一开始就将所有的类都实例化成对象,仅仅这一点就大大降低了内存占用率。
注重用户界面(UI)和用户体验(UE)。对于开发者来说,应当把我们的用户都当作纯粹的傻瓜。这一点上,在Bingyan工作的经历给我相当大的帮助,每一个对用户友好的细节之处,也许都是最终结果赢得客户(老师)赞赏的原因之一。从模糊搜索、智能提示、到用户帮助文档,都是很容易考虑到的方面。
如何避免学生式的程序?验收时,我也拜读过许多同学的界面和用户体验,有些当然设计和撰写的很优秀,可是,也有很多给我的第一感觉就是,这个程序一眼看去就是学生写出来的,或者说,只能算作一个大学中实验课上的程序,而远远算不上是一件产品。对此我觉得,开阔眼界的最好的方式就是静静的观察和学习那些优秀的商业软件。比如,excel中,对某个关键字进行搜索,难道excel会将搜到的结果列张新表显示出来吗?当然不会。搜索与过滤本身就是两种不同的概念。作为学生真应该好好观察观察我们周围用到的一些商业软件。
减少bug。最终交付客户之前,用尽可能苛刻的条件和变态的行为去找出潜在的bug,并且想办法修复,在客户验收中,哪怕一个小小的不影响使用的bug,都会给用户留下非常不好的印象和使用体验。
另外,自己总有一点点莫名的感觉,就是虽然java的确是一门非常非常优秀,文档和参考也相当完备,很有前途的高级开发语言,或许在相当一段时间中,只有Java平台和dotnet两种平台在博弈。可是,自己的兴趣却不在这里,相比而言,还是喜欢偏底层一点的安静而强大的c语言。或许是因为,我更想问,so, my lovely os, how do you prerform a fork command?