个人作业-Week3:代码复审
欢迎关注我的个人博客,获得更佳的阅读体验:www.beyondbin.com
软件工程师的成长
初识编程
和很多人一样,我也是初中接触了编程这个有趣的东西。在那个年代,“红客”这个词,我相信印在每个年轻人的脑海中。我也沉迷其中,“红客吧”、“红客联盟”、“黑客联盟”,在里面看博客、学技术、拜师。甚至还真找到了一个师傅——“杨凡”,也算是当时网络安全界的小牛吧,现在他在北京开了家网络安全公司。当时“红客”生涯的高潮便是“中韩网络大战”,一个韩国娱乐组合的某些行径激怒了整个中国,中国网军导致韩国政府网站一度瘫痪,最后这件事还登上了“新闻联播”。当然我在其中也做出了小小的贡献,不过在现在看来也就是些小玩具而已。实际上在其中浸润了数个月并没有学到有意义的东西,只是学了点工具使用和网络底层的知识。这时安全界流传着一句话,“不会自己写工具的黑客,都是菜鸡”,我想要做一个牛逼的人,便开始学习汇编和C++了。人生第一本编程书《深入浅出C++》,相信很多人当时都买过“深入浅出”系列的书籍,我也落俗地买了一本。没想到还真的挺有意思,但是由于我性格的缺陷,总是无法深入钻研,读了一半便再也没有拿起来了。而后又开始学了点Web前端的技术,也是懂了点皮毛便无疾而终了。这便是我编程的第一次,并没有想各个大牛一样坚持钻研下来,现在想想也是相当后悔,不然现在也可以想一些程序员网红一样吹吹牛,吸引点粉丝了。之后我便和“浅尝辄止”这种性格的长达数年的斗争了。这是我第一次错失机会。
未老先衰
高中是人生中“最美好”的年华,这三年是真正享受人生的时期,整天就是打球、恋爱、文艺、美食、电影,真心地无忧无虑,不出意外地只考了个全省四百多名,便来到了北航这个学校。初入高中,信息中心的老师也看到了我对计算机的喜爱,便想拉我进NOI培养一下,在父母的反对和自己对无忧无虑的生活的追求,便放弃了这条路。现在想了想就是一个字“懒”,好吃懒做,坐等天收。这是我第二次错失机会。填报志愿的时候义无反顾地选择了“计算机科学与技术”,我想以前的债现在来还吧。可惜三年的颓废毁了自己,真的是回不到拼搏的状态了,即使我买了大量的技术书籍,看着身边的大牛们谈笑风生,毫无经验的小白变成大神,我还是选择了继续颓废。翘课、打游戏、混社团、混学生会、混咖啡厅,只要不是学习的事情我都干了,结果可想而知——挂科。但是这依旧没有改变我,每每在打击过后努力几天便歇下气来,回到浑浑噩噩的生活中去。好的是,我的内心一直保持了一丝上进,只是懒惰压倒了一切。
重生向前
这一切颓唐在大二中段戛然而止,我要感谢“计组”改变了我,我要感谢身边一起给我压力的人和事。“计组”这个东西真的很难,但也很有趣,我很想借着这次机会打个翻身仗,可惜薄弱的意志力依然使我难逃失败的梦魇。当最后P6的时候,乾神一次又一次给我们前进的机会,但是我真的很不争气。我还是拖延和偷懒了,直到测试的前两天,等到事到临头了才开始设计和编码,可惜没有充分的测试。最后一次机会的前一晚,我通宵调试过后,因为一个粘贴代码的失误,我还是现场测试失败了。当时内心充满屈辱与自责,“智商不够还不努力,我真是个垃圾!”,看着身边有人开心地选择放弃,回归正常生活,有人取得了继续的资格,兴致勃勃,我竟然哭了。这是我第三次错失机会。事后想来“计组”不过是个实验,对于大神来说也就是个玩具,但对我来说是一种“精神”的考验。这真真切切地就像1840年鸦片战争以后的中华民族的那种屈辱,我不能这样活下去了,我趁着这股劲竟然挣扎着从泥潭中走了出来。大二下的各个科目都拿到了不错的成绩,OS实验也申优成功,深深地感觉到人生开始走向了上坡路。而后的暑假也开始了机器学习、编译技术、数据库的提前学习,开始走到了普通人的前面,至少开始有一种向上的劲头,“热爱计算机不再成为一个口号”。我想我会一直走下去,走到人生的巅峰。
憧憬未来
不得不说计算机的应用是在是太广,数据挖掘、图形学、计算机视觉、Web开发、高性能计算……一个个名词充斥着我们的眼球,实在是无从选择,甚至有些迷茫。好像都很有趣,但是实在是分身乏术。在不停地探索后三个方向挺适合我,“计算机视觉”、“图形学”、“后端开发”,加起来刚刚好像一个AR公司的技术栈,虽然领域差异挺大的,但是它们的都需要极强的“数学”和“算法”基础,我想这就我接下来几年该做的事了吧。然后未来可能会读博吧。我希望当我三十岁时,听到别人说“我小学就是开始编程了,现在牛逼的不行了”,而我可以理直气壮地说“我大二才开始编程,但是我比你还要牛逼!”。但是我终究会去创业的,虽然在这个“创业”时代这听起来很可笑,但这依旧是我自从小学起的梦想——我想有一栋属于我自己的玻璃大厦,在太阳的照射下闪耀整个城市。或许这不是个小目标,或许这超过了王健林的一个亿,但这终究是我憧憬了14年的梦想。“梦想”之所以称之为梦想,就是因为它所有人包括我自己都认为是不可能实现的,但这才是人生该追求的梦想。所以我的规划是“三十岁前,人生归于物质与技术,三十岁后,人生归于诗和远方!”。
代码复审
测评对象:14061053 岳桐宇
Github:https://github.com/mycraftmw/subway
General
- Does the code work? Does it perform its intended function, the logic is correct etc.
√ 正常运行。可以完成最短路径和最少换乘路径规划。
- Is all the code easily understood?
× 缺少注释。代码模块化程度不够。
- 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.
√ 编码风格较好。但由于C++不是完全的面向对象语言,没有Java或C#的代码明晰。
- Is there any redundant or duplicate code?
× 复用不充分,存在一定程度的冗余。
- Is the code as modular as possible?
× 未采用模块化设计,存在一定程度的冗余。
- Can any global variables be replaced?
× 未使用C++面向对象特性,此处全局变量等同于类的域,无法替换。
- 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?
× 不存在logging或debugging代码。
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’?
× 不存在未完成代码。
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?
× 暂时不存在可替换的现成API。