freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

guidancejava編程指南-經(jīng)營(yíng)管理-閱讀頁

2024-09-05 15:25本頁面
  

【正文】 ring aName) setAccountNumber(int anAccountNumber) setReasonableGoals(Vector newGoals) setPersistent(boolean isPersistent) setAtEnd(boolean isAtEnd) 按照這種命名約定,顯然是一個(gè)成員函數(shù)設(shè)定一個(gè)對(duì)象的字段值。它的一個(gè)主要的缺點(diǎn)是 set 是多余的,需要額外的錄入。構(gòu)造函數(shù)與它所屬類的名字總是相同的。注意大小寫一致。 . 成員函數(shù)的可見性 良好的程序設(shè)計(jì)應(yīng)該盡可能減小類與類之間耦合,所遵循的經(jīng)驗(yàn)法則是:盡量限制成員函數(shù)的可見性。 可見性 說明 正確用法 public 公有成 員函數(shù)可被任何其它對(duì)象和類的成員函數(shù)調(diào)用。 protected 被保護(hù)的成員函數(shù)可被它所在的類或該類的子類的任何成員函數(shù)調(diào)用。 private 私有成員函數(shù)只可以被該類所在的其它成員函數(shù)調(diào)用,該類的子類不可以調(diào)用。私有成員函數(shù)常常是重新分配要素的結(jié)果。 . 注 釋成員函數(shù) 如何注釋一個(gè)成員函數(shù)常常成為判斷函數(shù)是否可被理解,進(jìn)而可維護(hù)和可擴(kuò)展的決定性因素。這些函數(shù)頭在源代碼的前面,用來記錄所有重要的有助于理解函數(shù)的信息。通過給一個(gè)成員函數(shù)加注釋,讓別人更加容易判斷他們是否可以復(fù)用代碼。也使其他人更容易判斷是否應(yīng)該對(duì)你的某一段代碼加以修改 (有可能他要做的修改與你最初為什么要寫這一段代碼是相互沖突的)。還必須說明,如果帶參數(shù),那么什么樣的參數(shù)必須傳給成員函數(shù),以及成員函數(shù)將怎樣使用它們。在 (第 節(jié) “快速瀏覽 javadoc”) 中討論的 javadoc param 標(biāo)識(shí)便用于該目的。如果成員函數(shù)有返回值,則應(yīng)注釋出來,這樣可以使其他程序員正確地使用返回值 /對(duì)象。 4. 已知的問題。如果在一個(gè)類的多個(gè)成員函數(shù)中都存在著同樣的問題,那么這個(gè)問題應(yīng)該寫在類的說明里。 應(yīng)說明成員函數(shù)拋出的所有異常,以便使其他程序員明白他們的代碼應(yīng)該捕獲些什么。 6. 可見性決策。這將幫助其他開發(fā)者了解你的想法,使他們不必浪費(fèi)時(shí)間操心考慮你為什么要選擇一種有疑問的東西。若一個(gè)成員函數(shù)修改了一個(gè)對(duì)象,例如一個(gè)銀行帳戶的成員函數(shù) withdraw() 修改了帳戶余額,那么就需要說明。 10 8. 避免使用含有信息的函數(shù)頭 。將版權(quán)所有者信息放到單元的最后。避免使用垂直滾動(dòng)條或者關(guān)閉的文本框或?qū)υ捒?,這些東西只會(huì)增加視覺干擾,而且較難保持一致。 9. 如何在適當(dāng)情況下調(diào)用成員函數(shù)的例子??紤]包含一到兩個(gè)如何調(diào)用成員函數(shù)的例子。前提條件是指一個(gè)成員函數(shù)可正確運(yùn)行的限制條件;后置 條件是指一個(gè)成員函數(shù)執(zhí)行完以后的屬性或聲明 [MEY88]。 11. 所有并行事件。最終結(jié)果是,如果應(yīng)用了 Java 的并行編程特性,那么應(yīng)在程序中詳細(xì)地將其注釋出來。這樣可以讓其他開發(fā)者安全地使用你的成員函數(shù)。最后,如果覆蓋或重載一個(gè)成員函數(shù),并且修改了它的同步性時(shí),也應(yīng)說明理由。對(duì)于每個(gè)成員函數(shù),并非要說明以上所有部分,因?yàn)閷?duì)于每一個(gè)成員函數(shù)來說,并不是以上所有的部分都適用。 . 內(nèi) 部注釋 除成員函數(shù)注釋以外,在成員函數(shù)內(nèi)部還需加上注釋語句來說明你的工作。 11 內(nèi)部注釋應(yīng)采用兩種方式: C 語言風(fēng)格的注釋 (/* 和 */) 和單行注釋 (//)。建議對(duì)業(yè)務(wù)邏輯采用單行注釋,因?yàn)樗捎糜谡凶⑨尯托心┳⑨尅4送?,因?yàn)? C 語言風(fēng)格的注釋語句很象文檔注釋符。所以,應(yīng)盡量減少使用它們。 說明每個(gè)控制結(jié)構(gòu),例如比較語句和循環(huán)。 2. 代碼做了些什么以及為什么這樣做。例如,看完一行代碼,你很容易地就可以斷定它是在定單總額上打了 5% 的折扣。不容易的是為什么要打這個(gè)折扣。 3. 局部變量。 4. 難或復(fù)雜的代碼。一般性的經(jīng)驗(yàn)法則是,如果代碼并非顯而易見的,則應(yīng)說明。 如果代碼中有的語句必須在一個(gè)特定的順序下執(zhí)行,則應(yīng)保證將這一點(diǎn)注釋出來 [AMB98]。 12 在閉括號(hào)后加上注釋。雖然應(yīng)該盡量避免寫出這樣的代碼,但有時(shí)你發(fā)現(xiàn)最好還是要這樣寫。一個(gè)好消息是,有一些編輯器支持一種特性:當(dāng)選用了一個(gè)開括號(hào)后,它會(huì)自動(dòng)地使相應(yīng)得閉括號(hào)高亮顯示;一個(gè)壞消息是,并非所有的編輯器都支持這種屬性。 這樣的注釋加在閉括號(hào)所在行的行后,可以使代碼更易理解。這些技巧是: ? 給代碼加上注釋 ? 給代碼分段 ? 使用空白 ? 遵循 30 秒條規(guī)則 ? 說明消息發(fā)送的順序 ? 寫短小單獨(dú) 的命令行 . 給代碼加上注釋 記?。喝绻愕拇a不值得注釋,那么它就不值得保留 [NAG95]。 . 讓代碼分段 /縮進(jìn) 一種提高代碼可讀性的方法是給代碼分段,換句話說,就是在代碼塊內(nèi)讓代碼縮進(jìn)?;舅枷胧牵瑝K 內(nèi)的代碼都應(yīng)統(tǒng)一地縮進(jìn)去一個(gè)單位。在 [LAF97] 指出的很重要的一點(diǎn)是,你所在的機(jī)構(gòu)應(yīng)選取一個(gè)縮進(jìn)風(fēng)格并 始終使用這種風(fēng)格。 13 在代碼中使用空白。 [VIS96] 建議采用一個(gè)空行來分隔代碼的邏輯組,例如控制結(jié)構(gòu),采用兩個(gè)空行來分隔成員函數(shù)定義。 . 遵循 30 秒條法則 其他的程序員應(yīng)能在少于 30 秒鐘的時(shí)間內(nèi)完全理解你的成員函數(shù),理解它做什么,為什么這樣做,它是怎樣做的 。 30 秒鐘,明明白白。 . 寫短小單獨(dú)的命令行 每一行代碼只做一件事情。若想在一行里做多件事情,就會(huì)使代碼難于理解。正如同一個(gè)成員函數(shù)應(yīng)該并且只能做一件事一樣,一行代碼也只應(yīng)做一件事情。也不應(yīng)向右滾動(dòng)編輯窗口來讀取一整行代碼,包括含有行內(nèi)注釋語句的代碼。如果為了理解你的源碼而必須了解編程語言的操作順序,那么這說明源碼中一定有什么重要的東西做的不對(duì)。注意:如果 你象前文所建議的那樣,采用短小單獨(dú)的命令行,那么就不會(huì)產(chǎn)生這個(gè)問題。字段是說明一個(gè)對(duì)象或者一個(gè)類的一段數(shù)據(jù)。 14 命名字段 應(yīng)采用完整的英文描述符來命名字段 [GOS96], [AMB98],以便使字段 所表達(dá)的意思一目了然。 示例: firstName zipCode unitPrice discountRate orderItems . 命名組件(部件) 應(yīng)采用完整的英文描述符命名組件(接口部件),名字的后綴是組件類型名。如果所有名字都是類似于 button1, button2, amp。 示例: okButton customerList fileMenu newFileMenuItem . 命名組件的另一種方法。 示例: pbOk 15 lbCustomer mFile miNewFile 這個(gè)方法的主要優(yōu)點(diǎn)是,這是一個(gè)通用于 C++ 代碼中的工業(yè)標(biāo)準(zhǔn),已經(jīng)有許多人在遵守它。主要的缺點(diǎn)是,當(dāng)有許多同一類型的部件時(shí),前綴符號(hào)變得很笨重;而且,違背了采用完整的英文描述符的命名約定。匈牙利符號(hào)后綴 這基本上是其他兩種方式的組合,生成的名字如 okPb, customerLb, fileM 和 newFileMi。主要的缺點(diǎn)仍是未采用完整的英文描述符,它偏離了規(guī)范,使標(biāo)準(zhǔn)難以被記住。 無論使用哪種約定,都要生成一個(gè) “ 正式 ” 部件名列表。 . 命名常量 Java 中,常量,即不變的值,一般用類的 靜態(tài)常量 字段來實(shí)現(xiàn)。 示例: MINIMUM_BALANCE MAX_VALUE DEFAULT_START_DATE 這個(gè)約定的主要優(yōu)點(diǎn)是,它有助于區(qū)分常量和變量。 . 命名集合 16 一個(gè)集合,例如數(shù)組和矢量,應(yīng)采用復(fù)數(shù)命名來表示隊(duì)列中存放的對(duì)象類型。 示例: customers orderItems aliases 這種約定的主要優(yōu)點(diǎn)是有助于區(qū)分表示復(fù)數(shù)值(集合)和單值(非集合)的字段。這使類更難維護(hù)和加強(qiáng),所以應(yīng)該盡量避免。 可見性 說明 正確用法 public 一個(gè)公共字段可被任何其他對(duì)象或者類中的成員函 數(shù)訪問。 protected 被保護(hù)的字段可被它聲明時(shí)所在的類及該類的子類的所有成員函數(shù)訪問。 private 私有字段只可以被它聲明時(shí)所在的類的其它成員函數(shù)調(diào)用,該類子類中的函數(shù)不可以調(diào)用。 對(duì)于那些非長(zhǎng)期性的字段(它們不被永久保留),應(yīng)將它們標(biāo)注為 static 或 transient [DES97]。 . 不要“隱藏”名字 名字隱藏是指給局部變量、參數(shù)或者字段所取的名字,與另一個(gè)更大范圍內(nèi)定義的變量、參數(shù)或者字段的名字相同(或相似)。名字隱藏會(huì)使代碼難于理解,并容易產(chǎn)生問題。 17 . 注釋一個(gè)字段 所有的字段都應(yīng)很好地加以注釋,以便其他開發(fā)者理解它。 需說明一個(gè)字段,才能使人了解如何使用它。 字段中的不變量是指永遠(yuǎn)為 “真 ”的條件。通過說明字段值的限制條件,有助于定義重要的業(yè)務(wù)規(guī)則,使代碼更易理解。 對(duì)于那些有復(fù)雜業(yè)務(wù)規(guī)則與之 相關(guān)聯(lián)的字段,應(yīng)提供幾個(gè)例子,使它們?nèi)菀桌斫狻? 4. 并行事件。最終結(jié)果是,如果應(yīng)用了 Java 的并行編程特性,那么你應(yīng)在程序中詳細(xì)地注釋出來。 如果聲明了一個(gè)非私有字段,則應(yīng)說明為什么要這樣做??偟膩碚f,最好能有一個(gè)好的理由解釋為什么不將變量聲明為私有類型。存取成員函數(shù)有兩種: 設(shè)置函數(shù) (也叫 變化函數(shù) )和 獲取函數(shù) 。 雖然存取成員函數(shù)往往會(huì)增加代碼費(fèi)用,但是現(xiàn)在 Java 編譯器使用時(shí)已被優(yōu)化,所以存取成員函數(shù)會(huì)增加代碼費(fèi)用這一點(diǎn)已不再正確。一個(gè)變量?jī)H能訪問兩個(gè)控制點(diǎn):設(shè)置函數(shù)和獲取函數(shù)。 Java 代碼的優(yōu)化將在(第 節(jié) “ 優(yōu)化 Java 代碼 ” )中討論。一些開發(fā)者不愿使用存取成員函數(shù)的原因是,他們不想多輸入幾個(gè)鍵(例如,對(duì)于一個(gè)獲取函數(shù),除了字段名之外,還必須輸 18 入 in, get 和 ())。 存取函數(shù)是唯一可以訪問字段的地方。的確,定義 字段的類內(nèi)的其它成員函數(shù)可能可以直接訪問該私有字段,但是這樣做會(huì)增加類內(nèi)的耦合,所以不應(yīng)這樣。訪問修飾語句(存取函數(shù))給編程語言控制這一類的接觸提供了一種清晰并可檢驗(yàn)的方法。 每個(gè)字段只有幾個(gè)單點(diǎn)要更新,這使得修改和檢測(cè)都很容易。 2. 獲得字段的值 。 3. 獲取常量名和類名 。 4. 初始化字段 。 5. 減少類與子類之間的耦合 。存取函數(shù)減少了那種一旦超類被修改就會(huì)波及子類的 “脆弱基類 ”的風(fēng)險(xiǎn)。如果一個(gè)或者多個(gè)字段的業(yè)務(wù)規(guī)則變化了,可以只潛在地修改存取函數(shù),就同樣可以提供規(guī)則變化之前的功能。 7. 簡(jiǎn)化并行事件。這讓轉(zhuǎn)向并行解決方案更加容易。 雖然應(yīng)該避免名字隱藏,即避免賦給局部變量一個(gè)與字段相同的名字,但是始終通過存取函數(shù)訪問字段意味著可以給局部變量任何你想取的名字。 19 當(dāng)不用存取函數(shù)時(shí) :唯一可能你不想用存取函數(shù)的時(shí)候是當(dāng)執(zhí)行時(shí)間最重要時(shí)。 . 命名存取函數(shù) 獲取成員函數(shù)應(yīng)在名字中加上 get + 字段名,除非字段表示的是一個(gè)布爾值( “ 真 ” 或者“ 假 ” ),這時(shí)獲取函數(shù)名中應(yīng)加上 is + 字段名。注意字段名始終采用大小寫混合,所有單詞的第一個(gè)字母要大寫。 Examples: 字段 類型 獲取函數(shù)名 設(shè)置函數(shù)名 firstName 字符串 getFirstName() setFirstName() address 地址 對(duì)象 getAddress() setAddress() persistent 布爾值 isPersistent() setPersistent() customerNo 整型 getCustomerNo() setCustomerNo() orderItems OrderItem 的對(duì)象數(shù)組 getOrderItems() setOrderItems() . 存取函數(shù)的高級(jí)技術(shù) 存取函數(shù)不僅僅局限在獲取和設(shè)置實(shí)例的字段值時(shí)使用。對(duì)于初始化有兩種想法:當(dāng)對(duì)象生成時(shí)初始化所有的變量(傳統(tǒng)方法)或者在第一次使用變量時(shí)進(jìn)行初始化。雖然這種方法可行,但是它被證明常常產(chǎn)生錯(cuò)誤。如下文所示(注意在獲取函數(shù)內(nèi)是如何采用一個(gè)設(shè)置函數(shù)的)。 /** 返回支行號(hào),支行號(hào) 是整個(gè)帳號(hào)的最左邊四位數(shù)字。 */ protected int getBranchNumber() { if( branchNumber == 0) { // 默認(rèn)支行號(hào)是 1000, // 它是 Bedrock 城市中心的一個(gè)主要支行 setBranchNumber(1000)。 } 對(duì)于在數(shù)據(jù)庫中實(shí)際存放的是其它對(duì)象的字段,常采用滯后初始化。而僅僅是在第一次訪問該項(xiàng)時(shí),才需用滯后初始化方式設(shè)定它的值。這種方法對(duì)于那些有不常被訪問的字段的對(duì)象有好處。這樣做除去了代碼中字段是如何被應(yīng)用的那層神秘,使代碼的可維護(hù)性和可擴(kuò)展性都得到了 提高。這種方式對(duì)于 “ 常量 ” 是可以理解的,因?yàn)樗鼈兪枪潭ǖ摹?DAYS_IN_A_WEEK 這個(gè)常量的值可能永不會(huì)改變,這一點(diǎn)也可以理解。例如: Archon Bank of Cardassia (ABC) 一直堅(jiān)持若要獲取利息,一個(gè)帳戶至少應(yīng)有 $500 的余額。這雖然可行,但卻不靈活。 要指出的一點(diǎn)是,將常量作為字段來 使用不夠靈活,一個(gè)好得多的辦法是將常量作為獲取函數(shù)來處理。 /** 得到帳號(hào)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1