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

正文內(nèi)容

guidancejava編程指南-經(jīng)營(yíng)管理(參考版)

2024-08-20 15:25本頁面
  

【正文】 帳號(hào)號(hào)碼的格式如下: BBBBAAAAAA。上例中,采用一個(gè)叫做 getMinimumBalance() 的靜態(tài)成員函數(shù)比一個(gè)叫做 MINIMUM_BALANCE 的靜態(tài)字段要靈活得多,因?yàn)樵诔蓡T函數(shù)中我們可以實(shí)現(xiàn)不同的業(yè)務(wù)規(guī)則,并針對(duì)不同的帳號(hào)生成不同的子類。如果業(yè)務(wù)規(guī)則變化為不同種類的帳戶有不同的最小余額限制,比如說,儲(chǔ)蓄帳戶的最小余額為 $500 ,支票帳號(hào)的最小余額為 $200,那么又該怎么辦呢?又如果業(yè)務(wù)規(guī)則變化為第一年要保持 $500 的最小余額,第二年要保持 $400 的最小余額,第三年要保持 $300 的最小余額,這又應(yīng)該怎么辦呢?要是規(guī)則變?yōu)橄募緫?yīng)有 $500 ,但冬季應(yīng)有 $250 呢?可能所有這些規(guī)則的組合在不久的將來就會(huì)采用。要實(shí)現(xiàn)這一點(diǎn),我們可以在計(jì)算利息的成員函數(shù)的類 Account 中 增加一個(gè)叫做 MINIMUM_BALANCE 的靜態(tài)字段。 但是,隨時(shí)間流逝,許多事物 “ 常量 ” 因?yàn)闃I(yè)務(wù)規(guī)則的變化而發(fā)生變化。例如, 布爾 類使用 “ 真 ” 和 “ 假 ” 這兩個(gè) 靜態(tài)最終 字段,它們代表這個(gè)類的兩個(gè)實(shí)例。 . 常量存取函數(shù) Java 中的代碼模式是將常量值作為靜態(tài)常量字段。如果你不打算用這些東西,為什么花精力從固定存取中獲取它們呢? 只要獲取函數(shù)采用了滯后初始化方式,就應(yīng)該象上文例子那樣說明為什么采用那個(gè)默認(rèn)值。這樣當(dāng)需要時(shí),只需從數(shù)據(jù)庫(kù)中讀出存貨項(xiàng)類型 21 對(duì)象即可。例如,當(dāng)生成一個(gè)新的存貨清單項(xiàng)時(shí),不必從默認(rèn)的數(shù)據(jù)庫(kù)中獲 得存貨項(xiàng)的類型。 } return branchNumber。 帳號(hào)的格式是 BBBBAAAAAA。注意:成員函數(shù)檢查支行個(gè)數(shù)是否為零,若是則將個(gè)數(shù)設(shè)置為適當(dāng)?shù)哪J(rèn)值。當(dāng)增加一個(gè)新的變量時(shí),你很容易就會(huì)忘記更新構(gòu)造函數(shù)(另一種稱為 滯后初始化的方法是,字段由它們的獲取函數(shù)初始化。第一種方式在對(duì)象初次創(chuàng)建時(shí)調(diào)用特殊的成員函數(shù),這些成員函數(shù)叫做構(gòu)造函數(shù)。這一節(jié)討論如何將存取函數(shù)應(yīng)用于以下方面,以提高代碼的適應(yīng)性: ? 初始化字段值 ? 訪問常量值 ? 訪問集合 ? 同時(shí)訪問幾個(gè)字段 . 滯后初始化 20 在訪問變量前需要將其初始化。命名約定在 JDK 中被始終使用,在 beans development 中也必須使用。無論何種字段類型,設(shè)置成員函數(shù)應(yīng)在名字中加上 set + 字段名 [GOS96], [DES97]。但是,這實(shí)際上很少見,因?yàn)閼?yīng)用程序耦合性的增加會(huì)平衡掉這樣做之后贏 得的好處。不必?fù)?dān)心字段名的隱藏,因?yàn)槟銦o論如何都不會(huì)直接訪問它們。 8. 名字隱藏不再是一個(gè)大問題。 [LEA97] 指出,如果采用了基于字段值的 waits 語句,那么設(shè)置成員函數(shù)提供了一個(gè)位置可包含 notifyAll。這一點(diǎn)使你很容易響應(yīng)新的業(yè)務(wù)規(guī)則。 6. 將變化封裝到字段中 。當(dāng)子類通過它們相應(yīng)的存取成員函數(shù)訪問被繼承的字段時(shí),它可以不 影響它的任何子類,而只修改超類字段的實(shí)現(xiàn)方式,這樣有效地減少了超類與子類之間的耦合。采用滯后初始化 (lazy initialization) 保證字段總能被初始化,并且只在需要時(shí)才初始化。在獲取函數(shù)中封裝常量值和類名,當(dāng)這些值或名字改變時(shí),只需更新獲取函數(shù)內(nèi)的值,而并非常量或者名字被使用處的每一行代碼。你完全控制著字段應(yīng)怎樣被訪問以及被誰訪問。換句話說,字段已被封裝。 ”[ KAN97] 存取成員函數(shù)通過以下方法提高類 的可維護(hù)性: 1. 更新字段。 . 為什么使用存取函數(shù)? “ 好的程序設(shè)計(jì)試圖將程序部件與不必要、未計(jì)劃或者不需的外部影響分隔開來。 正確使用存取成員函數(shù)的關(guān)鍵概念是:成員函數(shù)中,只有存取成員函數(shù)可以直接訪問字段。最主要的是,采用存取函數(shù)后增加的可維護(hù)性和可擴(kuò)展性,遠(yuǎn)遠(yuǎn)超過輸入這些字符所做的工作。 你的機(jī)構(gòu)能改進(jìn)的最重要的標(biāo)準(zhǔn)之一是存取函數(shù)的使用 。讓需 修改的點(diǎn)最小化,增加了類的可維護(hù)性。存取函數(shù)幫助隱藏了類的具體實(shí)現(xiàn)細(xì)節(jié)。設(shè)置函數(shù)修改變量的值,獲取函數(shù)取到變量的值。 . 使用存取成員函數(shù) 除了滿足命名約定之外,適當(dāng)?shù)厥褂?存取成員函數(shù) ,即提供更新或訪問字段值的成員函數(shù),可以實(shí)現(xiàn)字段的可維護(hù)性。字段的可見性在上文中(第 節(jié) “字段的可見性 ”)討論了,支持封裝的存取成員函數(shù)的用法將在下文(第 節(jié) “存取成員函數(shù)的使用 ”)中 討論。 5. 可見性決策。 對(duì)眾多程序開發(fā)者來說,并行性是一個(gè)新而復(fù)雜的概念;事實(shí)上,即使對(duì)有經(jīng)驗(yàn)的并行程序開發(fā)者來說,并行性也是一個(gè)老但卻復(fù)雜的課題。一個(gè)例子常象一幅畫:它抵得上幾千個(gè)詞語。 3. 示例。例如,字段 dayOfMonth 的不變量可能是它的值只能在 1 到 31 之間(顯然,可以用基于某一年里的某個(gè)月份來限制這個(gè)字段值,使其變的更加復(fù)雜)。 2. 注釋出所有采用的不變量。要想有效地注釋,以下的部分需要說明: 1. 字段的說明。因?yàn)槟慊蛘咂渌_發(fā)者在修改代碼時(shí),會(huì) 誤讀代碼,而錯(cuò)誤又很難發(fā)現(xiàn)。例如,如果把一個(gè)字段叫做 firstName ,就不要再生成一個(gè)局部變量或者參數(shù)叫做 firstName,或者任何類似的名字,如 firstNames 或 fistName。使它們與 BDK 的約定一致。 所有的字段都應(yīng)置為私有,由獲取和設(shè)置成員函數(shù)(存取函數(shù))訪問。 不要讓字段被保護(hù)。 不要讓字段公有。字段不應(yīng)被直接訪問,而應(yīng)采用存取成員函數(shù)(參見下文)訪問。 . 字段可見性 當(dāng)字段被聲明為 protected 類型時(shí),子類中的成員函數(shù)可能會(huì)直接訪問它,有效地提高了類內(nèi)層次結(jié)構(gòu)的耦合性。命名應(yīng)采 用完整的英文描述符,名字中所有非開頭的單詞的第一個(gè)字母應(yīng)大寫。在本文后面的章節(jié)中我們將看到,如果用定義獲取函數(shù)返回常量值的方法來取代定義常量,代碼的可適應(yīng)性和可維護(hù)性都會(huì)大大提高。公認(rèn)的約定是,采用完整的英文大寫單詞,在詞與詞之間用下劃線連接 [GOS96]。例如,當(dāng)命名按鈕時(shí),是用 Button 或是 PushButton, b 或是 pb?生成一個(gè)列表,讓組里的每一個(gè) Java 開發(fā)者都得到它。 設(shè)定組件命名標(biāo)準(zhǔn)。主要優(yōu)點(diǎn)是組件名說明了組件類型,并 且同一類的組件不在一起,而按照字母順序排列。 . 命名組件的另一種方法。此外,開發(fā)者能快速地從變量的名字上來判斷它的類型和用法。匈牙利符號(hào) “ 匈牙利符號(hào) ” [ MCO93] 是基于字段應(yīng)按照以下方法命名的原則: xEeeeeeEeeeee,其中 x 指組件類型, EeeeeEeeeee 是完整的英文描 述符。 這樣的話,很容易混淆)。這讓你容易區(qū)分一個(gè)組件的目的和它的類型,容易在一個(gè)表里找到各個(gè)組件(許多可視化的編程環(huán)境在一個(gè) Applet 程序或者一個(gè)應(yīng)用程序中提供了一個(gè)所有組件的列表。象數(shù)組或者矢量這樣是集合的字段,命名時(shí)應(yīng)使用復(fù)數(shù)來表示它們代表多值。字段可以是象字符串或者浮點(diǎn)數(shù)這樣的基本數(shù)據(jù)類型,也可以是一個(gè)對(duì) 象,例如一個(gè)消費(fèi)者或者一個(gè)銀行帳戶。 4. 字段標(biāo)準(zhǔn)(字段 /屬性) field 這個(gè)詞在這里指的是字段, Beans Development Kit (BDK) 叫它 “ 屬性 ” [ DES97]。這大多是在 AND 或者 OR 其它幾個(gè)比較關(guān)系處產(chǎn)生的邏輯比較上的問題。 . 說明運(yùn)行順序 提高代碼可讀性的一個(gè)相當(dāng)簡(jiǎn)單的方法是使用圓括號(hào) (parenthesis,又叫 “round brackets”) 來說明 Java 代碼運(yùn)行的準(zhǔn)確順序 [NAG95]; [AMB98]。 此外,應(yīng)讓代碼在一個(gè)屏幕內(nèi)可見 [VIS96]。為什么要這樣呢?我們應(yīng)使代碼盡量容易理解,從而更容易維護(hù)和改進(jìn)。在依賴于穿孔卡片的計(jì)算機(jī)發(fā)展的早期,想讓一行代碼完成盡量多的功能的想法是可以理解的。一個(gè)好的經(jīng)驗(yàn)法則是:如果一個(gè)成員函數(shù)一個(gè)屏幕裝不下,那么它就很可能太長(zhǎng)了。如果他們做不到,說明你的代碼太難維護(hù),應(yīng)加以改進(jìn)。沒有空白的代碼很難讀,很難理解。 在 Java 代碼中加入幾個(gè)空行,也叫 空白,將代碼分為一些小的、容易理解的部分,可以使它更加可讀。采用與你的 Java 開發(fā)環(huán)境所生成的代碼一樣的縮進(jìn)風(fēng)格。 Java 的約定似乎是開括號(hào)放在塊的所有者所在行的后面,閉括號(hào)應(yīng)縮進(jìn)一級(jí)。所有在括號(hào) { 和 } 之內(nèi)的代碼,構(gòu)成一個(gè)塊。當(dāng)正確地使用了本文提到的注釋標(biāo)準(zhǔn)和方針,就可以大幅度地提高代碼質(zhì)量。 . 編寫清晰整潔的代碼的技巧 這一部分講述幾個(gè)技巧,這些技巧有助于區(qū)分專業(yè)軟件開發(fā)者和蹩腳代碼編寫者。我發(fā)現(xiàn)通過將類似 //end if, //end for, //end switch, amp。問題是閉括號(hào) } 應(yīng)該屬于哪一個(gè)控制結(jié)構(gòu)這一點(diǎn) 就變得混淆了。 常常會(huì)發(fā)現(xiàn)你的控制結(jié)構(gòu)內(nèi)套了一個(gè)控制結(jié)構(gòu),而在這個(gè)控制結(jié)構(gòu)內(nèi)還套了一個(gè)控制結(jié)構(gòu)。沒有比下面更糟糕的事了:你對(duì)一段代碼做一點(diǎn)簡(jiǎn)單的改動(dòng),卻發(fā)現(xiàn)它不工作,于是花了幾個(gè)小時(shí)查找問題,最后發(fā)現(xiàn)原來是搞錯(cuò)了代碼的執(zhí)行順序。 5. 處理順序。 若發(fā)現(xiàn)不能或者沒有時(shí)間重寫代碼,那么應(yīng)將成員函數(shù)中的復(fù)雜代碼詳細(xì)地注釋出來。 雖然我們?cè)诘? 4 章將仔細(xì)討論這一點(diǎn),在一個(gè)成員函數(shù)內(nèi)定義的每一個(gè)局部變量都應(yīng)在它代碼的所在行聲明,并且應(yīng)采用一個(gè)行內(nèi)注釋說明它的用法。顯然,肯定有一條商業(yè)法則說應(yīng)打折扣,那 么在代碼中至少應(yīng)該提到那條商業(yè)法則,這樣才能使其他開發(fā)者理解你的代碼為什么會(huì)是這樣。這很容易。 通常你常能看懂一段代碼做了什么,但對(duì)于那些不明顯的代碼,你很少能判斷出它為什么要那樣做。你無須讀完整個(gè)控制結(jié)構(gòu)內(nèi)的代碼才判斷它的功能,而僅需看看緊靠它之前的一到兩行注釋即可。 在函數(shù)內(nèi),一定要說明: 1. 控制結(jié)構(gòu)。它們 之間的用法易混淆,這樣會(huì)使代碼的可理解性降低。采用 C 語言風(fēng)格的注釋語句去掉無用的代碼,因?yàn)檫@樣僅用一個(gè)語句就可以容易地去掉幾行代碼。正如上述所討論的,應(yīng)認(rèn)真考慮給代碼的業(yè)務(wù)邏輯采用一種風(fēng)格的注釋,給要注釋掉的無用代碼采用另外一種風(fēng)格的注釋。目的是使成員函數(shù)更易理解、維護(hù)和增強(qiáng)。但是,對(duì)于所寫的每個(gè)成員函數(shù)要說明以上的部分內(nèi)容。 僅當(dāng)注釋增加代碼的清晰度時(shí),才應(yīng)加上注釋 。當(dāng)一個(gè)采用了 Runnable 接口的類的設(shè)置函數(shù)(即可更新一個(gè)字段的成員函數(shù))沒有同步時(shí),應(yīng)說明這樣做的理由。[LEA97] 建議,當(dāng)一個(gè)類既包含了同步也包含了 非同步的成員函數(shù)時(shí),必須注釋出成員函數(shù)依賴的執(zhí)行上下文,尤其是當(dāng)函數(shù)可被無約束訪問時(shí)。 對(duì)眾多程序開發(fā)者來說,并行性是一個(gè)新而復(fù)雜的概念;對(duì)有經(jīng)驗(yàn)的并行性程序開發(fā)者來說,并行性也是一個(gè)老但卻復(fù)雜的課題。前提條件和后置條件以多種方式說明了在編寫成員函數(shù)過程中所做的假設(shè) [AMB98],精確定義了一個(gè)成員函數(shù)的應(yīng)用范圍。 10. 可用的前提條件和后置條件 。 最簡(jiǎn)單的確定一段代碼如何工作的方法是看一個(gè)例子。采用一個(gè)配置管理工具來保存單元?dú)v史。例如,讀者不會(huì)想要翻過兩三頁諸如 “版權(quán)所有 ”等對(duì)理解程序毫無幫助且(或)不提供任何編程信息的文本。比如說作者、電話、創(chuàng)建和修改日期、單 元(或者文件名)的位置,因?yàn)檫@些信息很快就會(huì)過時(shí)。這種信息必須給出,使其他 Java 程序員能準(zhǔn)確地知道一個(gè)成員函數(shù)調(diào)用將如何影響目標(biāo)對(duì)象。 7. 成員函數(shù)是如何改變對(duì)象的 。 如果你覺得你對(duì)于一個(gè)成員 函數(shù)可見性的選擇會(huì)遭到別人的質(zhì)疑,例如可能你將一個(gè)成員函數(shù)設(shè)為公共的,但是卻沒有任何對(duì)象調(diào)用該成員函數(shù),那么應(yīng)說明你的決定。在 (第 “快速瀏覽 javadoc”) 中討論的 javadoc exception 標(biāo)識(shí)便用于此目的。 5. 任何由某個(gè)成員函數(shù)拋出的異常。 成員函數(shù)中的任何突出的問題都應(yīng)說明,以便讓其他程序開發(fā)者了解該成員函數(shù)的弱點(diǎn)和難點(diǎn)。在 (第 節(jié) “快速瀏覽 javadoc”) 里討論的 javadoc return 標(biāo)識(shí)便用于此目的。 3. 成員函數(shù)返回什么 。這個(gè)信息使其他程序員了解應(yīng)將怎樣的信息傳遞給一個(gè)成員函數(shù)。 2. 哪些參數(shù)必須傳遞給一個(gè)成員函數(shù) 。注釋出函數(shù)為什么做這個(gè)可以讓其他人更容易將你的代碼放到程序的上下文中去。這些信息包含但不僅僅局限于以下內(nèi)容: 1. 成員函數(shù)做什么以及它為什么做這個(gè) 。 . 成員函數(shù)的函數(shù)頭 9 每一個(gè) Java 成員函數(shù)都應(yīng)包含某種稱之為 “ 成員函數(shù)文檔 ” 的函數(shù)頭。重新分配要素又叫“重組 ”,指類內(nèi)其它成員函數(shù)封裝某一個(gè)特定行為的做法。 當(dāng)該成員函數(shù)所提供的行為明確針對(duì)定義它的類時(shí)。 當(dāng)該成員函數(shù)提供的行為被它所在類的層次結(jié)構(gòu)內(nèi)部而非外部需要時(shí)。 當(dāng)該成員函數(shù)必須被該函數(shù)所在的層次結(jié)構(gòu)之外的其他對(duì)象和類在訪問時(shí)。如果成員函數(shù)沒必要公有 (public),就定義為保護(hù) (protected);沒必要保護(hù) (protected),就定義為私有 (private)。 示例: Customer() SavingsAccount() PersistenceBroker() 這個(gè)命名約定由 Sun 公司設(shè)定,必須嚴(yán)格遵守。例如,類 Customer 的 構(gòu)造函數(shù)是 Customer()。 8 . 命名構(gòu)造函數(shù) 構(gòu)造函數(shù)是在一個(gè)對(duì)象初次生成時(shí),完成所有必需的初始化的成員函數(shù)。這個(gè)標(biāo)準(zhǔn)的另一個(gè)優(yōu)點(diǎn)是:它遵循 beans development kit (BDK) 對(duì)設(shè)置函數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1