開發ERP軟件應該遵守的22條規則


總結一下做管理軟件,有哪些項是經過檢驗的條款,必須遵守的。

界面篇

1  要保存用戶的偏號(profile/favourite)。 ASP.NET 2.0引入此功能,當用戶修改默認的控件的屬性時,框架應當保存用戶的修改。顯而易懂的例子是grid控件中的列順序。用戶修改之后,關閉窗體時,要可以保存起來,當用戶再次打開時,應當加載用戶上次的修改。

2  界面中的數據要有通一的導出方案。導出類型一般是Mircrosoft Excel, Microsoft Access, Text,CSV。Excel為第一需要考慮的導出格式。

3  半角全角輸入轉化。對於全角輸入,應當轉化為半角。全角半角長度不一樣,但在界面中它的字符是一樣的,應當默認的將用戶全角的輸入轉化為半角。或是直接提示用戶切換輸入法,不允許全角輸入。

4  使用標准的流行的報表開發技術和設計工具。自定義報表設計器很難控制穩定性,fyireport就是這樣,即使有新功能也很難加入。再次,它的學習成本也比較高。推薦直接選擇Crystal Report或是Reporting Services。

Crystal Report一直都沒有大的改動,Reporting Services因為SQL Server昂貴的授權費用,因而產生了一些優秀的報表工具。但我仍然推薦用成熟的Crystal Report技術。

5  做好系統的三個門面窗體: Login, Splash,About。

登陸窗口的背景色要與主窗體一致,給用戶的第一感覺的地方,要以穩重為主。我選擇以微軟網站的藍色基調為主色。

Splash顯示當前的程序的版本,授權用戶信息。About對話框中顯示license信息,以及客戶服務聯系方式。

6  界面中調用一項系統服務時,應該先檢查它是否存在。比如即將顯示報表界面,應當先檢測報表服務是否存在,進行環境檢測。運行事務時,應該先檢測MSDTC服務是否已經啟動。以.NET 4.5 為Target生成程序版本時,需要先檢測.NET 4.5是否已經安裝。

7  保持與服務器的連接,斷線后要禁用用戶輸入。這需要引入心跳機制。

 

 

數據庫篇

1  給每個日記帳表添加額外的五個字段。用來保存這筆記錄的創建人,創建時間,最后修改時間,修改日期:

Created_By, Created_Date, Revised_By, Revised_Date

另一個字段是為維護數據(data fix)時,方便使用:添加一個自增列,identity(1,1) ,設置為每一個表的第一列。名字可以是RECNUM(record number), LineNO(line number) 等等。

2  統一的數據位數方案。比如

行號類: LineNo/EntryNo/RecordNo/Recnum 不顯示小數點,

數量類:Qty/Quantity 6位小數

金額類:Amt/Amount 4位小數

3  對於通用的數據表,比如物料主檔,客戶主檔,供應商主檔,應該保守的留20個備用字段,以供客戶填寫自定義的信息。再完善的數據庫字段,都有可能考慮不周到的地方。20個備用字段,應該可以滿足大部分需求。

4  修改數據庫排序規則,一般默認為USA標准的SQL_LATING_CP1_CI_AS。這樣可以減少存儲過程出錯的機率。

另外,在安裝SQL Server時,也要選取這個排序規則。

 

加密保護篇

1 用戶登陸表中的密碼,不能以明文保存。可以用鹽或是MD5加密,或是可逆的加密,或是字符串混淆(比如給每個字符都加一定規則的字符串,到檢測密碼時,再反過來還原密碼)。

2  提供幾種方式的用戶驗證機制。認證類型:PASSWORD, DOMAIN。

傳統的密碼驗證需要輸入密碼,如果改成域DOMAIN驗證,不用輸密碼,根據當前用戶直接登陸系統。

3  完善的license許可授權機制。虛擬機檢測,硬件檢測,過期時間檢測,功能限制檢測,試用版過期檢測。

4  混淆.NET程序集,增加反編譯難度。

 

程序開發篇

1  提供通用的跟蹤機制解決方案。比如應有Debug.WriteLine輸出跟蹤信息,再截獲這個輸出,顯示到log viewer程序中。或是應用UDP端口發送跟蹤信息,再捕獲顯示到界面中。下面的代碼可做參考

Trace.Listeners.Add(new TextWriterTraceListener("TextWriterOutput.log", "myListener"));
Trace.TraceInformation("Test message.");
// You must close or flush the trace to empty the output buffer.
Trace.Flush();
 

2  提供通用的附件管理功能。附件可以上傳到數據庫中,也可以直接保存一個路徑引用。同時,需要寫一個附件瀏覽器,可查看所有的帶附件的功能的內容。

3  界面中Tab鍵的順序要合理,遵守從上到下,從左到右的順序。還可以做到Enter轉成Tab,回車間轉成Tab鍵。

4   源代碼中,數字類型的值的格式要統一。0x開頭的16進制,默認的是10進制。這兩個格式應當統一。可以使用Windows 7的計算器功能實現快速修改一個16時制數為10時制數。

5  提供標准的數據操作功能。

數據存檔(Archieve):可以把數據導出為EXCEL或是其它的格式

數據清理(Cleanup):可以清除數據表

數據再開始(Restart):只清除日記帳數據,而保留系統設置和主檔數據

數據導入(Load): 從備份文件中加載數據,相當於導入數據。

6 界面上長時間的操作,要轉成后台線程。界面中可以有BackgroundWorker,代碼邏輯中,應該調用System.Threading.Thread的后台線程來計算。與此同時,界面中的光標也需要改變

this.Cursor=Cursors.WaitCursor;
...... long operation
this.Cursor=Cursors.Default; 

 

7  經常留意代碼效率改善方法,並把它應用到系統中。舉例如下

1) 不要用string ax=”” 判斷ax是否為空, ax.Length==0的效率高於ax==string.Emptyu 一般用as.IsNullorEmpty
2) 對於不改變的變量,用常量代替
3)  用Linq代替大量的foreach查詢
4)  MyType t=(MyType) t和t as MyType的效率比較
5)  List<T>代替Array,Haset<T> ,Dictionary<K,V> 代替Hashtable

 



 


免責聲明!

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



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