https://github.com/shewhowasborngood/wordChaingit
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | ||
· Estimate | · 估計這個任務須要多少時間 | 40 | 35 |
Development | 開發 | ||
· Analysis | · 需求分析(包括學習新技術) | 280 | 450 |
· Design Spec | · 生成設計文檔 | 35 | 0 |
· Design Review | · 設計複審(和同事審覈設計文檔) | 20 | 0 |
· Coding Standard | · 代碼規範(爲目前的開發制定合適的規範) | 10 | 30 |
· Design | · 具體設計 | 90 | 150 |
· Coding | · 具體編碼 | 450 | 660 |
· Code Review | · 代碼複審 | 160 | 90 |
· Test | · 測試(自我測試,修改代碼。提交修改) | 300 | 500 |
Reporting | 報告 | ||
· Test Report | · 測試報告 | 60 | 70 |
· Size Measurement | · 計算工做量 | 20 | 30 |
· Postmortem & Process Improvement Plan | · 過後總結,並提出過程改進計劃 | 15 | 0 |
合計 | 1480 | 2015 |
Information Hidinggithub
信息隱藏是用來保護程序,以減少設計決策的改變對程序帶來的影響。保護涉及提供穩定的接口,使算法
用編程語言功能或顯式導出策略來阻止客戶端訪問類或軟件組件的某些方面。在編程過程當中,將多個編程
定義爲public接口的函數進行封裝,僅對使用者開放指定的函數調用接口,從而讓使用者不能隨意的數組
調用和修改核心部分程序,避免不當的使用給程序帶來的麻煩。例如在咱們的程序中,設計一個類,編程語言
在裏面定義可讓用戶調用的接口,將其餘底層函數保護起來。在程序計算過程當中,若是不進行封函數
裝,用戶就能夠隨意修改變量致使程序以及計算結果的不穩定。性能
算法描述學習
採用面向對象的設計思想,運用動態規劃的方法,不斷的拆分數組,以尋找符合要求的,再將若干個目標合併。測試
類的介紹
計算模塊的類包括Wordlist類、Word類和List的模板類
Wordlist類:處理讀取的單詞表,生成目標單詞鏈
Word類:存儲單詞及單詞的相關信息(首尾字母,單詞長度)
List的模板類:提供鏈表的基本方法
關鍵算法
在Wordlist類裏的getwordchain函數是實現最大子鏈功能的部分,排除找到目標尾部、子
鏈爲空、子鏈中沒有符合要求的單詞這幾個終止遞歸的狀況外,單詞表中剩下的單詞要進入
遞歸進行進一步的查找:若是找到了可鏈接單詞,在鏈表中刪除該單詞,而後在剩下單詞組
成的新鏈表中遞歸查找最長單詞串;接着找到子鏈表中的最大子鏈,並比較,選擇更大的一
個;一直進行遞歸調用直到子鏈中沒有符合要求的單詞,則返回最大子鏈(當最大子鏈不存
在,返回空鏈表)。
能夠經過改進部分算法減小遞歸次數:在遞歸開始前遍歷全部單詞,標記出尾字母沒有任何
對應的單詞的首字母的單詞,能夠下降一些複雜度
通常來講,在面向對象技術中,咱們認爲「接口」是惟一重要的東西,接口定義了組件,接口
肯定了系統,接口是面向對象中咱們惟一須要關心的東西,接口不只是必要的,並且是充分
的。然而,契約觀念提醒咱們,僅僅有接口還不充分,僅僅經過接口還不足以傳達足夠的信
息, 爲了正確使用接口,必須考慮契約。只有考慮契約,纔可能實現面向對象的目標:可靠
性、可擴展性和可複用性。
在軟件體系中,程序庫和組件庫被類比爲server,而使用程序庫、組件庫的程序被視爲
client。根據這種C/S關係,咱們每每對庫程序和組件的質量提出很嚴苛的要求,強迫它們承
擔本不該該由它們來承擔的責任,而過度縱容client一方,甚至要求庫程序去處理明顯因爲
client錯誤形成的困境。客觀上致使程序庫和組件庫的設計和編寫異常困難,並且質量隱患
反而更多;同時client一方代碼大多鬆散隨意,質量低劣。引入契約觀念以後,這種C/S關係
被打破,你們都是平等的,你須要我正確提供服務,那麼你必須知足我提出的條件,不然我
沒有義務「排除萬難」地保證完成任務。
在不容許出現環狀況下出現了環,報錯退出
命令行參數不符合規定的,不響應
在命令行輸入-h -t時,若後面出現的不是單個字母,默認讀首字母
文件沒法打開時,報錯退出
直接在main函數裏實現,對每一個命令行參數進行判斷,並對應不一樣處理
經過傳參的方式,在計算模塊中把對應參數傳遞進去