芙蓉興盛-Android開發(fā)規(guī)范_第1頁
芙蓉興盛-Android開發(fā)規(guī)范_第2頁
芙蓉興盛-Android開發(fā)規(guī)范_第3頁
芙蓉興盛-Android開發(fā)規(guī)范_第4頁
芙蓉興盛-Android開發(fā)規(guī)范_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、芙蓉興盛 電商事業(yè)部技術(shù)中心 內(nèi)部文件Android編程規(guī)范目錄1. 目的32. 適用范圍33. 定義34. 基本原則34.1. 首先是為人編寫程序,其次才是計算機34.2. 保持代碼的簡明清晰,避免過分追求編程技巧34.3. 所有的代碼盡量遵循公共規(guī)范34.4. 編程時首先達到正確性,其次考慮效率34.5. 盡可能重用、修正老的代碼34.6. 盡量減少同樣的錯誤出現(xiàn)的次數(shù)34.7. 代碼基本規(guī)范主要內(nèi)容:35. 布局45.1. 基本格式45.2. 對齊65.3. 空行空格65.4. 斷行86. 注 釋87. 命名規(guī)則108. 聲明149. 表達式與語句1410. 類和接口1711. 調(diào)試18

2、11.1. 調(diào)試日志打印181. 目的統(tǒng)一編程風格,提高的可讀性與編碼效率,避免團隊開發(fā)可能帶來的混亂。2. 適用范圍本規(guī)范適用于公司項目產(chǎn)品運用Java作為開發(fā)語言的編碼活動。3. 定義規(guī)則 : 編程時必須遵守的約定建議 : 編程時需要考慮的約定正例 : 對此規(guī)則或建議給出的正確例子反例: 對此規(guī)則或建議給出的反面例子4. 基本原則4.1. 首先是為人編寫程序,其次才是計算機這是軟件開發(fā)的基本要點,軟件的生命周期貫穿產(chǎn)品的開發(fā)、測試、生產(chǎn)、用戶使用、版本升級和后期維護等長期過程,只有易讀、易維護的軟件代碼才具有生命力。4.2. 保持代碼的簡明清晰,避免過分追求編程技巧簡單是最美。保持代碼的簡

3、單化是軟件工程化的基本要求。不要過分追求技巧,否則會降低程序的可讀性。4.3. 所有的代碼盡量遵循公共規(guī)范編程時以該規(guī)范為準,規(guī)范沒有規(guī)定的內(nèi)容參考上面的標準。4.4. 編程時首先達到正確性,其次考慮效率編程首先考慮的是滿足正確性、健壯性、可維護性、可移植性等質(zhì)量因素,最后才考慮程序的效率和資源占用。4.5. 盡可能重用、修正老的代碼盡量選擇可借用的代碼,對其修改優(yōu)化以達到自身要求。4.6. 盡量減少同樣的錯誤出現(xiàn)的次數(shù)事實上,我們無法做到完全消除錯誤,但通過不懈的努力,可以減少同樣的錯誤出現(xiàn)的次數(shù)。4.7. 代碼基本規(guī)范主要內(nèi)容:1、所有文件編碼為UTF-82、一個類或接口對應一個Java文

4、件,代碼工程項目名詞應當與所屬目錄名稱相同。3、所有類名、接口名、方法名、屬性名第一個字母必須大寫,公開方法和屬性需要標注注釋。4、所有局部變量名、成員變量名、參數(shù)名和控件名第一個字母必須小寫。所有SQL語句關鍵字必須全部大寫,常量名必須全部大寫,且單詞與單詞之間需要使用下劃線。界面控件命名必須加前綴,前綴為控件的簡寫。5、代碼段要空行,并有說明代碼段對應業(yè)務邏輯的注釋,簡單代碼段可以不加注釋,但一定要空行。運算符前后需要空格。6、盡量避免使用GOTO語句,return語句前需要空行。5. 布局程序布局的目的是顯示出程序良好的邏輯結(jié)構(gòu),提高程序的準確性、連續(xù)性、可讀性、可維護性。更重要的是,統(tǒng)

