PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 30 | 35 |
· Estimate | · 估計這個任務須要多少時間 | 30 | 35 |
Development | 開發 | 1000 | 1710 |
· Analysis | · 需求分析 (包括學習新技術) | 240 | 360 |
· Design Spec | · 生成設計文檔 | 20 | 30 |
· Design Review | · 設計複審 | 10 | 10 |
· Coding Standard | · 代碼規範 (爲目前的開發制定或選擇合適的規範) | 20 | 30 |
· Design | · 具體設計 | 260 | 280 |
· Coding | · 具體編碼 | 240 | 700 |
· Code Review | · 代碼複審 | 90 | 150 |
· Test | · 測試(自我測試,修改代碼,提交修改) | 120 | 150 |
Test Report | 報告 | 105 | 120 |
· Test Report | · 測試報告 | 60 | 60 |
· Size Measurement | ·計算工做量 | 20 | 25 |
· Postmortem & Process Improvement Plan | · 過後總結, 並提出改進計劃 | 25 | 35 |
合計 | 1135 | 1765 |
①看到題目後,首先想弄清楚什麼是json文件,百度了一下發現JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。再通過仔細觀察題目後,能夠看出數據主要分爲姓名、電話和地址三個劃分,其中地址格式比較複雜,又分爲了幾級,一級是省,二級是市,三級是縣/區,四級是街道/鎮,五級是詳細地址。也就是題中所說的["直轄市/省","直轄市/市","區/縣/縣級市","街道/鎮/鄉","詳細地址"]。
②接着發現能夠用正則表達式把手機號從地址中提取出來,因而去搜索了相關函數用法;同時也發現姓名後都跟着一個「,」,所以可使用逗號做爲標誌將姓名也劃分出來。
③最後是地址,首先考慮有省市區關鍵字的狀況,一樣也能夠用正則表達式,經過匹配省市區將地址劃分爲五級;可是也存在沒有省市區的狀況的劃分,這時就想到能夠經過傳入包含全國省市區劃分的文件來與字符串進行掃描匹配,從而劃分出省市區。git
在改進程序性能的過程當中,由於主要程序並不完善,因此所花的改進時間主要使代碼正確,大概用了120分鐘。
主要觀察瞭如何才能更好的匹配並劃分地址。github
String regexp = "1\\d{10}";
由於手機號必然爲1開頭,並且手機號是連續的11位數字,而題目中有說不會出現地址中的數字與手機號相連的狀況,所以只要先匹配到開頭的數字1後若是後面跟着10位數字則能夠找出手機號。正則表達式
String regex = "(?<province>[^省]+自治區|.*?省|.*?行政區|.*?市)?(?<city>[^市]+自治州|.*?地區|.*?行政單位|.+盟|市轄區|.*?市|.*?縣)(?<dist>[^縣]+縣|.+區|.+市|.+旗|.+海域|.+島)?(?<distttt>[^區]+區|.+鎮|.+街道)?(?<village>.*)";
劃分省市區我是依照關鍵字進行,因此用了正則表達式,雖然也有把全國省市區劃分文件讀入而後遍歷進行匹配字符串的想法,可是沒有實現成功,所以採用了這種方法匹配出地址中的省市區關鍵字,匹配後成功後進行輸出。json
測試是使用eclemma來執行。緩存
錯誤樣例:函數
[{"���":"C���","���":"13756899511","���":["���","���","���","����","����110�����"]}
經過不斷的搜索學習,我知道了在解決一個題目的時候要學會堅持,有時候當一個地方想不出來的時候,要有刻苦專研的精神,不輕易放棄,極可能就能終於想出方法;但同時也要學會靈活應對,面對一種方法不管如何也沒法取得進展時,能夠換種思路,變換思惟方式,說不定柳暗花明又一村,找到了更快捷更合適的解決方案。 一開始學習的時候,我感到很困難,雖然有些想要放棄,但仍是從最基本的開始學習,慢慢了解到如何使用函數,如何對字符串進行分割,終於一點一點地打出了代碼。可是代碼還有不少不完善的地方,仍需大量的時間去學習和改善,在這個過程當中雖然很辛苦,可是也學到了很多的知識。在學習構建之法的過程當中,我學到了一些基礎知識和概念,瞭解瞭如何分析和測試,知道了當實現一個項目時不該該僅僅只是打代碼,而是應該先分析用戶使用功能的需求,接着列出相關設計和說明來進行開發。 另外構建之法也讓咱們咱們瞭解到一些基本技術,好比單元測試和效能分析工具等,感受仍有不少地方須要去學習。同時我也學會了在打代碼前能夠先填PSP表格,先規劃好我的開發的流程,在實際操做中才更有條理。