个人作业——week3

1、软件工程师的成长

  拜读了多位优秀前辈的文章后,感觉十分复杂,虽然说不上是醍醐灌顶的那种大彻大悟,但是确实的感觉到自己内心中某个部分被真切的感触到了。推荐的文章语言都比较平易近人,感觉就像是和多年未见的学长一起谈话一样,一边感叹着几年里变化之大,一边分享着自己的职业体悟,让人听完之后有感悟也有感动。

  总结了一下各个文章表达出的重点,大概为以下三部分:1、兴趣和热情。2、读书和自学。3、职业规划。

  这三者间相互关联,相互作用,就像三角形的三个顶点一样,既能相互支撑整体的完整性,也可能相互制约彼此的发展,我想依次说一下自己对这三部分的体悟。

 一、兴趣和热情

  兴趣能让人开始研究一门学问,而热情决定了是否能在这门学问上持续性的投入时间和精力,将这门学问研究下去,学精学深。

  文章中的前辈或者是从小便对计算机某个小的领域充满了兴趣,去开始学习研究,或者是阅读了某些专业领域名家的著作,由此产生了浓厚的好奇心与求知欲,开启了学习计算机知识的征途。在这方面,给我印象深刻的是徐宥的文章(他的那篇文章我特别喜欢,来来回回看了好几遍,平时觉得累了努力不下去了就拿出来看看),因为我觉得他的经历是我可以用来借鉴的,但又有一些不同。他在大学之前对计算机的知识了解的不多,在大一和大二没有培养起浓厚的兴趣,在大三阅读了一些计算机专业的名著后,开始了读书和实践之间循环,培养起了浓厚的兴趣。我觉得在兴趣这一方面,我确实不够热衷于计算机专业,在高考时因为自己没有特别强烈的专业意向,所以在家人和老师的推荐下,选择了计算机专业,当时感觉挺意外的,因为高中的自己对计算机不是很感兴趣,感觉就当是平平常常的学习知识了。上了大学以后,大一感觉学的知识中规中矩,以理论课和数理分析为主,感觉还是安安心心的学习知识就可以了。到了大二感觉自己对这个专业的态度发生了一定的变化,对我影响最大的是计算机组成这门课,这门课不仅教授了我关于计算机组成原理的知识,更让我觉得计算机真的有意思,在真正切身去实现CPU内部运算的过程中,能感受到代码像自己亲手培养的孩子一样一点一点强大健壮起来,这种成就感和欣喜感让我很喜欢。之后面向对象课程也让我的编程能力有所提升。

  但是从上学期期末开始,稍微对代码的兴趣不是那么高了,感觉有一点疲倦,这种状态持续到了这学期开学,我自知这种状态很不好,也想了很多办法但还是没能摆脱掉,再看了这些文章之后,也找来了其中提到的书《编程珠玑》等等来阅读,感觉自己有点找回之前的状态能够继续对所学知识保持好奇并且渴求的状态。我打算继续尝试文章中推荐的方法,其中最重要的一个方式就是去多读书。

二、读书和自学

  几乎每篇文章都提到了作者曾经有过一段按照自己的节奏自学的方式,自学的手段大多是读书,有些作者多次强调自己曾经拼命读书,也很重点的推荐读者多读一些好书,多读原版书。所谓见到篮子里的都是菜,多读书积累知识,扩展知识面终归是好的。

  读书上我做的真的不如高中,高中时期再怎么忙也能一周读一本书看,到了大学反而没能保持下来这个习惯,导致这两年看的书越来越少。看了这些文章之后,我觉得读书是自学一个重要的途径,应该重新拾起这个技能的。

  目前打算是先把文章中推荐的书目看一看,然后根据喜欢的领域去选择书去读。

三、职业规划

  说实话现在突然让我把未来职业的规划都定下来是说不出来的,文章中的人也是边摸索边决定下一步计划,我的短期内的计划是在北航读研,至于之后是否读博士,感觉可能要在读研的过程中决定这个问题了。

  在大三,短期的目标就是在保证学业的前提下,多阅读专业相关书目,开拓知识面,寻找自己真正感兴趣的领域,并对此进行一番研究。

 

 

2、代码复审

 复审对象:14061041 谷大鑫

测试:

  • Does the code work? Does it perform its intended function, the logic is correct etc.
  • 可以运行,测试了包括-b -c 和输入地铁名功能
  • -b测试数据如下:
  •  2号航站楼 苹果园
  • 苹果园 四惠
  • 苹果园 大望路
  • 知春路 北京西站
  • 2号航站楼 3号航站楼
  • 3号航站楼 2号航站楼
  • -c测试数据如下:
  •  2号航站楼 苹果园
  • 知春路 北京西站
  • 苹果园 知春路
  • 知春路 建国门
  •  
  • 输入地铁名测试数据如下:
  • 地铁一号线
  • 地体二号线

  -b 和 -c 功能上应该没什么问题,在输入地铁名,返回全线路径这个功能在输入地铁名字前,会输出“Input Parameter Error”的报错,而这条是不必要的。

  • Does it conform to your agreed coding conventions? These will usually cover location of braces, variable and function names, line length, indentations, formatting, and comments.
  • 代码风格感觉挺好的,变量和函数的命名都很规范。
  • Is there any redundant or duplicate code?
  • 代码冗余几乎没有。
  • Is the code as modular as possible?
  • 方法和数据都被模块化处理了。
  • Can any global variables be replaced?
  • 几乎没有使用全局变量。
  • Is there any commented out code?
  • 有。
  • Do loops have a set length and correct termination conditions?
  • 是,有的。
  • Can any of the code be replaced with library functions?
  • 没有能被替代的代码。
  • Can any logging or debugging code be removed?
  • 没有调试代码。
  • Security
  • Are all data inputs checked (for the correct type, length, format, and range) and encoded?
  • 对输入项进行了检查。
  • Where third-party utilities are used, are returning errors being caught?
  • 没有使用第三方。
  • Are output values checked and encoded?
  • 没有。
  • Are invalid parameter values handled?
  • 有,对非法输入进行了处理,但是有误处理。

    Documentation

  • Do comments exist and describe the intent of the code?
  • 没有,没有包含文档。
  • Are all functions commented?
  • 不是,注释不多。
  • Is any unusual behavior or edge-case handling described?
  • 没有描述。
  • Is the use and function of third-party libraries documented?
  • 没有说明。
  • Are data structures and units of measurement explained?
  • 没有,但是可以读出来。
  • Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?
  • -a部分的功能待定,其他部分代码完整。

    Testing

  • Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.
  • 代码是可测试的
  • Do tests exist and are they comprehensive? i.e. has at least your agreed on code coverage.
  • 测试数据从博客看了,数据测试比较覆盖。
  • Do unit tests actually test that the code is performing the intended functionality?
  • 是。
  • Are arrays checked for ‘out-of-bound’ errors?
  • 没有。
  • Could any test code be replaced with the use of an existing API?
  • 不能。

你可能感兴趣的:(个人作业——week3)