5、一的程序布局和編程風格,有助于提高整個項目的開發(fā)質(zhì)量,提高開發(fā)效率,降低開發(fā)成本。同時,對于普通程序員來說,養(yǎng)成良好的編程習慣有助于提高自己的編程水平,提高編程效率。因此,統(tǒng)一的、良好的程序布局和編程風格不僅僅是個人主觀美學上的或是形式上的問題,而且會涉及到產(chǎn)品質(zhì)量,涉及到個人編程能力的提高,必須要引起重視。5.1. 基本格式正例:【規(guī)則5-1-1】源代碼文件(.java)的布局順序是:包名、import語句、注釋、類。package com.mj.test;import android.app.Activity;/* * * ClassName:DemoActivity * Descript

6、ion: 類功能描述 * author: maj * date: 2015年6月11日 * */public class DemoActivity extends Activity 【規(guī)則5-1-2】遵循統(tǒng)一的布局順序來書寫import語句,不同類別的import語句之間用空行分隔。說明:import命名空間語句的排列順序為java開頭的命名空間在最前面,接下來是引自android的命名空間,再接下來是引用第三方包的命名空間,最后是應用程序自身的命名空間,即import中標準的命名空間要在本地的命名空間之前。正例:import java.util.ArrayList;import java.u

7、til.Collections;import android.content.Context;import android.graphics.Bitmap;import android.widget.Toast;import com.unicom.zworeader.db.dao.V2WorkInfoDao;import com.unicom.zworeader.framework.adapter.ZBaseAdapter;【規(guī)則5-1-3】程序中一行的代碼和注釋不能超過80列。說明:包括空格在內(nèi)不超過80列?!疽?guī)則5-1-4】if、else、else if、for、while、do等語句后面

8、加 。說明:這樣可以防止書寫失誤,也易于閱讀。正例:if (varible1 < varible2) varible1 = varible2;反例:下面的代碼執(zhí)行語句緊跟if的條件之后,而且沒有加,違反規(guī)則。if (varible1 < varible2) varible1 = varible2; 【規(guī)則5-1-5】源程序中關系較為緊密的代碼應盡可能相鄰?!疽?guī)則5-1-6】不同邏輯程序塊之間要使用一個空行分隔?!窘ㄗh5-1-7】 java代碼縮進用tab,不用空格,一個tab定義為四個空格。非java代可以使用TAB鍵,也可以使用空格進行縮進??s進為4個空格。說明:這樣便于程序閱讀

9、和查找。5.2. 對齊說明:這樣使代碼便于閱讀,并且方便注釋。正例:void Function(int iVar) while (condition) DoSomething(); / 縮進一個tab,4格反例:void Function(int iVar)while (condition)DoSomething();說明:消除不同編輯器對TAB處理的差異,有的代碼編輯器可以設置用空格代替TAB鍵。5.3. 空行空格說明:空行起著分隔程序段落的作用。適當?shù)目招锌梢允钩绦虻牟季指忧逦?。正例:【?guī)則5-3-2】一元操作符如“!”、“”、“+”、“-”、“*”、“&”等前后不加空格?!啊?、

10、“.”這類操作符前后不加空格。【規(guī)則5-3-3】多元運算符和它們的操作數(shù)之間留一個空格。【規(guī)則5-3-4】關鍵字之后要留空格。【規(guī)則5-3-5】函數(shù)名之后不要留空格?!疽?guī)則5-3-6】(向后緊跟,)、,、;向前緊跟,緊跟處不留空格。,之后要留空格。;不是行結(jié)束符號時其后要留空格。【規(guī)則5-3-7】xml布局文件末尾留有一個單獨的空行void Hey(void) Hey實現(xiàn)代碼/ 空一行void Ack(void) Ack實現(xiàn)代碼反例:void Hey (void) Hey實現(xiàn)代碼void Ack (void)Ack實現(xiàn)代碼/ 兩個函數(shù)的實現(xiàn)是兩個邏輯程序塊,應該用空行加以分隔。正例:!bVal

