软件工程这门课在印象中就是一门理论课,因为以前没有接触过,想象中的场景是:老师打开ppt,然后照本宣科的开始念经。在第一节课上,作为见面礼,老师开场赠送的一波营养丰富的鸡汤确实很是鲜美,听后信誓旦旦的感觉一定会成就一番事业(不过我更觉得像是一场90分钟的单口相声)。所以课上听得酣畅琉璃,课后不久也就忘得差不多了。然后随之而来的是号称11项的课后作业,其实都是一些简单的活儿。有句话说得好:”难的事情不会做,简单的事情做不好,那你能干啥?“。其实我确实将任务都完成了,但后来分数很是不理想,因为没能按规定的要求进行发布。所以从第一次的课后作业中我体会到:即便你能做出结果,但是如果不能很好的展示给客户,那一切都是徒然。就像你号称自己精通十八般武艺,可是到了比武场却不出拳一样。
时间来到第二节课,我意识到如果把每节课当成老师的单口相声来听,也只能过过耳瘾,就像拿零碎的时间来看新闻一样,对当时看到的新闻表示震惊,或是感同身受,过了两小时后再要你讲述你看到的事情,却一概不知。所以我决心在听老师的课时,写一些自己应该注意的事项。随着90分钟的逝去,居然足足写了一页的内容,同时也惊叹于看似笑点百出的“单口相声”能有这么多信息量。要学会从别人话中提取信息。同时课后也是留下了一大批作业,看似在前次作业的基础上难度稍有增加,然后想着要以自己理想中的方式来完美实现。就拿题目中的一项“编写程序,实现(正,负,分)数的加减乘除四则混合运算“来说,想着挺简单的,但真正实现时才知道要想好所用的数据结构,设计流程,以及各种边界情况。最后才感到要一次性完成一个理想中的作品是很有难度的,所以我先实现一个简单的版本,然后在下一个迭代周期进行改进,Rome was not built in a day。在需求上不懂的一定要和同学多交流,讨论。需求理解错了后面的一切功夫都白费。我就是花了大半天的时间在一个很简单的需求上(关于重定向的问题),然后始终不能实现。最后发现其实是自己对需求的理解错了。
在程序实现部分体会到会写代码不是编程的全部,自己对于以前做过的程序,现在看来居然一脸懵,就是因为缺少注释。在网上看别人写的代码都有规范的注释,这一点是值得学习的。对于程序的缩进,话说缩进之后的代码可读性真的很强,甭管代码是否正确,但是在外观上看着就舒服。在博客的书写上,以前都是将结果论述出来就算完成任务,后来发现优秀的同学竟然将博客写的像一篇论文一样,从问题的提出,到需求分析,再到解决方案的提出,实现过程中关键步骤的给出和功能代码的展示,以及未来的可扩展性的描述,讲述的头头是道。甚是觉得自愧不如,应当学习。技术上的难点可以通过外界训练来实现,但好习惯好作风的养成只能靠自己的内在意识。永远不要把事情在最后一秒提交或实现,对于需求尽快完成,就算出现问题也会有很多修改的空间,战胜自己的拖延症。
最后谈一谈在作业中遇见的几个知识点:
1.对于java的equals方法和“==”之前有所了解他们的不同,但是在编写代码的过程中问题恰恰就出现在这里了,最后解决了。现在对于自己和读者进行一下科普。
Java中的数据类型可以分为基本数据类型和复合数据类型这两种。基本数据类型:Byte,short,char,int,long,float,double,boolean.他们之间的比较用“==”,比较的是值。
复合数据类型(类)用“==”进行比较时,比较的是他们在内存中的存放地址,除非为同一个new出来的对象(地址相同),他们比较结果为true,否则其余的都为false。java中所有的类都是继承自Object这个基类,Object这个基类中有equals方法,此方法的初始行为就是比较对象的内存地址。但是对于String,Integer,Date这些类中,equals方法有其自身的实现,而不再是比较类在对内存中的地址了。而对于复合数据类型中没有覆写equals方法的类,他们用equals方法比较的还是他们在内存中的地址值,因为Object中的equals方法也是用“==”实现的,所以用equals比较后的结果和用“==”比较的结果相同。以String类型举例:
String s1 = "Monday"; String s2 = "Monday"; s1==s2为true, s1.equals(s2)为true,因为s1与s2指向同一个“Monday”对象,值也相同。
String s1 = "Monday"; String s2 = new String("Monday"); s1==s2为false, 因为s1与s2引用两个不同的Monday对象,内存地址不同。 s1.equas(s2)为true,因为值相同。
引用自 http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html
2.对于词频统计中文本的保存:txt文件在词频统计时要保存为ANSI格式(默认的),不要设置成UNICODE格式。
3.java在命令行编译问题。我的程序开头有 package com.nune.homework这种包语句,类名叫Test,编译时应该写为 Javac -d . Tset.java (意思是在当前目录下的 com/nenu/homework下生成.class文件) 然后继续运行Java com.nenu.homework.Test才好使。起初我是这样写:Javac Tset.java 然后运行 java Test 会报错"找不到类"。
路漫漫其修远兮,吾将上下而求索。
---------------共勉!