日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件工程(2019)结对编程第二次作业

發布時間:2023/12/18 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件工程(2019)结对编程第二次作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結對編程第二次作業

利用普普通通的游戲引擎實現普普通通的電梯調度算法

這是我的結對伙伴張斯豪同學的排版異常詭異的博客(狗頭)。

  • 單元測試

  對關鍵Elevator類中的WhetherAccept進行單元測試,測試代碼如下:

using Microsoft.VisualStudio.TestTools.UnitTesting; using ElevatorProj; using System; using System.Collections; using System.Collections.Generic;namespace Test2 {[TestClass]public class UnitTest1{[TestMethod]public void Test0employeeCapacity(){int floor = 10;Elevator elevator = new Elevator();elevator.employeeCapacity = 0;elevator.type = Elevator.even;Console.Write(elevator.WhetherAccept(floor));}[TestMethod]public void Test22Floor(){int floor = 22;Elevator elevator = new Elevator();elevator.type = Elevator.even;Console.Write(elevator.WhetherAccept(floor));}[TestMethod]public void TestNgaFloor(){int floor = -1;Elevator elevator = new Elevator();elevator.type = Elevator.odd;Console.Write(elevator.WhetherAccept(floor));}[TestMethod]public void Test0Floor(){int floor = 0;Elevator elevator = new Elevator();elevator.type = Elevator.even;Console.Write(elevator.WhetherAccept(floor));}[TestMethod]public void Test9Floor(){int floor = 10;Elevator elevator = new Elevator();elevator.type = Elevator.even;/*if(!elevator.WhetherAccept(floor)){Console.Write("true");}*/Console.Write(elevator.WhetherAccept(floor));}[TestMethod]public void Test9Floor2(){int floor = 10;Elevator elevator = new Elevator();elevator.type = Elevator.odd;Console.Write(elevator.WhetherAccept(floor));}[TestMethod]public void Test10Floor1(){int floor = 10;Elevator elevator = new Elevator();elevator.type = Elevator.even;Console.Write(elevator.WhetherAccept(floor));}[TestMethod]public void Test9Floor3(){int floor = 9;Elevator elevator = new Elevator();elevator.type = Elevator.even;Console.Write(elevator.WhetherAccept(floor));}} }

  實際結果通過對比Standard Output中的輸出結果得到的結論是一致的,本測試代碼實現了條件組合覆蓋。例如Test10Floor1中的結果:

  • 對隊友的評價

  很高興能夠與我的結對伙伴張斯豪共同完成這次結對編程第二次作業。首先要感謝張斯豪,因為我并不熟悉C#,也從來沒有使用過C#,如果不是他很耐心的為我講解單元測試方法以及VScode和VS中C#的使用,恐怕我并不能完全理解這次由C#實現的電梯調度算法(也多虧了語言的共通性)。作業的全程,我們都能互相交流自己的最新想法,每次代碼的更新我都能從coding項目中第一時間了解到,為了貫徹結對編程的理念,我與我的Partner經常在一起討論算法的生成與優化。其中為了使用戶平均等待時間更小,我們也決定采用四部電梯分開但雙層停靠;然而我們也很快發現了其中的問題,因為電梯的統一按鈕控制原則,不人性化的一點出現了,需要上偶數層數的乘客需要自己步行樓梯上一層。如果想要修改的話,提議四個按鈕分別控制每部電梯,然而并不能符合題目總體要求,所以只能作罷。而這其中,包括電梯算法的Debug:電梯響應優先級問題,包括選電梯問題等。特別值得一提的一點是,Partner加入了AI小人(雖然看起來更像是一根棍子,rua~),使得整個大樓如同一個真正的公司。經過雙方的討論,一個基本成型的電梯調度算法,哦不,應該說是公司大樓就基本成型了。

  代碼方面,我的Partner完成了代碼的編寫工作,作為領航員的我在此對代碼進行一個簡單的審查(實話是,我對C#代碼審查不甚了解)。首先,代碼確保了沒有任何警告,而且保證了所有的using都是有用的——無關代碼實在是很討厭,但是這個代碼做到了沒有無關代碼。第二點,代碼命名十分規范,在保證命名簡潔的基礎上,整個代碼讓人一讀也能懂大概,特別是我這個C#乃至Unity的外行人來說,這實在是太棒了。第三點,代碼保持了一致性和可重用性,不多贅述,int和int32肯定不能只寫成其中一個,那很業余。第三點,代碼可讀性,這個在第二點命名上已經做了很多說明,在基礎上,補充說明代碼的注釋也很好,哪個類實現什么功能不僅體現在命名而且體現在注釋。最后,在其他方面,諸如代碼作者版權提示等,我的Partner都做得十分到位,代碼格式也十分清晰易懂。

  • 總結

  終于迎來了總結,說實話,盡管C#和C++,Java有諸多相似讓我真實的上手編寫單元測試也實在是一個很大的難題(好吧,我應該承認我很弱)。但是,經過這次結對編程我確確實實確確實實體會到了交流的重要性,對沒錯,交流。因為如果沒有和Partner的交流我就不可能去讀懂我沒有接觸過的C#和Unity,如果我不能了解項目的最新進展我也就不可能寫出這篇文章(我說我是硬著頭皮寫)。總之,是駕駛員與領航員的交流,讓我們整個團隊能夠在一個比較短的時間內完成電梯算法的框架,并且有足夠的時間對算法進行簡單的優化,也讓我們有余力去完成AI的拓展。同時,通過這次作業,我也增長了見識,是的,因為接觸了新知識嘛,怎么能不增長見識呢。同時在交流的過程中也意識到了我與Partner之間的差距,我應該向他學習才是。畢竟寫一個項目不是一個人的任務,現代軟件工程告訴我們,一個項目的完成應該靠整個團隊每個人的努力,而且在團隊工作的過程中基礎薄弱者也會通過項目的進展來提升自己的能力。這就是這次作業給我帶來的收獲。

轉載于:https://www.cnblogs.com/ulyssesgao/p/10817701.html

總結

以上是生活随笔為你收集整理的软件工程(2019)结对编程第二次作业的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。