11、ueiValue+iCount&fSumaiNumberi = 5;tBox.dWidth正例:fValue = fOldValue;fTotal + fValue;iNumber += 2;說明:if、for、while等關鍵字之后應留一個空格再跟左括號(,以突出關鍵字。【規(guī)則5-3-7】注釋符與注釋內(nèi)容之間要用一個空格進行分隔?!疽?guī)則5-4-1】長表達式(超過120列)要在低優(yōu)先級操作符處拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要進行適當?shù)目s進,使排版整齊。【規(guī)則5-4-2】函數(shù)聲明時,類型與名稱不允許分行書寫。說明:函數(shù)名后緊跟左括號(,以與關鍵字區(qū)別。正例

12、:例子中的 凵 代表空格。 for凵(i凵=凵0;凵i凵<凵MAX_BSC_NUM;凵i+)DoSomething(iWidth,凵iHeight);正例:/* 注釋內(nèi)容 */ 注釋內(nèi)容反例: /*注釋內(nèi)容*/注釋內(nèi)容5.4. 斷行正例:if (iFormat = CH_A_Format_M) && (iOfficeType = CH_BSC_M) / 條件表達式的續(xù)行在第一個條件處對齊 DoSomething();/ 函數(shù)聲明的續(xù)行在第一個參數(shù)處對齊BYTE ReportStatusCheckPara(BYTE ucCallNo, BYTE ucStatusReport

13、No);/ 賦值語句的續(xù)行應在賦值號處對齊fTotalBill = fTotalBill + faCustomerPurchasesiID + fSalesTax(faCustomerPurchasesiID);正例:double CalcArea(double dWidth, double dHeight);反例:double CalcArea(double dWidth, double dHeight);6. 注 釋注釋有助于理解代碼,有效的注釋是指在代碼的功能、意圖層次上進行注釋,提供有用、額外的信息,而不是代碼表面意義的簡單重復?!疽?guī)則6-1】類、方法、屬性的注釋采用Java doc格

14、式注釋。代碼間多行注釋為“/* */”,單行注釋采用“/ ”。不要再方法內(nèi)部使用java doc 形式的注釋“/*/”正例:/* * 該類所實現(xiàn)的功能簡要描述 * * author author name * */public class Sample / 成員變量private int mProperty1;/* * 獲取屬性值 */public int getProperty1() return m_iProperty1;/* * 手動登錄 * param username * param pwd * return 登錄成功則返回true,否則返回false */public b

15、oolean loginManual(String username, String pwd) return true;【規(guī)則6-2】一般情況下,源程序有效注釋量必須在20以上。說明:注釋的原則是有助于對程序的閱讀理解,注釋不宜太多也不能太少,注釋語言必須準確、易懂、簡潔。有效的注釋是指在代碼的功能、意圖層次上進行注釋,提供有用、額外的信息。注釋使用中文,保證代碼和注釋的一致性。修改代碼同時修改相應的注釋,不再有用的注釋要刪除。注釋應與其描述的代碼相近,對代碼的注釋應放在其上方或右方(對單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開?!疽?guī)則6-3】注釋應與其描述

16、的代碼相近,對代碼的注釋應放在其上方或右方(對單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開。說明:在使用縮寫時或之前,應對縮寫進行必要的說明。正例: 如下書寫比較結(jié)構(gòu)清晰/* 獲得子系統(tǒng)索引 */subSysIndex = aDataindex.SysIndex;/* 代碼段1注釋 */ 代碼段1 /* 代碼段2注釋 */ 代碼段2 反例1:如下例子注釋與描述的代碼相隔太遠。/* 獲得子系統(tǒng)索引 */iSubSysIndex = aDataiIndex.iSysIndex;反例2:如下例子注釋不應放在所描述的代碼下面。iSubSysIndex = aDatai

17、Index.iSysIndex; /* 獲得子系統(tǒng)索引 */反例3:如下例子,顯得代碼與注釋過于緊湊。/* 代碼段1注釋 */ 代碼段1 /* 代碼段2注釋 */ 代碼段2 反例4:如下例子,排版不整齊,閱讀不方便。int DoSomething(void) /* 代碼段1注釋 */ 代碼段1 /* 代碼段2注釋 */ 代碼段2 【規(guī)則6-4】對分支語句(條件分支、循環(huán)語句等)必須編寫注釋。說明:這些語句往往是程序?qū)崿F(xiàn)某一特殊功能的關鍵,對于維護人員來說,良好的注釋有助于更好的理解程序,有時甚至優(yōu)于看設計文檔。【建議6-5】通過對函數(shù)或過程、變量、結(jié)構(gòu)等正確的命名以及合理地組織代碼結(jié)構(gòu),使代碼

