软工_个人博客作业3

PART1 博文阅读感想

 

  十几篇博客一气读下来,有一个词一直萦绕在我的脑海里——紧张!紧张!还是紧张!

  首先这紧张来自于自己的学习方面。作为计算机系的科班出身,当然与生俱来就有一种优越感——我们是专业的,四年的专业训练再怎么不济也要比那些半路出家的野路子们好找工作吧。但读了这么多博客给我了一种深深的紧张感,粗粗看下来,这些博主们绝少是科班出身,有学英语的,有学数学的,五花八门,但唯独很少是计算机系出身。每个人在提起自己转向程序开发领域的同时,都有一番非常痛苦的,甚至天昏地暗的学习阶段。短短几个月的时间,他们就学会了几门语言,掌握了几种我在学校里都没听过的技术。诚然,接受过专业基础训练的我们可能会对原理上了解的更加深入一些,但是IT行业这个市场早已有太多人挤着头皮想要进入,这个行业的门槛并没有那么深。除了谷歌微软,还有很多默默无名的小公司需要信息技术人才。而往往很多开发工作并不需要你对计算机底层原理的了解,只需要你掌握一门技术,一门应用性很强的技术,在应用方面,在专业技术方面,计算机专业科班出身的学生如果仅仅满足于学校中的那点知识,完全没有任何竞争力。所以啊,什么时候都要学习,要靠自己学习,要结合实践的学习,要永不满足的学习。

  另一个紧张来自于这个行业的忧虑。程序员?=青春饭,扪心自问,虽然对于这个专业拥有着极大的热忱,但是如果说要让我当一辈子程序员,甚至想要安稳的当一辈子程序员都很困难(被年轻人替代),我还是拒绝的。看了这么多博文,我越发的发现这个行业的门槛真的非常低,而工作强度却异乎寻常的高,如果等自己步入中年,身体上是否能吃的消上是一个问题。就算能勉强坚持,也总比不过那些入行刚几年已经全面掌握技术的年轻人。程序员是一个太容易被他人替代的行业,如何能在这个行业中站住脚,如何能够在自己的职业道路上获得发展。看似很难。晋升管理层?谁也说不定。变身技术中坚?程序员真的不是越老越值钱。自己创业?机遇难得。虽然刚入行的程序员能够拿着令人羡慕的工资,但是对于身体的透支和发展的局限性是一个不得不考虑的问题。

  真的很紧张。

 

PART2 代码复审

  这次由于奇数个同学选课的原因,我们结对小组有三位同学,所以我们采用了单循环的方式进行代码复审。这次我复审的是韩青长同学的代码。

  

