關於軟體工程第一次項目的一些感想

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   java   strong   檔案   資料   

  在奮鬥了24+小時之後,終於完成了軟體工程第一次項目。中間有很多曲折,也收穫了很多經驗。

 

  預計完成時間:複習C++(一小時);構思(半小時);編碼(四小時);調試(二小時);其他(半小時)。合計(八小時)。

  實際完成時間:複習C++(兩小時);構思(半小時);編碼(三小時);調試(五小時+);最佳化(三小時)。合計(十三小時+)。

  首先是審題方面。

這個要求裡面最需要注意的有三點:

1、單詞的構成,前三個必須是字母,後面可以接任意多的字母或數字,其他字元均視為分隔字元。

2、忽略大小寫

3、123file裡的file不能算為一個單詞,所以在用Regex的時候需要特別注意。

  其次是軟體的初步構思。

這裡我思考了如下幾點

1、首先是語言的選擇,C++和C#。這兩種語言我都沒有系統的用過,暑假的時候自學過C#,上學期也閱讀過《C++編程思想》,但最終還是選擇了與C語言相近的C++。

2、其次是面向過程還是物件導向。這個程式有三個部分,但三個部分不會同時運行,而是根據命令列參數輸入的不同來決定運行哪一個部分。所以我選擇了物件導向的程式設計。將程式的三個部分分別寫入三個類,根據命令列輸入的不同來new相應的對象。這樣設計程式相對條理清晰,也減少了出錯的幾率。

註:這三個部分其實有很多功能是一樣的,可以考慮將類劃分開來,合并相同的部分,減少代碼重複,減輕編碼工作量。(不過我還沒這樣做,實在是沒精力修改了)

3、再者是檔案的掃描。之前使用java語言的時候,有檔案類可以直接用,相當方便。但是當我開始寫程式的時候發現c++並沒有這樣的類,所以經過各種百度和詢問同學,使用了_finddata_t這個強大的結構體。(雖然我還沒完全弄明白這個結構體的功能)這樣一來就可以遞迴檔案目錄進行檔案掃描。

4、然後是單詞讀入。大致分為兩種方法,一種是逐個字元讀入,另一種是讀入全部字元然後進行分析。我個人傾向於後者,因為這樣批量處理效率高,代碼簡潔。

5、最後是結果儲存的資料結構。一種是線性表,一種是二叉樹。但程式涉及尋找有無相同元素,所以二叉樹會節省很多時間。

 

下面是程式測試結果,我先測試了vs的安裝目錄。

效能分析如下:

由於我沒有使用雜湊表,所以程式效率並不太高,但也還能接受。

 

編碼過程中遇到的問題:

1、初始化的問題,任何對象在使用之前最好初始化,避免程式崩潰。

2、建立二叉樹的問題。這個問題我不止一次犯過。(應該好好反思)就是遞迴建立的時候,建立立的節點沒有接到樹根上。所以導致程式崩潰。

3、關於程式效率的問題。最開始我用的vector來存的資料,在測試資料量較大時,耗時明顯過長。後來改為用二叉樹儲存,效率明顯提升。

 

學到了什麼:

1、編程之前對程式應有整體的構想。

2、應養成良好的編程習慣,降低代碼出錯率。

3、應在資料結構和演算法上對程式進行最佳化。

 

關於軟體工程第一次項目的一些感想

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.