18、成為自注釋的?!窘ㄗh6-6】修改代碼應該在修改開始處加注釋, 格式如下,包含修改原因,如果是BUG附上BUGID,修改時間跟修改人的姓名。/修改原因 BUGID - 20150819 by Who說明:清晰準確的函數(shù)、變量命名,可增加代碼的可讀性,減少不必要的注釋。7. 命名規(guī)則好的命名規(guī)則能極大地增加可讀性和可維護性。同時,對于一個有上百個人共同完成的大項目來說,統(tǒng)一命名約定也是一項必不可少的內(nèi)容。本章對程序中的所有標識符(包括命名空間、變量名、常量名、控件名、參數(shù)名、屬性名、方法名、類名、接口等)的命名做出約定?!疽?guī)則7-1】標識符要采用英文單詞或其組合,便于記憶和閱讀,切忌使用漢語拼音來

19、命名?!疽?guī)則7-2】標識符只能由26個英文字母,10個數(shù)字,及下劃線的一個子集來組成,并嚴格禁止使用連續(xù)的下劃線,下劃線也不能出現(xiàn)在標識符頭或結(jié)尾(預編譯開關除外)?!疽?guī)則7-3】標識符的命名應當符合“min-length && max-information”原則?!疽?guī)則7-4】采用應用領域相關的術(shù)語來命名?!疽?guī)則7-6】用正確的反義詞組命名具有互斥意義的變量或相反動作的函數(shù)等。說明:標識符應當直觀且可以拼讀,可望文知義,避免使人產(chǎn)生誤解。程序中的英文單詞一般不要太復雜,用詞應當準確。說明:這樣做的目的是為了使程序易讀。因為 variable_name 和 variable_

20、name 很難區(qū)分,下劃線符號_若出現(xiàn)在標識符頭或結(jié)尾,容易與不帶下劃線_的標識符混淆。說明:較短的單詞可通過去掉“元音”形成縮寫,較長的單詞可取單詞的頭幾個字母形成縮寫,一些單詞有大家公認的縮寫,常用單詞的縮寫必須統(tǒng)一。協(xié)議中的單詞的縮寫與協(xié)議保持一致。對于某個系統(tǒng)使用的專用縮寫應該在某處做統(tǒng)一說明。正例:如下單詞的縮寫能夠被大家認可: temp 可縮寫為 tmp; statistic 可縮寫為 stat; increment 可縮寫為 inc; message 可縮寫為 msg;說明:軟件開發(fā)人員應注意軟件用戶的一些約定術(shù)語,不應當隨意的創(chuàng)造術(shù)語,這會降低軟件的易用性。說明:下面是一些在軟

21、件中常用的反義詞組。 add/remove ; begin/end ; create/destroy ; insert/delete ; first/last ; get/release ; increment/decrement ; put/get ; add/delete ; lock/unlock ; open/close ; min/max ; old/new ; start/stop ; next/previous ; source/target ; show/hide ; send/receive ; source/destination ; cut/paste ; up/down

