軟工_個人博客作業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.pswp.cn/news/394989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394989.shtml
英文地址,請注明出處:http://en.pswp.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…