General

  • Does the code work? Does it perform its intended function, the logic is correct etc.

  YES

  我将代码使用我自己的测试集进行测试,结果基本完成了作业基本要求中的-b和-c两个功能。对于机场线单行线,环线,错误输入等的问题也处理得很好。

  下面是我的测试集与测试目标

  1.MetroSystem.exe -b 2号航站楼 3号航站楼

  2.MetroSystem.exe -b 健德门 火器营

  3.MetroSystem.exe -b 南邵 角门西

  4.MetroSystem.exe -b 朱辛 马泉营

  5.MetroSystem.exe -b 西直门 国贸

  6.MetroSystem.exe -c 3号航站楼 西局

  7.MetroSystem.exe –c 北苑路北 安立路

  8.MetroSystem.exe -c 广渠门外 国贸

  9.MetroSystem.exe -c 大屯路东5 大屯路东15

  10.MetroSystem.exe -c 什刹海 什刹海

 

  第一组测试用例测试单行线

  第二组测试用例测试环线

  第三组测试用例测试尽头站到换乘站

  第四组测试用例测试错误输入不存在的车站

  第五组测试用例测试换乘站到换乘站

  第六组测试用例同样测试单行线

  第七组测试用例测试不能换乘的大屯路东站

  第八组测试用例测试不能换乘的双井站

  第九组测试用例测试两条线同名车站实际不能换乘的情况

  第十组测试用例测试同名车站

 

  但是我还是发现了两个小问题

  第一个问题是,在两种模式下,如果起点站与终点站相同,程序将会报错。在-b模式下,程序直接崩溃,而在-c模式下,程序输出结果将会是10001.这个点虽然平时一般不会出现在正常输入中,但是也算是一个较为普通的特殊输入,应该被考虑。

  第二个问题(可能只是理解上的差异),实际上大屯路东站和双井站交叉的两条线是不能换乘的,我设计时将这两个站分开考虑,韩青长同学则认为可以换乘。两种方案我认为都可以接受。

  • Is all the code easily understood?

  Yes

  韩青长同学的代码均使用C++语言编写,虽然没有学过,但是代码风格上结构清晰,还是比较容易看懂的。

  • 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.

  Yes

  代码中变量名命名清晰,虽然有很多简写,但是能够很容易的看出来它代表的意思。没有让人不知所云的变量。大括号使用单起一行的形式,与我的习惯相同,很舒服。同时行长控制较好,较长的行均分行写出,代码缩进风格统一,虽错落但是给人一种容易阅读的感觉。每一个模块开头时均有注释,这是一个非常好的习惯,我这次的代码没有写太多的注释,这点我要向韩青长同学学习。

  • Is there any redundant or duplicate code?

  No

  通篇浏览了代码,整体来看没有大段重复或者冗余的代码。

  • Is the code as modular as possible?

  Yes

  整个代码中除了main()函数都没有长于100行的函数,读起来各模块功能清晰,我认为已经尽力做到了模块化。不过如果能将main()函数中的初始化地图模块独立出去就更好了,这样可以让main()函数大大缩短,简化逻辑结构。

  •  Can any global variables be replaced?

  Yes

  该图是程序中全部的全局变量,邻接矩阵和站点相关的存储作为所有路径计算的基础,作为全局变量是必要的,但是简易不要将数组大小定死,这样有些不利于以后的扩展。比较好的方式是通过定义常量来初始化数组空间,这样修改起来比较方便。下面有关递归的全局变量中,我想如果将递归函数外部套一层调用递归函数的路径查找函数,这些全局变量就可以定义在路径查找函数中了。不过要求似乎也没说要尽可能少的使用全局变量,我自己也是写了一堆全局变量==

  • Is there any commented out code?

  No

  在代码中并没有发现过时的被注释掉的代码。

  • Do loops have a set length and correct termination conditions?

  Yes

  在代码的递归部分,最开始均有跳出递归的判断语句。

  • Can any of the code be replaced with library functions?

  No

  我因为也是初学,对于库函数了解不多,但是整体看上去并没有什么能够直接被库函数替代的代码。

  • Can any logging or debugging code be removed?

  No

  代码很干净,没有调试用的代码。不过读取文件路径直接设置为了一个绝对路径,我觉得设置为相对路径更好一些。

 

Security

 

  • Are all data inputs checked (for the correct type, length, format, and range) and encoded?

  Yes

  代码中循环读入参数,对于不正确的参数或者站点名都能进行处理,输出“输入错误,请重试”

  • Where third-party utilities are used, are returning errors being caught?

  No

  没有使用到第三方工具

  • Are output values checked and encoded?

  Yes

  输出值与题目要求相同。不过有一点小瑕疵,就是前面提到的起点终点相同的情况,如果都在环线上,会输出环线上所有站点,如果不在,距离则会输出10001.

  • Are invalid parameter values handled?

  Yes

  在输入处理时,就过滤掉了无效参数。

 