22、【規(guī)則7-7】常量名都要使用大寫字母, 用下劃線 _ 分割單詞?!疽?guī)則7-8】一般變量名不得取單個字符(如i、j、k等)作為變量名,局部循環(huán)變量除外?!疽?guī)則7-9】使用一致的前綴來區(qū)分變量的作用域?!疽?guī)則7-10】完整的變量名應由前綴+變量名主體組成,變量名的主體應當使用“名詞”或者“形容詞名詞”,且首字母必須小寫。正例:如 DISP_BUF_SIZE、MIN_VALUE、MAX_VALUE 等等。說明:變量,尤其是局部變量,如果用單個字符表示,很容易出錯(如l誤寫成1),而編譯時又檢查不出,則有可能增加排錯時間。過長的變量名會增加工作量,會使程序的邏輯流程變得模糊,給修改帶來困難,所以應當選

23、擇精煉、意義明確的名字,才能簡化程序語句,改善對程序功能的理解。建議:變量活動范圍前綴規(guī)范如下: m : 類的成員變量(屬性所對應的變量),bean除外。 空 : 局部變量不加范圍前綴建議:控件對象命采用控件縮寫+屬性名字的形式展現(xiàn):例子:private TextView tvTitle;說明:各種前綴字符可能組合使用,在這種情況下,各前綴順序為:變量作用域前綴、變量類型前綴。正例:public class Hello private string mStrName;public string getName() return mStrName;說明:控件縮寫B(tài)uttonbtnImageBut

24、tonibtnImageViewivProgressBarpbarScrollViewsclvRelativeLayoutrlytTableLayouttlytFrameLayoutflytRadioButtonrbtnTextViewtvListViewlstvEditTextetCheckBoxcbxLinearLayoutllytAbsoluteLayoutalyt【規(guī)則7-11】控件命名應采用完整的英文描述符命名,名字的前綴是控件類型名縮寫。【規(guī)則7-12】方法名用大寫字母開頭的單詞組合而成,且應當使用“動詞”或者“動詞名詞”(動賓詞組)?!疽?guī)則7-13】類名采用大小寫結(jié)合的方法,構(gòu)成

25、類名的每個單詞的首字母的首字母也必須大寫。在構(gòu)成類名的單詞之間不用下劃線。【規(guī)則7-14】接口命名在名字前加上“I”前綴,其它和類命名規(guī)范相同。說明:方法名力求清晰、明了,通過方法名就能夠判斷方法的主要功能。方法名中不同意義字段之間不要用下劃線連接,而要把每個字段的首字母大寫以示區(qū)分。函數(shù)命名采用大小寫字母結(jié)合的形式,但專有名詞不受限制。說明:1    名字應該能夠標識事物的特性。2    名字盡量不使用縮寫,除非它是眾所周知的。3    名字可以有兩個或三個單詞組成,但通常不應多于三個。4 在名字中,所

26、有單詞第一個字母大寫。Android相關類的命名l 每個單詞首字母大寫,駝峰式命名。l 以類的類型為后綴。 類型后綴示例ActivityActivityMainActivity.javaServiceServiceAppUpgradeService.javaBroadCastReceiverReceiverCardScanReceiver布局資源文件命名規(guī)范l 具體類布局資源文件:類名_【*功能描述】。例如:dishact.xml、dishact_category.xml、dishact_category_listitem.xmll 公共布局資源文件:【+資源功能名稱】。例如:lstitem.

27、xml、lstitem_oneicon.xml、lstitem_twoicon.xml圖片命名規(guī)范l 具體類布局中的圖片:類名_【*控件名】_圖片描述。例如:mainact_bg.png、mainact_btnleft_category.pngl 公用圖片:【*控件名】_圖片描述。例如:btn_save.png組件id命名l 組件id的命名,類名_組件簡寫_功能描述。例如:主界面中用于顯示用戶名的標簽:mainact_tv_name資源文件中的字符串命名l 具體類的資源字符串:類名_功能描述。例如:<string name="loginact_username">

28、;賬號</string>l 公用資源字符串:直接用相應的英文命名就可以了。例如:<string name="ok">確定</string>。<string name=" welcome_to_use">歡迎使用</string>字符串節(jié)點按照具體類來分塊組織,每個類的字符串塊的第一行之前用 xml注釋。共用字符串塊放到xml文件最開頭。 <! 公共資源 -> <string name="app_ricpname">快樂·購物</stri

