已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Android開發(fā)編碼規(guī)范目 錄1 概述42 命名方法42.1 標(biāo)識(shí)符命名法42.2 命名原則42.3 英文縮寫原則42.4 單詞縮寫原則53 命名規(guī)范53.1 包(packages)53.2 類(classes)63.3 接口(interface)63.4 方法(methods)63.5 變量(variables)73.6 常量(Constants)83.7 資源文件(圖片drawable文件夾下)83.8 資源布局文件(XML文件(layout布局文件)93.9 動(dòng)畫文件(anim文件夾下)93.10 資源ID(resourcesid)93.11 layout中的id命名103.12 activity中的view變量命名124 注釋124.1 文件注釋124.2 類注釋124.3 方法注釋124.4 類成員變量和常量注釋134.5 其他注釋134.6 XML注釋135 代碼風(fēng)格135.1 縮進(jìn)135.2 空行135.3 行寬146 規(guī)約146.1 方法146.2 參數(shù)和返回值146.3 神秘的數(shù)146.4 控制語句146.5 異常的捕捉處理156.6 訪問控制157 約定俗成157.1 變量賦值157.2 圓括號(hào)167.3 返回值167.4 條件運(yùn)算符?前的表達(dá)式168 21種代碼的壞味道178.1 Duplicated Code178.2 Long method178.3 Large Class178.4 Divergent Change178.5 Shotgun Surgery178.6 Feature Envy178.7 Data Clumps178.8 Primitive Obsession178.9 Switch Statement178.10 Parallel Inheritance Hierarchies178.11 Lazy Class188.12 Speculative Generality188.13 Temporary Field188.14 Message Chain188.15 Middle Man188.16 Inappropriate Intimacy188.17 Alternative Classes with Different Interfaces188.18 Incomplete Library Class188.19 Data Class188.20 Refused Bequest188.21 Comments199 ANDROID編碼規(guī)范建議191 概述為了提高代碼的可讀性以及更好的團(tuán)隊(duì)分工合作,便于在日后的代碼審查和修改過程中減少浪費(fèi)時(shí)間,因此制定本編碼規(guī)范,統(tǒng)一編碼風(fēng)格。2 命名方法2.1 標(biāo)識(shí)符命名法標(biāo)識(shí)符命名法最要有四種:v 駝峰(Camel)命名法:又稱小駝峰命名法,除首單詞外,其余所有單詞的第一個(gè)字母大寫。v 帕斯卡(pascal)命名法:又稱大駝峰命名法,所有單詞的第一個(gè)字母大寫v 下劃線命名法:單詞與單詞間用下劃線做間隔。v 匈牙利命名法:廣泛應(yīng)用于微軟編程環(huán)境中,在以Pascal命名法的變量前附加小寫序列說明該變量的類型。 量的取名方式為: + + 范圍前綴,類型前綴,限定詞。2.2 命名原則盡可能的用最少的字符而又能完整的表達(dá)標(biāo)識(shí)符的含義,便于自己或者團(tuán)隊(duì)容易記、理解、使用。2.3 英文縮寫原則v 較短的單詞可通過去掉“元音”形成縮寫v 較長的單詞可取單詞的頭幾個(gè)字母形成縮寫v 此外還有一些約定成俗的英文單詞縮寫。下面為常見的英文單詞縮寫:名稱縮寫icon ic(主要用在app的圖標(biāo))color cl(主要用于顏色值)dividerdi(主要用于分隔線,不僅包括Listview中的divider,還包括普通布局中的線)selectorsl(主要用于某一view多種狀態(tài),不僅包括Listview中的selector,還包括按鈕的selector)averageavgbackgroundBg(主要用于布局和子布局的背景)bufferbufcontrolctrldeletedeldocumentdocerrorerrescapeescincrementincinfomationinfoinitialinitimageimgInternationalizationI18Nlengthlenlibrarylibmessagemsgpassword-pwdpositionposserversrvstringstrtemptmpwindowwnd(win)2.4 單詞縮寫原則不要用縮寫,除非該縮寫是約定俗成的。3 命名規(guī)范3.1 包(packages)采用反域名命名規(guī)則,全部使用小寫字母。一級(jí)包名為com,二級(jí)包名為xx(采用公司頂級(jí)域名),三級(jí)包名根據(jù)應(yīng)用進(jìn)行命名,四級(jí)包名為模塊名或?qū)蛹?jí)名。包名此包中包含com.xx.應(yīng)用名稱縮寫.activities頁面用到的Activity類(activities層級(jí)名用戶界面層)com.xx.應(yīng)用名稱縮寫.base頁面中每個(gè)Activity類共享的可以寫成一個(gè)BaseActivity類(基礎(chǔ)共享的類)com.xx.應(yīng)用名稱縮寫.adapter 頁面用到的Adapter類(適配器的類)com.xx.應(yīng)用名稱縮寫.tools此包中包含:公共工具方法類(tools模塊名)com.xx.應(yīng)用名稱縮寫.bean(或則com.xx.應(yīng)用名稱縮寫.unity)此包中包含:元素類com.xx.應(yīng)用名稱縮寫.db數(shù)據(jù)庫操作類com.xx.應(yīng)用名稱縮寫.view(或則com.xx.應(yīng)用名稱縮寫.ui)自定義的View類等com.xx.應(yīng)用名稱縮寫.service Service服務(wù)com.xx.應(yīng)用名稱縮寫.broadcast Broadcast服務(wù)3.2 類(classes)類名是個(gè)一名詞,必須使用駝峰規(guī)則,即首字母必須大寫,如果為詞組,則每個(gè)單詞的首字母也必須要大寫,類名必須使用名詞,或名詞詞組。要求類名簡單,不允許出現(xiàn)無意義的單詞(如 class XXXActivity)。盡量使你的類名簡潔而富于描述。使用完整單詞,盡量避免縮寫,除非該縮寫詞被更廣泛使用,像 URL,HTML,如果類名稱中包含單詞縮寫,則單詞縮寫的每個(gè)字母均應(yīng)大寫。類描述例如activity類Aty或者Activity為后綴標(biāo)識(shí)歡迎頁面類WelcomeAty.或者WelcomeActivityAdapter類Adp或者Adapte為后綴標(biāo)識(shí)新聞詳情適配器NewtDetailAdp或則直接 NewDetailAdapter解析類Hlr為后綴標(biāo)識(shí)首頁解析類HomePosterHlr公共方法類Tools或Manager為后綴標(biāo)識(shí)線程池管理類:ThreadPoolManager日志工具類:LogTools數(shù)據(jù)庫類以DBHelper后綴標(biāo)識(shí)新聞數(shù)據(jù)庫:NewDBHelperService類以Service為后綴標(biāo)識(shí)時(shí)間服務(wù)TimeServiceBroadcastReceive類以Broadcast為后綴標(biāo)識(shí)時(shí)間通知TimeBroadcastContentProvider以Provider為后綴標(biāo)識(shí)直接寫的共享基礎(chǔ)類以Base開頭BaseActivity,BaseFragment3.3 接口(interface)命名規(guī)則與類一樣采用大駝峰命名法,一般要使用able、ible、er 等后綴,如interface Runna ble ;interface Accessible 。3.4 方法(methods)方法名是一個(gè)動(dòng)詞,采用小駝峰命名法,即大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。例如: public void run(); public String getBookName();類中常用方法的命名:1. 類的獲取方法(一般具有返回值)一般要求在被訪問的字段名前加上get,如getFirstName(),getLastName()。一般來說,get前綴方法返回的是單個(gè)值,find前綴的方法返回的是列表值。2. 類的設(shè)置方法(一般返回類型為void):被訪問字段名的前面加上前綴 set,如setFirstName(),setLastName().3. 類的布爾型的判斷方法一般要求方法名使用單詞 is或has 做前綴,如isPersistent(),isString()?;蛘呤褂镁哂羞壿嬕饬x的單詞,例如equal 或equals。4. 類的普通方法一般采用完整的英文描述說明成員方法功能,第一個(gè)單詞盡可能采用動(dòng)詞,首字母小寫,如openFile(),addCount()。5. 構(gòu)造方法應(yīng)該用遞增的方式寫。(參數(shù)多的寫在后面)。6. toString()方法:一般情況下,每個(gè)類都應(yīng)該定義toString()。方法說明initXX()初始化相關(guān)方法,使用init為前綴標(biāo)識(shí),如初始化布局initView()isXX()checkXX()方法返回值為boolean型的請使用is或check為前綴標(biāo)識(shí)getXX()返回某個(gè)值的方法,使用get為前綴標(biāo)識(shí)setXX()設(shè)置某個(gè)值的方法,使用set為前綴標(biāo)識(shí)processXX()對數(shù)據(jù)進(jìn)行處理的方法,盡量使用process為前綴標(biāo)識(shí)displayXX()彈出提示框和提示信息,使用display為前綴標(biāo)識(shí)saveXX()與保存數(shù)據(jù)相關(guān)的,使用save為前綴標(biāo)識(shí)resetXX()對數(shù)據(jù)重組的,使用reset前綴標(biāo)識(shí)clearXX()清除數(shù)據(jù)相關(guān)的removeXXX()清除數(shù)據(jù)相關(guān)的drawXXX()繪制數(shù)據(jù)或效果相關(guān)的,使用draw前綴標(biāo)識(shí)3.5 變量(variables)采用小駝峰命名法,即大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。變量名盡可能的使用名詞或名詞詞組,要求簡單易懂,應(yīng)簡短且富于描述,不允許出現(xiàn)無意義的單詞(變量名不應(yīng)以下劃線或美元符號(hào)開頭,盡管這在語法上是允許的)。變量名的選用應(yīng)該易于記憶,即,能夠指出其用途。盡量避免單個(gè)字符的變量名,除非是一次性的臨時(shí)變量。臨時(shí)變量通常被取名為 i,j,k,m 和 n,它們一般用于整型;c,d,e,它們一般用于字符型。如:String bookName; 正確如:String bookNameString; 錯(cuò)誤!用統(tǒng)一的量詞通過在結(jié)尾處放置一個(gè)量詞,就可創(chuàng)建更加統(tǒng)一的變量,它們更容易理解,也更容易搜索。例如,請使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。量詞列表:量詞后綴說明First 一組變量中的第一個(gè)Last 一組變量中的最后一個(gè)Next 一組變量中的下一個(gè)變量Prev 一組變量中的上一個(gè)Cur 一組變量中的當(dāng)前變量3.6 常量(Constants)命名規(guī)則:全部大寫,采用下劃線命名法,單詞間用下劃線隔開。例如:static final int MIN_WIDTH = 4; 例如:static final int MAX_WIDTH = 999; 例如:static final int GET_THE_CPU = 1;3.7 資源文件(圖片drawable文件夾下)全部小寫,采用下劃線命名法,單詞間以下劃線分割,并且盡可能的使用名詞或名詞組,加前綴區(qū)分。命名模式:activity名稱_邏輯名稱/common_邏輯名稱如果為公共資源,如分割線等,則直接用用途來命名如:menu_icon_navigate.png 如:某分割線:line.png 或 separator.png如果有多種形態(tài)如按鈕等除外如btn_xx.xml(selector)名稱功能btn_xx按鈕圖片使用btn_整體效果(selector)btn_xx_normal按鈕圖片使用btn_正常情況效果btn_xx_press按鈕圖片使用btn_點(diǎn)擊時(shí)候效果bg_head背景圖片使用bg_功能_說明def_search_cell默認(rèn)圖片使用def_功能_說明icon_more_help圖標(biāo)圖片使用icon_功能_說明seg_list_line具有分隔特征的圖片使用seg_功能_說明sel_ok選擇圖標(biāo)使用sel_功能_說明命名后綴:后綴說明unit在使用xml的tilemode來配圖片時(shí),element圖片使用此后綴nor圖片的狀態(tài),代表普通狀態(tài)hl圖片的狀態(tài),代表高亮狀態(tài)press圖片的狀態(tài),代表按下狀態(tài)select圖片的狀態(tài),代表其所占的view被選中unselect圖片的狀態(tài),代表其所占的view沒有被選中 3.8 資源布局文件(XML文件(layout布局文件)全部小寫,采用下劃線命名法。并且使用名詞或名詞詞組,即使用 模塊名_功能名稱 來命名。1) contentview命名, Activity默認(rèn)布局,以去掉后綴的Activity類進(jìn)行命名。不加后綴:功能模塊.xm例如:main.xml、more.xml、settings.xml或則:activity_功能模塊.xml 例如:activity_main.xml、activity_more.xml、fragment_more.xml2) Dialog命名:dialog_描述.xml例如:dlg_hint.xml3) PopupWindow命名:ppw_描述.xml例如:ppw _info.xml4) 列表項(xiàng)命名listitem_描述.xml例如:listitem_city.xml5) 包含項(xiàng):include_模塊.xml例如:include_head.xml、include_bottom.xml6) adapter的子布局:功能模塊_item.xml例如:main_item.xml;3.9 動(dòng)畫文件(anim文件夾下)全部小寫,采用下劃線命名法,加前綴區(qū)分。/前面為動(dòng)畫的類型,后面為方向動(dòng)畫命名例子規(guī)范寫法備注fade_in淡入fade_out淡出push_down_in從下方推入push_down_out從下方推出push_left推像左方slide_in_from_top從頭部滑動(dòng)進(jìn)入zoom_enter變形進(jìn)入slide_in滑動(dòng)進(jìn)入shrink_to_middle中間縮小3.10 資源ID(resourcesid)大小寫規(guī)范與方法名一致,采用小駝峰命名法。命名規(guī)范為“資源控件的縮寫名”+“變量名”。注意:頁面控件名稱應(yīng)該和控件id名保持一致strings.xml等中的id命名:命名模式:activity名稱_功能模塊名稱_邏輯名稱/activity名稱_邏輯名稱/common_邏輯名稱strings.xml中,使用activity名稱注釋,將文件內(nèi)容區(qū)分開來。3.11 layout中的id命名layout 中所使用的id必須以全部單詞小寫,單詞間以下劃線分割,并且使用名詞或名詞詞組,并且要求能夠通過id直接理解當(dāng)前組件要實(shí)現(xiàn)的功能。命名模式為:view縮寫_模塊名稱_view的邏輯名稱。如:某TextView +id/textbookname 錯(cuò)誤 應(yīng)為 +id/tv_book_name如:某EditText +id/textbookname 錯(cuò)誤 應(yīng)為 +id/edtTxt_book_nameview的縮寫詳情如下:控件縮寫LinearLayoutllRelativeLayoutrlTableLayouttlFrameLayoutflAbsoluteLayoualLayoutViewlvRelativeViewrvTextViewtvButtonbtnImageButtonimgBtnImageViewimgVi 或則 ivCheckBoxchkRadioButtonrdoBtnanalogClockanaClkDigtalClock dgtClkDatePicker dtPkEditTextedtTxtTimePickertmPktoggleButton tglBtnProgressBarproBarSeekBarskBarAutoCompleteTextViewautoTxtZoomControls zmCtlVideoViewvdoViWdbViewwebViRantingBarratBarTab tabSpinnerspnChronometercmtScollViewsclViTextSwitchtxtSwtImageSwitchimgSwtlistViewlVi 或則lvExpandableListepdLtMapViewmapVi3.12 activity中的view變量命名類中控件名稱必須與xml布局id保持一致。建議局部變量命名、靜態(tài)成員變量命名只包含字母。建議:如果layout文件很復(fù)雜,建議將layout分成多個(gè)模塊,每個(gè)模塊定義一個(gè)moduleViewHolder,其成員變量包含所屬viewStyles.xml將layout中不斷重現(xiàn)的style提煉出通用的style通用組件,放到styles.xml中;使用layer-list和selector4 注釋Java 程序有兩類注釋:實(shí)現(xiàn)注釋(implementation comments)和文檔注釋(document comments)。實(shí)現(xiàn)注釋是使用/*.*/和/界定的注釋。文檔注釋(被稱為doc comments)由/*.*/界定。文檔注釋可以通過javadoc 工具轉(zhuǎn)換成HTML 文件。4.1 文件注釋所有的源文件都應(yīng)該在開頭有一個(gè)注釋,其中列出類名、版本信息、日期和版權(quán)聲明。如下: /* * 文件名 * 包含類名列表 * 版本信息,版本號(hào) * 創(chuàng)建日期 * 版權(quán)聲明 */4.2 類注釋每一個(gè)類都要包含如下格式的注釋,以說明當(dāng)前類的功能等。/* * 類名 * author 作者 *實(shí)現(xiàn)的主要功能。 *創(chuàng)建日期 */4.3 方法注釋每一個(gè)方法都要包含 如下格式的注釋 包括當(dāng)前方法的用途,當(dāng)前方法參數(shù)的含義,當(dāng)前方法返回值的內(nèi)容和拋出異常的列表。/* * 方法的一句話概述* 方法詳述(簡單方法可不必詳述)* param s 說明參數(shù)含義* return 說明返回值含義* throws IOException 說明發(fā)生此異常的條件* throws NullPointerException 說明發(fā)生此異常的條件*/4.4 類成員變量和常量注釋成員變量和常量需要使用java doc形式的注釋,以說明當(dāng)前變量或常量的含義/* * XXXX含義 */4.5 其他注釋方法內(nèi)部的注釋 如果需要多行 使用/* */形式,如果為單行是用/形式的注釋。不要再方法內(nèi)部使用 java doc 形式的注釋“/*/”,簡單的區(qū)分方法是,java doc形式的注釋在 eclipse中為藍(lán)色,普通注釋為綠色。4.6 XML注釋規(guī)約:如果當(dāng)前l(fā)ayout 或資源需要被多處調(diào)用,或?yàn)楣彩褂玫膌ayout(若list_item),則需要在xml寫明注釋。要求注釋清晰易懂。5 代碼風(fēng)格5.1 縮進(jìn)規(guī)約:不允許使用Tab進(jìn)行縮進(jìn),使用空格進(jìn)行縮進(jìn),推薦縮進(jìn)為2空格。5.2 空行空行將邏輯相關(guān)的代碼段分隔開,以提高可讀性。 下列情況應(yīng)該總是使用空行: v 一個(gè)源文件的兩個(gè)片段(section)之間v 類聲明和接口聲明之間v 兩個(gè)方法之間v 方法內(nèi)的局部變量和方法的第一條語句之間v 一個(gè)方法內(nèi)的兩個(gè)邏輯段之間,用以提高可讀性 規(guī)約:通常在 變量聲明區(qū)域之后要用空行分隔,常量聲明區(qū)域之后要有空行 分隔,方法聲明之前要有空行分隔。5.3 行寬無特別規(guī)定。6 規(guī)約6.1 方法v 一個(gè)方法盡量不要超過30行,如果方法太長,說明當(dāng)前方法業(yè)務(wù)邏輯已經(jīng)非常復(fù)雜,那么就需要進(jìn)行方法拆分,保證每個(gè)方法只作一件事。v 不要使用 try catch 處理業(yè)務(wù)邏輯!6.2 參數(shù)和返回值v 一個(gè)方法的參數(shù)盡可能的不要超過4個(gè)!v 如果一個(gè)方法返回的是一個(gè)錯(cuò)誤碼,請使用異常!v 盡可能不要使用null, 替代為異常 或者使用空變量 如返回 List 則可以使用Collections.emptyList()6.3 神秘的數(shù)代碼中不允許出現(xiàn)單獨(dú)的數(shù)字,字符!如果需要使用數(shù)字或字符,則將它們按照含義封裝為靜態(tài)常量?。╢or語句中除外)6.4 控制語句判斷中如有常量,則應(yīng)將常量置于判斷式的右側(cè)。如:if ( true = isAdmin().盡量不使用三目條件的嵌套。所有if 語句必須用包括起來,即便是只有一句:if (true)/do something.if (true)i = 0; /不要使用這種對于循環(huán):/不推薦方式_while(index products.getCount()/每此都會(huì)執(zhí)行一次getCount()方法,/若此方法耗時(shí)則會(huì)影響執(zhí)行效率/而且可能帶來同步問題,若有同步需求,請使用同步塊或同步方法/推薦方式_/將操作結(jié)構(gòu)保存在臨時(shí)變量里,減少方法調(diào)用次數(shù)final int count = products.getCount();while(index = 0) ? x : -x8 21種代碼的壞味道應(yīng)該在編程中盡量避免這21種“壞味道”。8.1 Duplicated Code代碼重復(fù)幾乎是最常見的異味了。他也是Refactoring 的主要目標(biāo)之一。代碼重復(fù)往往來自于copy-and-paste 的編程風(fēng)格。8.2 Long method它是傳統(tǒng)結(jié)構(gòu)化的“遺毒“。一個(gè)方法應(yīng)當(dāng)具有自我獨(dú)立的意圖,不要把幾個(gè)意圖放在一起。8.3 Large Class大類就是你把太多的責(zé)任交給了一個(gè)類。這里的規(guī)則是One Class One Responsibility。8.4 Divergent Change一個(gè)類里面的內(nèi)容變化率不同。某些狀態(tài)一個(gè)小時(shí)變一次,某些則幾個(gè)月一年才變一次;某些狀態(tài)因?yàn)檫@方面的原因發(fā)生變化,而另一些則因?yàn)槠渌矫娴脑蜃円淮?。面向?qū)ο蟮某橄缶褪前严鄬Σ蛔兊暮拖鄬ψ兓喔綦x。把問題變化的一方面和另一方面相隔離。這使得這些相對不變的可以重用。問題變化的每個(gè)方面都可以單獨(dú)重用。這種相異變化的共存使得重用非常困難。8.5 Shotgun Surgery這正好和上面相反。對系統(tǒng)一個(gè)地方的改變涉及到其他許多地方的相關(guān)改變。這些變化率和變化內(nèi)容相似的狀態(tài)和行為通常應(yīng)當(dāng)放在同一個(gè)類中。8.6 Feature Envy對象的目的就是封裝狀態(tài)以及與這些狀態(tài)緊密相關(guān)的行為。如果一個(gè)類的方法頻繁用get 方法存取其他類的狀態(tài)進(jìn)行計(jì)算,那么你要考慮把行為移到涉及狀態(tài)數(shù)目最多的那個(gè)類。8.7 Data Clumps某些數(shù)據(jù)通常像孩子一樣成群玩耍:一起出現(xiàn)在很多類的成員變量中,一起出現(xiàn)在許多方法的參數(shù)中.,這些數(shù)據(jù)或許應(yīng)該自己獨(dú)立形成對象。8.8 Primitive Obsession面向?qū)ο蟮男率滞ǔA?xí)慣使用幾個(gè)原始類型的數(shù)據(jù)來表示一個(gè)概念。譬如對于范圍,他們會(huì)使用兩個(gè)數(shù)字。對于Money,他們會(huì)用一個(gè)浮點(diǎn)數(shù)來表示。因?yàn)槟銢]有使用對象來表達(dá)問題中存在的概念,這使得代碼變的難以理解,解決問題的難度大大增加。好的習(xí)慣是擴(kuò)充語言所能提供原始類型,用小對象來表示范圍、金額、轉(zhuǎn)化率、郵政編碼等等。8.9 Switch Statement基于常量的開關(guān)語句是OO 的大敵,你應(yīng)當(dāng)把他變?yōu)樽宇?、state 或strategy。8.10 Parallel Inheritance Hierarchies并行的繼承層次是shotgun surgery 的特殊情況。因?yàn)楫?dāng)你改變一個(gè)層次中的某一個(gè)類時(shí),你必須同時(shí)改變另外一個(gè)層次的并行子類。8.11 Lazy Class一個(gè)干活不多的類。類的維護(hù)需要額外的開銷,如果一個(gè)類承擔(dān)了太少的責(zé)任,應(yīng)當(dāng)消除它。8.12 Speculative Generality一個(gè)類實(shí)現(xiàn)了從未用到的功能和通用性。通常這樣的類或方法唯一的用戶是testcase。不要猶豫,刪除它。8.13 Temporary Field一個(gè)對象的屬性可能只在某些情況下才有意義。這樣的代碼將難以理解。專門建立一個(gè)對象來持有這樣的孤兒屬性,把只和他相關(guān)的行為移到該類。最常見的是一個(gè)特定的算法需要某些只有該算法才有用的變量。8.14 Message Chain消息鏈發(fā)生于當(dāng)一個(gè)客戶向一個(gè)對象要求另一個(gè)對象,然后客戶又向這另一對象要求另一個(gè)對象,再向這另一個(gè)對象要求另一個(gè)對象,如此如此。這時(shí),你需要隱藏分派。8.15 Middle Man對象的基本特性之一就是封裝,而你經(jīng)常會(huì)通過分派去實(shí)現(xiàn)封裝。但是這一步不能走得太遠(yuǎn),如果你發(fā)現(xiàn)一個(gè)類接口的一大半方法都在做分派,你可能需要移去這個(gè)中間人。8.16 Inappropriate Intimacy某些類相互之間太親密,它們花費(fèi)了太多的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度河北省養(yǎng)老院租賃合同及康復(fù)護(hù)理服務(wù)協(xié)議
- 二零二五年度員工績效達(dá)成與老板對賭合同
- 二零二五年度瓷磚美縫施工安全教育培訓(xùn)合同4篇
- 2025年度測繪項(xiàng)目保密協(xié)議及成果歸屬合同
- 2025年度打架賠償理賠服務(wù)質(zhì)量保證合同3篇
- 二零二五年度辦公室裝修合同模板4篇
- 2025年度個(gè)人門面出租與經(jīng)營許可合同4篇
- 二零二五年度棉紗行業(yè)綠色生產(chǎn)技術(shù)引進(jìn)合同范本4篇
- 2025年城市公交車輛采購與運(yùn)營管理合同4篇
- 2025年度廚具企業(yè)信息化建設(shè)合同范本4篇
- MT/T 199-1996煤礦用液壓鉆車通用技術(shù)條件
- GB/T 6144-1985合成切削液
- GB/T 10357.1-2013家具力學(xué)性能試驗(yàn)第1部分:桌類強(qiáng)度和耐久性
- 第三方在線糾紛解決機(jī)制(ODR)述評(píng),國際商法論文
- 第5章-群體-團(tuán)隊(duì)溝通-管理溝通
- 腎臟病飲食依從行為量表(RABQ)附有答案
- 深基坑-安全教育課件
- 園林施工管理大型園林集團(tuán)南部區(qū)域養(yǎng)護(hù)標(biāo)準(zhǔn)圖例
- 排水許可申請表
- 低血糖的觀察和護(hù)理課件
- 計(jì)量檢定校準(zhǔn)技術(shù)服務(wù)合同協(xié)議書
評(píng)論
0/150
提交評(píng)論