Documentation

 

  • Do comments exist and describe the intent of the code?

  Yes

  韩青长同学的代码中存在着大量的注释,对于理解程序有着很大的帮助

  • Are all functions commented?

  Yes

  所有的函数都有注释,甚至函数内部都有详细的注释

  • Is any unusual behavior or edge-case handling described?

  No

  虽然对于边界情况进行了处理,但是并没有在注释中进行说明

  • Is the use and function of third-party libraries documented?

  No

  并没有使用第三方库

  • Are data structures and units of measurement explained?

  Yes

  所有的全局变量都有解释,且大部分的变量在声明时都有解释。

  • Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?

  No

  没有,全部代码都完成了

 

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.

  Yes

  可以直接执行txt文件,并很方便的执行测试

  • Do tests exist and are they comprehensive? i.e. has at least your agreed on code coverage.

  No

  可能因为没有要求,在代码中并没有测试代码存在

  • Do unit tests actually test that the code is performing the intended functionality?

  No

  没有进行单元测试

  • Are arrays checked for ‘out-of-bound’ errors?

  No

  代码中并没有对于数组越界进行处理,可能这是导致程序-b出错的原因

  • Could any test code be replaced with the use of an existing API?

  No

  程序中并没有测试代码

转载于:https://www.cnblogs.com/shhr/p/5917193.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境中配置环境变量无效

1.在Linux系统中的【 ~/.baserc 】文件与【 /etc/profile 】配置环境变量后(可以使任意环境变量)无效的现象,如下为解决办法: 使用命令: 1 vim ~/.zshrc 在 【# User configuration】下添加环境变量; 如图说明: 2.也可…

手机能打开的表白代码_手机拍照还能加文字?打开这个自带按钮,一键就能添加方便...

手机拍照还能文字?打开这个自带按钮,一键就能添加方便我们日常生活中,经常会在朋友圈里面看到,这样的图片,不仅图片好看,上面还带有精美的文字,里面还添加了时间、地点、天气,在配上…

如何使create-react-app与Node Back-end API一起使用

This is a very common question among newer React developers, and one question I had when I was starting out with React and Node.js. In this short example I will show you how to make create-react-app work with Node.js and Express Back-end.这在新的React开发人…

Spring Cloud Eureka 入门 (二)服务提供者详解