29、ng> <!- 主界面 -> <string name="mainact_coupon">優(yōu)惠券</string><string name="mainact_myorder">我的訂單</string> <!- 歡迎界面 -><string name="welcomeact_assit">助手</string>8. 聲明【規(guī)則8-1】一行只聲明一個變量。【規(guī)則8-2】一個變量有且只有一個功能,不能把一個變量用于多種用途。正例:int

30、level;int size;反例:int level, size;說明:一個變量只用來表示一個特定功能,不能把一個變量作多種用途,即同一變量取值不同時,其代表的意義也不同。9. 表達式與語句表達式是語句的一部分,它們是不可分割的。表達式和語句雖然看起來比較簡單,但使用時隱患比較多。本章歸納了正確使用表達式和if、for、while、switch等基本語句的一些規(guī)則與建議。【規(guī)則9-1】一條語句只完成一個功能。說明:復雜的語句閱讀起來,難于理解,并容易隱含錯誤。變量定義時,一行只定義一個變量。正例:int help; int base;int result;help = base;result

31、 = help + GetValue(base);反例:int base, result; / 一行定義多個變量 result = base + GetValue(base); / 一條語句實現(xiàn)多個功能,base有兩種用途?!疽?guī)則9-2】在表達式中使用括號,使表達式的運算順序更清晰。說明:由于將運算符的優(yōu)先級與結(jié)合律熟記是比較困難的,為了防止產(chǎn)生歧義并提高可讀性,即使不加括號時運算順序不會改變,也應當用括號確定表達式的操作順序。正例:if (iYear % 4 = 0) && (iYear % 100 != 0) | (iYear % 400 = 0)反例:if (iYear

32、% 4 = 0 && iYear % 100 != 0 | iYear % 400 = 0)【規(guī)則9-3】避免表達式中的附加功能,不要編寫太復雜的復合表達式。說明:帶附加功能的表達式難于閱讀和維護,它們常常導致錯誤。對于一個好的編譯器,下面兩種情況效果是一樣的。正例 :ariVar1 = ariVar2 + ariVar3;ariVar4+;iResult = ariVar1 + ariVar4;ariVar3+;反例: iResult = (ariVar1 = ariVar2 + ariVar3+) + +ariVar4 ;【規(guī)則9-4】不可將浮點變量用“=”或“!=”與任何

33、數(shù)字比較。說明:無論是float還是double類型的變量,都有精度限制。所以一定要避免將浮點變量用“=”或“!=”與數(shù)字比較,應該轉(zhuǎn)化成“>=”或“<=”形式。正例:if (fResult >= -EPSINON) && (fResult <= EPSINON)反例:if (fResult = 0.0) / 隱含錯誤的比較其中EPSINON是允許的誤差(即精度)?!疽?guī)則9-5】在switch語句中,每一個case分支必須使用break結(jié)尾,最后一個分支必須是default分支。說明:避免漏掉break語句造成程序錯誤。同時保持程序簡潔。對于多個分支相同

34、處理的情況可以共用一個break,但是要用注釋加以說明。正例: switch (message) case SPAN_ON: 處理語句 break; case SPAN_OFF: 處理語句 break; default: 處理語句 break; 【規(guī)則9-6】不可在for 循環(huán)體內(nèi)修改循環(huán)變量,防止for 循環(huán)失去控制?!疽?guī)則9-7】如果循環(huán)體內(nèi)存在邏輯判斷,并且循環(huán)次數(shù)很大,宜將邏輯判斷移到循環(huán)體的外面。說明:下面兩個示例中,反例比正例多執(zhí)行了NUM -1次邏輯判斷。并且由于前者總要進行邏輯判斷,使得編譯器不能對循環(huán)進行優(yōu)化處理,降低了效率。如果NUM非常大,最好采用正例的寫法,可以提高效率。const int NUM = 100000;正例:if (bCondition) for (i = 0; i < NUM; i+) DoSomething(); else for (i = 0; i < NUM; i+)DoOtherthing();反例: for (i = 0; i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論