<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                上一篇文章中我們講解了如何在Android studio中進行單元測試。實際開發過程中有一些功能性的需求,比如測試工具類,測試數據存儲等測試工作,如果還是通過重復執行apk文件的編譯,安裝,運行等會浪費大量的時間,而這些功能與Android的開發環境無太大的關系,我們完全可以使用單元測試來執行。Android studio中默認是支持進行單元測試的,并提供了獲取Context等系統對象的API,我們可以通過其系統提供的API獲取Context等對象,進而測試相應的功能。 具體更多關于Android studio中進行單元測試的知識點,可參考我的:[Android studio中的單元測試](http://blog.csdn.net/qq_23547831/article/details/51868451) 本文我們將講解Android中的代碼Review。良好的產品開發迭代過程中,代碼Review是一個必不可少的步驟,通過代碼Review能夠提高產品質量,增強團隊成員之間的溝通,提高開發效率。所以團隊開發活動中定時進行代碼Review就顯得很有必要了。 **一:什么是代碼Review?** review字面的意思是再次查看,代碼review就是代碼再次查看評審的意思。這里我們首先看一下百科中對代碼Review中的定義: > 代碼評審是指在軟件開發過程中,通過對源代碼進行系統性檢查的過程。通常的目的是查找系統缺陷,保證軟件總體質量和提高開發者自身水平。 Code Review是輕量級代碼評審,相對于正式代碼評審,輕量級代碼評審所需要的各種成本要明顯低的多,如果流程正確,它可以起到更加積極的效果。正因如此,輕量級代碼評審經常性得被引入到軟件開發過程中。 我理解的代碼review就是在Android開發過程中,每個迭代周期編碼結束之后測試之前,團隊成員之間相互查看對方的代碼,不一定是逐行逐句的查看,主要是對核心方法,編程思路有一個大概的評審查看。 **二:代碼Review的好處** * 通過代碼Review可以提高產品代碼的質量 * 通過代碼Review可以增強團隊成員之間的溝通 * 通過代碼Review能夠有效的提前發現代碼中存在的缺陷與BUG,降低線上出現事故的概率 * 通過代碼Review可以提高團隊成員的編程能力,不同成員之間對功能設計思路的重構可以很好的提高團隊成員的個人專業技能 **三:為何需要代碼Review** * 由于團隊成員之間既有新成員又有老成員,既有大神也有菜鳥,為了提高產品代碼質量,所以團隊成員在產品迭代周期中固定時間進行代碼Review有利于提高全隊成員對產品代碼的理解與個人能力的提高。 * 通過代碼Review,團隊成員對產品的每個模塊都有了認識,對App上出現的錯誤信息立即反饋與修復。 **四:代碼Review實踐** 團隊成員每周都會有固定的時間進行代碼Review,每次Review的時間大概在半小時至一小時之間。 主要流程: * 每個人介紹各自的功能需求,實現的主要邏輯,核心代碼等; * 團隊成員提出問題,其他實現思路等; * 討論不同實現思路的方式以及優劣勢; **五:Android代碼lint檢查** 除了隊員之間的代碼Review,還可以通過Android 代碼lint的方式review代碼。Android studio默認已經提供了強大的lint檢查工具,通過其我們可以很方便的發現代碼中存在的問題,修正可能出現的bug等。 * 通過Android studio編譯工具執行lint檢查操作 (1)執行Android studio –> Analyze –> Inspect code操作,打開代碼檢查框 ![](http://img.blog.csdn.net/20160713181633868) (2)在代碼檢查框中選擇為整個工程執行lint檢查?還是整個module或者是當前的源文件執行lint檢查,這里為了簡單起見,我們只為當前的源代碼文件執行lint檢查,然后執行確認即可 ![](http://img.blog.csdn.net/20160713181822659) (3)接下來就可以在我們的Android studio查看lint檢查結果了 ![](http://img.blog.csdn.net/20160713182133203) 可以發現我們lint檢查之后出現了許多檢查結果,其中在uuelectricrenter項目下存在著92條檢查信息,下面我們就分析一下檢測結果。 **六:取消無用的lint檢查** - Android > Lint > Correntness ![](http://img.blog.csdn.net/20160714145816992) 可以看到在Correctness欄目下列出了出現問題的條目,而在右側則列出了出現問題的源碼文件,位置,問題描述,建議方案等: ![](http://img.blog.csdn.net/20160714150339576) 可以發現該lint問題是在MainMapFragment源碼文件的188行,我們找到改源碼文件的第188行,看一下源碼是怎么樣寫的: ~~~ rootView = inflater.inflate(R.layout.fragment_main_map, null); ~~~ 可以發現使用布局加載器的時候調用inflate方法第二個parentView參數我們傳遞的是null,這時候lint檢查就會報錯,當然了在程序中這樣寫是沒有問題的,而我們以后不想lint檢查的時候在檢查出這個問題,那么怎么辦呢? 選中lint檢查條目 –> 右鍵 –> Disable inspection,這時候我們再次執行lint檢查,發現就無法檢測出這個問題了: ![](http://img.blog.csdn.net/20160714150754724) **七:修復lint檢查異常** 在看一個lint檢查結果: ![](http://img.blog.csdn.net/20160714151006618) 好吧,這樣看的不是太清楚,我們看一下lint描述: ![](http://img.blog.csdn.net/20160714151039173) 問題描述是:在MainMapFragment的1635行,調用setText方法的時候沒有使用string資源,那我們就看一下改行代碼的實現: ~~~ mTvMsg.setText("步行" + result); ~~~ 可以看到我們為TextView設置text字符串的時候直接硬編碼寫入了text字符串,所以這時候報了lint檢查異常,這時候我們可以通過調用string資源的方式修改,然后再次執行lint檢查操作: ![](http://img.blog.csdn.net/20160714151344233) 可以發現這時候已經沒有了剛剛的lint檢查異常。 **八:如何設置lint檢查** Android studio –> Perferences –> Deitor Inspections ![](http://img.blog.csdn.net/20160714152436851) 一個簡單的設置lint檢查的例子 我們在Android布局文件中為TextView設置text的時候可能直接硬編碼寫入字符串: ~~~ <TextView Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:text="這是測試Text" Android:layout_marginTop="20dp" Android:layout_marginLeft="20dp" Android:layout_marginRight="20dp" Android:layout_gravity="bottom" /> ~~~ 而這時候Android studio并沒有為我們提示什么錯誤信息,我們可以更改lint檢查提示,讓其一旦檢測到有布局文件硬編碼的情況就報錯,還是和上面的步驟一樣: Android studio –> perferences –> Editor –> Inspections –> Hadrcoded text ![](http://img.blog.csdn.net/20160714152911993) 我們這時候修改器severity級別,由Warning更改為Error,這時候就可以看到錯誤信息了: ![](http://img.blog.csdn.net/20160714153043178) **九:其他相關的lint檢查**: [Android Studio Lint 自動檢查清除冗余資源 ](http://blog.csdn.net/u010015108/article/details/51190725) [Android APK瘦身之Android Studio Lint (代碼審查)](http://www.cnblogs.com/cheerego/p/5175764.html) [Android自定義Lint實踐](http://tech.meituan.com/Android_custom_lint.html) **十:關于lint檢查的快捷鍵** 上文中我們講解的是通過: Android studio –> Analyze –> Inspect code 的方式執行lint檢查,Android studio中還可以通過快捷鍵的方式直接打開lint檢查對話框: shift + control + A –> 輸入Ins –> 選擇Inspect Code 這樣就可以直接打開lint檢查對話框了: ![](http://img.blog.csdn.net/20160714153943002) **十一:Android開發規范** 代碼Review過程不單單是團隊check,代碼lint,一個好的開發規范也是很有必要的,這里推薦我的另一篇文章:[Android產品研發(一)–>實用開發規范 ](http://blog.csdn.net/qq_23547831/article/details/51534013)個人感覺產品研發過程中,開發規范真的很重要,很重要,非常重要(重要的事情說三遍),一個好的開發規范可以讓團隊中的人對他人的代碼更熟悉,新人也可以更好的了解產品的業務邏輯。開發規范并不是一個死的一成不變的,每個團隊可能都有自己的開發規范,只要是適合團隊的開發規范就是最好的開發規范。 **總結**: 本文我們講解了Android產品研發過程中代碼Review的相關知識,有團隊代碼Review,Android studio代碼lint檢查,Android開發規范等相關知識。代碼Review的方式不是非常重要,重要的是保持一個良好的代碼Review流程,這樣才能在不斷的代碼Review過程中提高產品代碼質量,增強團隊成員之間的溝通。 另外對產品研發技術,技巧,實踐方面感興趣的同學可以參考我的: [android產品研發(一)-->實用開發規范 ](http://blog.csdn.net/qq_23547831/article/details/51534013) [android產品研發(二)-->啟動頁優化 ](http://blog.csdn.net/qq_23547831/article/details/51541277) [android產品研發(三)-->基類Activity ](http://blog.csdn.net/qq_23547831/article/details/51546974) [android產品研發(四)-->減小Apk大小](http://blog.csdn.net/qq_23547831/article/details/51559066) [android產品研發(五)-->多渠道打包](http://blog.csdn.net/qq_23547831/article/details/51569261) [Android產品研發(六)–>Apk混淆](http://blog.csdn.net/qq_23547831/article/details/51581491) [android產品研發(七)-->Apk熱修復](http://blog.csdn.net/qq_23547831/article/details/51587927) [Android產品研發(八)–>App數據統計](http://blog.csdn.net/qq_23547831/article/details/51612429) [Android產品研發(九)–>App網絡傳輸協議](http://blog.csdn.net/qq_23547831/article/details/51655330) [Android產品研發(十)–>不使用靜態變量保存數據](http://blog.csdn.net/qq_23547831/article/details/51685310) [Android產品研發(十一)–>應用內跳轉scheme協議](http://blog.csdn.net/qq_23547831/article/details/51685310) [Android產品研發(十二)–>App長連接實現](http://blog.csdn.net/qq_23547831/article/details/51719389) [Android產品研發(十三)–>App輪詢操作](http://blog.csdn.net/qq_23547831/article/details/51764773) [Android產品研發(十四)–>App升級與更新](http://blog.csdn.net/qq_23547831/article/details/51764773) [Android產品研發(十五)–>內存對象序列化](http://blog.csdn.net/qq_23547831/article/details/51779528) [Android產品研發(十六)–>開發者選項](http://blog.csdn.net/qq_23547831/article/details/51809497) [Android產品研發(十七)–>hybrid開發](http://blog.csdn.net/qq_23547831/article/details/51812985) [Android產品研發(十八)–>webview問題集錦](http://blog.csdn.net/qq_23547831/article/details/51820139) [Android產品研發(十九)–>Android studio中的單元測試](http://blog.csdn.net/qq_23547831/article/details/51868451)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看