第一阶段的反思和改变

  这几次的作业我完成的很糟糕,而之后的训练只会有着更加复杂与精细的任务,因此我希望对自己在之前学习中所犯下的错误以及之后的改进方向进行归纳与总结。

  最重要的一点,就是对show me your code”这一最核心的学习方法没有掌握,对于一个初学者来说,只是看了一小段代码就想要掌握是根本没有可能的。比如所有的java参考书的的开篇都会有

  public class HelloWorld{

     Public static void main(String[] args ){

        System .out.println(“Hello World!”);

     }

 }

这一段代码非常基础也非常容易理解,对于对c语言有一定了解的我们来说,就是一个普通的输出语句,看到这一部分时飞快的翻了过去但是当自己写的时候,println,print,printf,究竟有什么区别,想要输出字符串,数字是否需要不同语句控制还是可以将他们写在同一语句中,这都是未曾考虑过的问题,究其原因,是看到println这一单词其中有print便不假思索的觉得自己已经了解了在java中输出语句究竟如何使用而没有进一步探究。最终在使用时,打完print后编译器弹出的几种输出方式就让人十分困惑。

就如同数学的学习一定要做题一样,不论老师讲解的多么透彻,光看光听是不会有任何提高的。而第一次作业中最明显的弊端就是正则表达式的匹配,看过正则表达式概念上的理解之后,知道了是用字符组成特定字符串来达到对于字符串的分类和过滤,我认为直接找到类似的例子就可以使用。

"[+|-]?\{\([+|-]?[\d]{1,6}\,[+|-]?[\d]{1,6}\)(\,\([+|-]?[\d]{1,6}\,[+|-]?[\d]{1,6}\)){0,49}\}([+|-]\{\([+|-]?[\d]{1,6}\,[+|-]?[\d]{1,6}\)(\,\([+|-]?[\d]{1,6}\,[+|-]?[\d]{1,6}\)){0,49}\}){0,19}";但是对着找到的字符串,完全不理解\ ? {}等字符代表的含义,想要修改成可以使用的例子都无从下手,于是又回头去使用一个一个读入的方法,又在nextlinenextdoublenextstring的问题上纠结。在使用类的时候还想要把this换成别的名字......

但是如同老师所说,这些并不能成为完不成作业的理由,大部分人都是从零基础开始进行面向对象的学习,而且作业的难度安排也是从与面向过程相差无几的多项式开始,从最简单的电梯开始逐渐模拟。从主观上找原因,最重要的仍然是对于oo的投入仍然不够。比如第一次作业对于Scanner input = new Scanner(Syetem.in)这句话,我们是否知道创建了Scanner类的对象,并将它的引用值赋给变量input,再调用scanner类中的方法来读数,这并不是至关重要的问题,我们只需要使用这一段代码读入一整行的字符串输入就行了。

的确,学习方法上的错误会让我多走一些弯路,但是坚持走下去总是能走到的。当时在周五六的时候我一直在看书,到了周日开始写的时候遇到了重重困难,时间到了周一,觉得一头乱麻又想使用较为死板的输入方式,又要从头改,然后时间更短,更加急躁,形成了恶性循环。如果从一开始就立刻动笔,那么时间会更多,而且对于我们来说,如果周三还没完成,那么此时的五个小时所能完成的内容是绝对比周日的五个小时要少的,因为越是时间和心里紧张对于细节上的把握就越差,也更难冷静思考。

在正式进入了面向对象的编程之后,对于编程方式的考核也是需要转变的点之一。设计在编程中有时比实现更加重要,但是绝对不存在设计的设计,只有实现的设计。也就是说如果想要设计框架,就应该用文档记录下所有的想法,很多时候对于我这样的初学者,常犯的错误是去空想,这个电梯我们用数组来表示,然后请求就是数组被标记,电梯可以扫描数组等等。但是空洞的构思对于程序的完成没有任何帮助,我尝试着用类似类图的方法完整的记录自己的思路,每一个类中的内容以及类之间的调用。然后再逐渐用伪代码去简要思考一下每个类是否可行,最后再去实现,这样比起毫无设计的胡乱写和没有清晰的文字,只会让自己越来越混乱的思考都不同。

在进一步的学习当中,还有很长的路要走,最基础的是提高对于oo的时间投入,然后是端正自己的想法,认识到自己的基础并不扎实,每一段代码都要做到理解,以及最重要的”show me your code”通过坚持不懈的练习来提高自己的水平,也希望能在老师和同学们的帮助下一路向前。

原文地址:https://www.cnblogs.com/tigerbroken/p/8714399.html