<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    做設計前期需要注意的細節

    做設計前期需要注意的細節

     

    數據庫方面:

    1、  數據庫設計,所有整數型的字段默認賦值為0(或-1,這個根據業務來就好,不是特別強求),字符型也默認賦值‘’(這個倒可做可不做)。可以避免程序的空指針異常。

    詳細例子:

    Public class User{

    Private Integer state;

    Public Integer getState(){

    Return state;

    }

    }

          

    action層調用時:

    User user = new User();

    If(user.getState()>1){ 如果數據庫沒有賦初始值的話,就會報空指針異常

    //其他業務邏輯

    }

     

    2、  把所有冗余字段記錄清楚,下次應用程序修改某字段的時候就要把相應的冗余字段全部修改過來。可以避免數據不一致性。

    例子:

    A表冗余了b表的name字段,c表冗余了b表的name字段。

    程序實現有兩種方式解決這種冗余數據:

    ü         修改bname字段的時候就相應的把ac表的name字段也修改掉

    ü         修改bname字段的時候插入到另外一個表中,通過定時器在凌晨的時候進行自動修改

    3、  主外鍵通過數據庫文檔描述清楚,數據庫不直接建立主外鍵關系,最主要是考慮到以后數據庫擴展,建立了主外鍵的話,水平擴展會非常難。

    4、  Tinyint類型的數據,應該說明每種類型的用途,例如: 1:刪除 2:未刪除。

    5、  某一些初始數據前期就應該固定好,并且備份好。以免以后弄亂了。比如:城市數據都不會變動的數據。

    6、  數據庫的數據主要分為基礎數據和業務數據,城市等這些屬于基礎數據,而會員和會員賬號屬于業務數據,業務數據在應用程序中就需要注意了,添加一個會員數據后需要把會員賬號的默認賬號也開起來(當然有些業務規則要求賬號可以后期獨立開啟)。

    7、  對于數據庫中“刪除”操作的處理,我們不需要將數據刪除,只要將狀態標識一下即可,比如用戶可以設置一個state狀態,1:啟用 2:禁用 3:刪除

    代碼方面:

    1、  統一checkstyle和版權申明等注釋。

    2、  Action在前期就應該用模塊化方法規定好,同一模塊中公用的部分應該用utils文件來進行共享,避免使用繼承,減少程序過于龐大和復雜化。

    3、  業務層之間調用應該使用service,而不是去直接調用dao層。

    4、  業務層的代碼特別是updatedelete的方法不能直接返回void,應該給出一個特別的值,或者拋出異常,客戶端才能真正的準確知道此次操作是否真正成功。

    可能比較模糊,舉一個例子:

    前提條件,業務層的代碼如下:

    Public void deleteById(int id){

    String sql = “delete from User where uid=?”;

    userDao. executeUpdate(sql);

    }

    客戶端發起刪除操作,給了一個數據庫不存在的id,而這樣的delete語句是不會報錯的.那么在action層調用這個方法的時候,action層只要沒有拋出異常,那么action只能認為業務層的deleteById方法一定執行成功了,實際對于用戶來說是沒有執行成功這個操作。用戶體驗非常不好。如何改進呢?

    Public int deleteById(int id){

    String sql = “delete from User where uid=?”;

    Return userDao. executeUpdate(sql);

    }

    Action層調用這個方法后,判斷返回的int值判斷是否執行成功,然后把相應的結果反饋給客戶。

    另外一種改進方法:

    Public void  deleteById(int id) throws new

    DeleteException{

    String sql = “delete from User where uid=?”;

    Int result = userDao. executeUpdate(sql);

    If(result==0){

    Throw new DeleteException(“刪除操作失敗”);

    }

    }

    Action層調用這個方法后就一定要捕獲DeleteException異常,那么反饋給客戶的結果也是正確的。

     

    5、  dao層的方法也是類型于上面所講的。

    6、  ajax層的ajax方法調用也要注意一點:對于都要加上error方法或者failure方法,因為服務端出問題的時候,有一個很好的提示給用戶,對于用戶體驗來說也是非常好的一種感受。

    7、  業務層用例之間的耦合盡量少,但是類似交互規則這樣的場景存在的話如何處理呢,可以通過業務規則來處理,可以減少耦合。

    posted on 2010-09-25 12:10 yangpingyu 閱讀(193) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2010年9月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    收藏夾

    linux

    產品交互

    分析,設計,架構

    安全

    技術牛人

    數據庫

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲视频在线免费观看| 亚洲精品卡2卡3卡4卡5卡区| 亚洲免费在线观看视频| 九九精品成人免费国产片| 亚洲一区二区三区在线| 亚洲一区二区三区免费在线观看| 波多野结衣中文一区二区免费| 亚洲男人天堂av| 足恋玩丝袜脚视频免费网站| 666精品国产精品亚洲| 久热中文字幕在线精品免费| 国产精品高清视亚洲精品| 成人黄18免费视频| 色窝窝亚洲AV网在线观看| 国产最新凸凹视频免费| 亚洲人成激情在线播放| 成人人观看的免费毛片| 久久精品a亚洲国产v高清不卡 | 日本免费一区二区三区最新vr| 亚洲av无一区二区三区| 四虎在线成人免费网站| 亚洲中文字幕无码爆乳| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产极品美女高潮抽搐免费网站| 免费人成网上在线观看| 亚洲无线观看国产精品| 18女人腿打开无遮掩免费| 亚洲日韩国产欧美一区二区三区 | 九九免费精品视频在这里| 久久这里只有精品国产免费10| 亚洲天堂中文资源| 我要看WWW免费看插插视频| 色爽黄1000部免费软件下载| 亚洲午夜久久影院| 日韩免费观看的一级毛片| 国产中文字幕在线免费观看| 四虎永久在线精品免费影视| 久久久久久噜噜精品免费直播| 亚洲视频一区在线播放| 伊人久久亚洲综合影院| 国产亚洲福利一区二区免费看|