2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “优秀不是过去是一种心态” 「Spring Cloud Eureka 入门系列」Spring Cloud Eureka 入门 (一…

题解 CF682C 【Alyona and the Tree】

简单搜索题,我们每找到一组不满足题目给出条件的点和边就将其整个子树删除,然后最终答案加上该子树的大小即可。注意,搜索的时候如果当前的边权和sum已经为负了,应该将其改为0(可以想想为什么) 注&#xff…

现在mfc的现状如何_天玑云客:微信代运营现在什么现状?如何挑选合适的代运营公司?...

来源:天玑云客综合整理团队成员均来自“中国房地产策划代理百强企业”TOP10以及”中国企业500强“TOP20企业并担任重要职位。和你一起聊运营、产品、技术研发、房地产以及各种新兴行业有哪些有趣的营销玩法。由于微信公众号/小程序的影响力日益增强,以及…

第五百一十八天 how can I 坚持

闲是真能闲出病来,无名的焦虑啊。不想这样。 天越来越冷了。后天就放假了,有点小激动,这一天天的。 今晚没玩游戏,看了会《微微一笑很倾城》,只能是崇拜那些玩游戏好的,就是玩不好,哎。。。 睡觉…

第三方登录 人人php,人人网第三方登录接口方案

之前闲暇有空,就去了解了下人人网的第三方登录的接口,呵呵..发布想了解的都了解下.一. REST接口模式使用HTTP post 协议or HTTP get 协议发出请求.HTTP 协议同REST服务器通信.Java Struts 1.2 .do 的模式请求.代码:1.URL编码的示例代码(java): value java.net.UR…

easy ui dialog 关闭之后的怪异问题

最近在工作中使用easy ui做东西,然后发现了一些不可思议的现象,笔记一下,前事不忘后事之师!事故现场:增加页面和修改页面是分离的两个jsp文件.在页面加载时会用jquery去控制一些数据加载和一些逻辑.理论上来说不希望增加页面和修改页面互相干扰.单独拿增加模块测是正常的.加载修…

node.js gbk编码_如何使用Node.js将Chrome的霸王龙编码为电报游戏

node.js gbk编码by Fernando Garca lvarez通过费尔南多加西亚阿尔瓦雷斯 如何使用Node.js将Chrome的霸王龙编码为电报游戏 (How to code Chrome’s T-Rex as a Telegram game using Node.js) Last month I was really interested in learning how the Telegram game platform …

二进制文件更新程序_APR 6.17程序文件更新

兰博基尼程序文件更新Lamborghini Huracan EURO MY2018 5.2L V10 DKBC 4T0907552L S0002 Stage 1 V1.1 [APR Mobile]奥迪程序文件更新Audi A3 / VW GTI NA MY2014 2.0TSI CNTC 5G0906259A S0001 Stage 1 V2.0.3 [2WD] [Single Program]Audi A3 / VW GTI NA MY2014 2.0TSI CNTC …

android 事件拦截 (Viewpager不可以左右滑动)

以前没有做过真正的需求,所以从来没有觉得事件拦截分发处理有什么好懂的。 现在做需求了,真的是什么需求都有,你作为开发都要去研究实现。比如说,只能点不能滑动的viewpager。其实这都可以不用viewpager了。直接用fragment的repl…

mysql安装设置数据目录下,linux下安装mysql数据+配置

《linux下安装mysql数据配置》由会员分享,可在线阅读,更多相关《linux下安装mysql数据配置(2页珍藏版)》请在人人文库网上搜索。1、Redhat下安装MySQL数据库 说明:安装环境:本地VMWare虚拟机redhat MySQL安装目录:/hom…

力扣——k个一组翻转链表

给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4…

拨盘Demo大赛,获奖公布-20170710

2019独角兽企业重金招聘Python工程师标准>>> 为了答谢微信小程序联盟的新老会员,极乐科技支持举办的拨盘大赛终于落幕,本次大赛有662人关注,报名参赛8位,获奖名单如下: ##一、获得1000元现金奖励的参赛者 会…

2018年编程语言排行榜_这是2018年学习的最佳编程语言

2018年编程语言排行榜by Alexander Petkov通过亚历山大佩特科夫(Alexander Petkov) 这是2018年学习的最佳编程语言 (Here are the best programming languages to learn in 2018) This is the definitive guide for anyone wanting to choose the right programming language …

ZJUTACM

描述 这回是浙江工业大学的ACM程序设计竞赛,欢迎你的到来!但是,请稍等!裁判Joe说了,必须正确回答他的问题,才可以看到PIPI的气球MM,KUKU的气球GG.Joe手上有7张卡片,每张卡片上有一个大写字母,分别是Z,J,U,T,A,C,M.现在他开始表演魔术,每次只交换其中的两张卡片.等表…

vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件

前言VSCode,是一个免费的、开源的跨平台编辑器,也是我最满意的编辑器之一。本文向大家推荐一些我喜欢的vscode插件,不出意外的话,这些插件将对你的工作效率提升有不小的帮助!GitLensVS Code中的 Git 体验在易用性和完整性之间取得…

dedecms plus/download.php,dedecms教程:DedeCMS 5.7SP1 /plus/download.php url重定向漏

最近使用scanv网站体检发现有DedeCMS 5.7SP1 /plus/download.php url重定向漏洞(如下图),对比官方网站最新下载包发现该漏洞未进行补丁,但官方自身网站已经补上了,而官方演示站点均未补上。参考了下网上给出的漏洞原因和解决思路如下&#xf…

C language day1

2019独角兽企业重金招聘Python工程师标准>>> http://www.eclipsecolorthemes.org/?viewtheme&id66设置eclispe编辑器主题 http://www.cnblogs.com/csulennon/p/4231405.html 配置黑色主题 Dogs.c 第一段代码片段 /*Name : Dogs.cAuthor : MichaelV…