跟用戶溝通,問題盡量分析清楚,以及解決問題


分享一下上個星期,開發與跟用戶溝通歷程。

前提,以前舊系統,人事資料是一筆筆人手錄入。現在公司在減少人手,提高效率。因此Insus.NET需要修改舊系統,實現批量導入。

下面一些截圖來自郵件。

經用戶使用之后,還有一些特殊情況是在開發時是沒有想到的。當遇上下面的資料時,用戶反饋:


原因是有舊系統內,存儲雇員工號,只能存儲整型。看到用戶反饋的問題,我們會想到什么,怎樣回用戶的郵件?下面是Insus.NET的回復


從用戶提供的數據。我們需要知道第位字母由什么來替代?替代規則是什么。這都是需要跟用戶了解清楚。下面用戶回復:


上圖中,與用戶了解到,打少了字,正確是“四五百人”。
經分析,第一位和第三位,如果有出現字母是沒有什么問題,Insus.NET覺得第二位,將會出現下面的問題,回復用戶如下:


從上面回復中,跟用戶說明替換規則將有一些異常,得說清楚。看看用戶怎樣回復:



問題弄清楚之后,我們就可以做事了。
第二位將會有A~F,將替換為1~6。可以創建一個列表:

 
某一天,用戶需要再添加幾個G,H,I...只是在J以前的,還可以在此列表添加。

下面是替換方法:



 分別處理前三位字符,符合條件即替換之。看上去很復雜,維護起來看代碼還得看上半天,產生另外一個版本:


第二版本,稍微有些簡化。方法是先把處理的字符串切割為兩段,前三位字符串為一段,余下為一段,並存入陣列中。然后跟一種方案一樣去判斷與替換。

 切切拼拼,還是覺得復雜,是否有更好的方法? 下面分享Insus.NET第三次修改的,需要做的,是寫一個方法,也就是產生一切相關的字符,然后用來匹配。此方法算得上是封裝:

 

 我們再回過頭去看用戶提供的原資料,要么是兩位,要么是三位字符。第一位與第三位算得上是固定了。關鍵在於第二位。因此Insus.NET再創建一個字符模版集。

下面再來看看替換方法:



上面的代碼示例中,高亮部分的代碼,是對Dictionary數據集時行倒排序,目的是先匹配三位,再匹配兩位。經過這樣重構與修改,我們還可以封裝為另外一個方法:



最后變成了:



OK,完成了。


下面內容於2014-06-30 10:55分補充:
其實上面有一個方法:


是需要手動每個字母,這樣有可能會出錯,下面是Insus.NET重新修改,防止出錯的機率減少:


這樣只需傳入最后的一個字母,也達到方法封裝。

 
下面內容於2014-08-13 13:45分補充:
上面有個方法GetReplaceResult(string str),可以效率優化一下:


它是有帶有字符的才會跑這程序塊,如果遇上全是數字的字符串,我們就不必跑了:



還有一個方法replStr()效率也有問題,如下:

 

其中有循環兩次Letters(),意味着它需要產生兩次這個函數。因此Insus.NET把它重構一下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM