• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    華為軟件編程規范和范例

    發布: 2008-4-23 16:04 | 作者: 不詳 | 來源: www.cppblog.com/oosky | 查看: 471次 | 進入軟件測試論壇討論

    領測軟件測試網


    ¹9-8 :認真處理程序所能遇到的各種出錯情況 
    ¹9-9 :系統運行之初,要初始化有關變量及運行環境,防止未經初始化的變量被引用 
    ¹9-10 :系統運行之初,要對加載到系統中的數據進行一致性檢查 
    說明:使用不一致的數據,容易使系統進入混亂狀態和不可知狀態。 
    ¹9-11 :嚴禁隨意更改其它模塊或系統的有關設置和配置 
    說明:編程時,不能隨心所欲地更改不屬于自己模塊的有關設置如常量、數組的大小等。 
    ¹9-12 :不能隨意改變與其它模塊的接口 
    ¹9-13 :充分了解系統的接口之后,再使用系統提供的功能 
    示例:在B型機的各模塊與操作系統的接口函數中,有一個要由各模塊負責編寫的初始化過程,此過程在軟件系統加載完成后,由操作系統發送的初始化消息來調度。因此就涉及到初始化消息的類型與消息發送的順序問題,特別是消息順序,若沒搞清楚就開始編程,很容易引起嚴重后果。以下示例引自B型曾出現過的實際代碼,其中使用了FID_FETCH_DATA與FID_INITIAL初始化消息類型,注意B型機的系統是在FID_FETCH_DATA之前發送FID_INITIAL的。
    MID alarm_module_list[MAX_ALARM_MID];
    int FAR SYS_ALARM_proc( FID function_id, int handle )
    {
        _UI i, j;
        switch ( function_id )
        {
            ... // program code
            case FID_INITAIL:
                for (i = 0; i < MAX_ALARM_MID; i++)
                {
                    if (alarm_module_list[i]== BAM_MODULE // **)
                       || (alarm_module_list[i]== LOCAL_MODULE)
                    {
                        for (j = 0; j < ALARM_CLASS_SUM; j++)
                        {
                            FAR_MALLOC( ... );
                        }
                    }
                }
                ... // program code
                break;
            case FID_FETCH_DATA:
                ... // program code
                Get_Alarm_Module( );  // 初始化alarm_module_list
                break;
            ... // program code
        }
    }
    由于FID_INITIAL是在FID_FETCH_DATA之前執行的,而初始化alarm_module_list是在FID_FETCH_DATA中進行的,故在FID_INITIAL中(**)處引用alarm_module_list變量時,它還沒有被初始化。這是個嚴重錯誤。
    應如下改正:要么把Get_Alarm_Module函數放在FID_INITIAL中(**)之前;要么就必須考慮(**)處的判斷語句是否可以用(不使用alarm_module_list變量的)其它方式替代,或者是否可以取消此判斷語句。
    ¹9-14 :編程時,要防止差1 錯誤 
    說明:此類錯誤一般是由于把“<=”誤寫成“<”或“>=”誤寫成“>”等造成的,由此引起的后果,很多情況下是很嚴重的,所以編程時,一定要在這些地方小心。當編完程序后,應對這些操作符進行徹底檢查。
    ¹9-15 :要時刻注意易混淆的操作符。當編完程序后,應從頭至尾檢查一遍這些操作符,以防止拼寫錯誤 
    說明:形式相近的操作符最容易引起誤用,如C/C++中的“=”與“==”、“|”與“||”、“&”與“&&”等,若拼寫錯了,編譯器不一定能夠檢查出來。
    示例:如把“&”寫成“&&”,或反之。
    ret_flg = (pmsg->ret_flg & RETURN_MASK);  
    被寫為: 
    ret_flg = (pmsg->ret_flg && RETURN_MASK);
    rpt_flg = (VALID_TASK_NO( taskno ) && DATA_NOT_ZERO( stat_data ));
    被寫為: 
    rpt_flg = (VALID_TASK_NO( taskno ) & DATA_NOT_ZERO( stat_data ));
    ¹9-16 :有可能的話,if 語句盡量加上else 分支,對沒有else 分支的語句要小心對待;switch 語句必須有default 分支 
    ¹9-17 :Unix 下,多線程的中的子線程退出必需采用主動退出方式,即子線程應return 出口。 

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>