結對編程總結+git使用與GitHub代碼管理——by林玉俊&唐宇涵
一、分析需求
在拿到結對編程項目需求文檔後,我和隊友第一件事就是討論需求,分析項目給出的需求以及實現的一些細節。比如,登錄界面的設置(註冊、重置、登錄按鈕),註冊界面的輸入框設置(手機號、驗證碼、密碼、確認密碼),題目難度和數量界面的設置等這些邏輯流程問題。並大致對各個類需要實現的功能和接口進行了商定,這樣方便了後期的合攏。
下圖為當時討論時的筆記——
二、編程實現
我負責的是用戶手機註冊並發送驗證碼到相應手機號部分和隨機算式計算結果部分。
1、接收驗證碼部分
最初是根據老師給的提示,在阿裏雲平臺中申請短信服務,但短信簽名的申請過程非常非常非常不順利,總是因各種理由未通過,幾經修改也無濟於事。
後來便開始尋找其他平臺,看是否能夠申請到他們的短信簽名。
其中,百度雲、騰訊雲、淩凱這三家平臺成為了我們的第二條路。但是淩凱雖然穩定且老牌,但他不針對個人用戶,而是面對高校、企業等有大規模發送短信需求的用戶,雖然其有十分成熟的短信驗證碼功能,但我們因無資質只能放棄;百度雲更是直接pass,因為其短信業務的開通需要公司執照,直接將我們扔出了門外。所幸,隨後騰訊雲給了我們一條生路。在開通了公眾號後,成功通過了短信簽名和短信正文模板的申請。
至此,我們得到了發送短信驗證碼的關鍵參數,並根據騰訊雲提供的java API模板在完成參數配置後實現了向用戶註冊手機號發送短信驗證碼的功能。
2、隨機算式計算部分
引用隊友之前隨機算式生成部分,隨機算式計算類Calculater傳入隨機生成的String型算式,輸出float型運算結果。運算過程中對“(”、“+”、“-”、“×”、“÷”、“)”、“=”這些操作符進行優先級的定義,並按照優先級分別將操作符和操作符左右的數字壓入棧中。
下圖為對操作符的優先級定義——
為了簡化運算過程,我們對算式先進行了一些處理,將三角函數和平方開方部分先算出結果,將結果替換到原來的位置。在這裏我最開始運用的是for循環將結果和原字符串位置進行移位,以達到替換的效果。但當平方數為102以上時這裏就會出現字符串溢出的問題,所以我的隊友提出了使用StringBuilder中的replace方法實現對字符串的替換並幫助我進行了修改,在這裏感謝大佬援手。
下圖為對算式的提前處理部分——
Attention:在這裏,我要向大家隆重介紹一個函數——eval()
這是多麽神奇的一個函數呢,大概就是讓我之前花在處理棧空錯誤的大把時間變成0。
在拋出異常處理後,輸入包含括號、數字(含小數)、+-×÷操作符的標準四則運算表達式後,一個回車便可計算出double類型的結果,可謂十分方便了……
實現如下——
三、合攏測試
在最後的合攏測試部分,隨著測試次數的增多,很多bug也接連出現,再次感謝大佬carry,修改了如閃退、輸入空、總分錯誤等bug。
四、使用git以及GitHub進行代碼管理
在Java IDE中包含了git以及Github的功能整合,以IntelliJ IDEA為例,在“VCS-import into version control”裏面可以通過”Create git repository”來創建項目的git:
然後就可以看到左下方出現了一個”Version control”的標簽:
可以通過commit來記錄自己所做的更改。之後便會在“Version control”的“log”裏面看到自己的commit了:
那麽git有什麽用呢?在本地工程中通過commit可以記錄文件的改動,然後決定是否需要回退。可以設置分支來添加新功能,在功能可以實現時再將分支合並。而且,git可以將代碼上傳到GitHub上面,在“VCS-import into version control”裏面通過”Share project on Github”來上傳項目到自己的GitHub賬戶上,那麽隊友即使不在身邊也可以讓他/她通過GitHub來時刻獲取代碼的最新狀態了。當你想要上傳更改時,可以通過“push”命令來執行:
如果自己的項目是克隆自別人的GitHub倉庫,可以通過“pull”指令獲取項目的最新狀態。如果上傳了項目,那麽就可以再GitHub的個人主頁上看到了,而且也是會記錄自己的項目歷史的:
五、以下為運行截圖
登錄界面——
註冊界面——
當密碼不符要求時——
題目難度選擇界面——
題目數量設定界面——
答題界面——
分數顯示界面——
結對編程總結+git使用與GitHub代碼管理——by林玉俊&唐宇涵