| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> php >> PHP程序開發的原則彙總
 

PHP程序開發的原則彙總

2008-12-22 08:07:44  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  你不必嚴格遵守這些原則,違背它們也不會被處以宗教刑罰。但你應當把這些原則看成警鈴,若違背了其中的一條,那麽警鈴就會響起 。 ----- Arthur J.Riel

  (1)所有數據都應該隱藏在所在的類的內部。

  (2)類的使用者必須依賴類的共有接口,但類不能依賴它的使用者。

  (3)盡量減少類的協議中的消息。

  (4)實現所有類都理解的最基本公有接口[例如,拷貝操作(深拷貝和淺拷貝)、相等性判斷、正確輸出內容、從ASCII描述解析等等]。

  (5)不要把實現細節(例如放置共用代碼的私有函數)放到類的公有接口中。

  如果類的兩個方法有一段公共代碼,那麽就可以創建一個防止這些公共代碼的私有函數。

  (6)不要以用戶無法使用或不感興趣的東西擾亂類的公有接口。

  (7)類之間應該零耦合,或者只有導出耦合關系。也即,一個類要麽同另一個類毫無關系,要麽只使用另一個類的公有接口中的操作。

  (8)類應該只表示一個關鍵抽象。

  包中的所有類對于同一類性質的變化應該是共同封閉的。一個變化若對一個包影響,則將對包中的所有類産生影響,而對其他的包不造成任何影響 .

  (9)把相關的數據和行爲集中放置。

  設計者應當留意那些通過get之類操作從別的對象中獲取數據的對象。這種類型的行爲暗示著這條經驗原則被違反了。

  (10)把不相關的信息放在另一個類中(也即:互不溝通的行爲)。

  朝著穩定的方向進行依賴.

  (11)確保你爲之建模的抽象概念是類,而不只是對象扮演的角色。

  (12)在水平方向上盡可能統一地分布系統功能,也即:按照設計,頂層類應當統一地共享工作。

  (13)在你的系統中不要創建全能類/對象。對名字包含Driver、Manager、System、Susystem的類要特別多加小心。

  規劃一個接口而不是實現一個接口。

  (14)對公共接口中定義了大量訪問方法的類多加小心。大量訪問方法意味著相關數據和行爲沒有集中存放。

  (15)對包含太多互不溝通的行爲的類多加小心。

  這個問題的另一表現是在你的應用程序中的類的公有接口中創建了很多的get和set函數。

  (16)在由同用戶界面交互的面向對象模型構成的應用程序中,模型不應該依賴于界面,界面則應當依賴于模型。

  (17)盡可能地按照現實世界建模(我們常常爲了遵守系統功能分布原則、避免全能類原則以及集中放置相關數據和行爲的原則而違背這條原則) 。

  (18)從你的設計中去除不需要的類。

  一般來說,我們會把這個類降級成一個屬性。

  (19)去除系統外的類。

  系統外的類的特點是,抽象地看它們只往系統領域發送消息但並不接受系統領域內其他類發出的消息。

  (20)不要把操作變成類。質疑任何名字是動詞或者派生自動詞的類,特別是只有一個有意義行爲的類。考慮一下那個有意義的行爲是否應當遷移到已經存在或者尚未發現的某個類中。

  (21)我們在創建應用程序的分析模型時常常引入代理類。在設計階段,我們常會發現很多代理沒有用的,應當去除。

  (22)盡量減少類的協作者的數量。

  一個類用到的其他類的數目應當盡量少。

  (23)盡量減少類和協作者之間傳遞的消息的數量。

  (24)盡量減少類和協作者之間的協作量,也即:減少類和協作者之間傳遞的不同消息的數量。

  (25)盡量減少類的扇出,也即:減少類定義的消息數和發送的消息數的乘積。

  (26)如果類包含另一個類的對象,那麽包含類應當給被包含的對象發送消息。也即:包含關系總是意味著使用關系。

  (27)類中定義的大多數方法都應當在大多數時間裏使用大多數數據成員。

  (28)類包含的對象數目不應當超過開發者短期記憶的容量。這個數目常常是6。

  當類包含多于6個數據成員時,可以把邏輯相關的數據成員劃分爲一組,然後用一個新的包含類去包含這一組成員。

  (29)讓系統功能在窄而深的繼承體系中垂直分布。

  (30)在實現語義約束時,最好根據類定義來實現。這常常會導致類泛濫成災,在這種情況下,約束應當在類的行爲中實現,通常是在構造函數中實現,但不是必須如此。

  (31)在類的構造函數中實現語義約束時,把約束測試放在構造函數領域所允許的盡量深的包含層次中。

  (32)約束所依賴的語義信息如果經常改變,那麽最好放在一個集中式的第3方對象中。

  (33)約束所依賴的語義信息如果很少改變,那麽最好分布在約束所涉及的各個類中。

  (34)類必須知道它包含什麽,但是不能知道誰包含它。

  (35)共享字面範圍(也就是被同一個類所包含)的對象相互之間不應當有使用關系。

  (36)繼承只應被用來爲特化層次結構建模。

  (37)派生類必須知道基類,基類不應該知道關于它們的派生類的任何信息。

  (38)基類中的所有數據都應當是私有的,不要使用保護數據。

  類的設計者永遠都不應該把類的使用者不需要的東西放在公有接口中。

  (39)在理論上,繼承層次體系應當深一點,越深越好。

  (40)在實踐中,繼承層次體系的深度不應當超出一個普通人的短期記憶能力。一個廣爲接受的深度值是6。

  (41)所有的抽象類都應當是基類。

  (42)所有的基類都應當是抽象類。

  (43)把數據、行爲和/或接口的共性盡可能地放到繼承層次體系的高端。

  (44)如果兩個或更多個類共享公共數據(但沒有公共行爲),那麽應當把公共數據放在一個類中,每個共享這個數據的類都包含這個類。

  (45)如果兩個或更多個類有共同的數據和行爲(就是方法),那麽這些類的每一個都應當從一個表示了這些數據和方法的公共基類繼承。

  (46)如果兩個或更多個類共享公共接口(指的是消息,而不是方法),那麽只有他們需要被多態地使用時,他們才應當從一個公共基類繼承。

  (47)對對象類型的顯示的分情況分析一般是錯誤的。在大多數這樣的情況下,設計者應當使用多態。

  (48)對屬性值的顯示的分情況分析常常是錯誤的。類應當解耦合成一個繼承層次結構,每個屬性值都被變換成一個派生類。

  (49)不要通過繼承關系來爲類的動態語義建模。試圖用靜態語義關系來爲動態語義建模會導致在運行時切換類型。

  (50)不要把類的對象變成派生類。對任何只有一個實例的派生類都要多加小心。

  (51)如果你覺得需要在運行時刻創建新的類,那麽退後一步以認清你要創建的是對象。現在,把這些對象概括成一個類。

  (52)在派生類中用空方法(也就是什麽也不做的方法)來覆寫基類中的方法應當是非法的。

  (53)不要把可選包含同對繼承的需要相混淆。把可選包含建模成繼承會帶來泛濫成災的類。

  (54)在創建繼承層次時,試著創建可複用的框架,而不是可複用的組件。

  (55)如果你在設計中使用了多重繼承,先假設你犯了錯誤。如果沒犯錯誤,你需要設法證明。

  (56)只要在面向對象設計中用到了繼承,問自己兩個問題:(1)派生類是否是它繼承的那個東西的一個特殊類型?(2)基類是不是派生類的一部分?

  (57)如果你在一個面向對象設計中發現了多重繼承關系,確保沒有哪個基類實際上是另一個基類的派生類。

  (58)在面向對象設計中如果你需要在包含關系和關聯關系間作出選擇,請選擇包含關系。

  (59)不要把全局數據或全局函數用于類的對象的薄記工作。應當使用類變量或類方法。

  (60)面向對象設計者不應當讓物理設計准則來破壞他們的邏輯設計。但是,在對邏輯設計作出決策的過程中我們經常用到物理設計准則。

  (61)不要繞開公共接口去修改對象的狀態。
 
 
 
上一篇《PHP網站開發遇到的中文編碼》
下一篇《基于DB2及PHP的應用系統跨平台遷移詳細步驟(一)》
 
 
 
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

河南夫妻在溫嶺網絡直播“造人”內容涉黃被刑事拘留

夫妻網絡直播“造人”爆紅   1月9日,溫嶺城北派出所接到南京警方的協查通告,他們近期打掉了一個涉黃直播APP平台。而根據掌握的線索,其中有一對涉案的夫妻主播...

如何防止牆紙老化?牆紙變舊變黃怎麽辦?

如何防止牆紙老化? (1)選擇透氣性好的牆紙 市場上牆紙的材質分無紡布的、木纖維的、PVC的、玻璃纖維基材的、布面的等,相對而言,PVC材質的牆紙最不透氣...

鮮肌之謎非日本生産VS鮮肌之謎假日貨是謠言

觀點一:破日本銷售量的“鮮肌之謎” 非日本生産 近一段時間,淘寶上架了一款名爲“鮮肌之謎的” 鲑魚卵巢美容液,號稱是最近日本的一款推出的全新護膚品,産品本身所...

中國最美古詩詞精選摘抄

系腰裙(北宋詞人 張先) 惜霜蟾照夜雲天,朦胧影、畫勾闌。人情縱似長情月,算一年年。又能得、幾番圓。 欲寄西江題葉字,流不到、五亭前。東池始有荷新綠,尚小如...

關于女人的經典語句

關于女人的經典語句1、【做一個獨立的女人】 思想獨立:有主見、有自己的人生觀、價值觀。有上進心,永遠不放棄自己的理想,做一份自己喜愛的事業,擁有快樂和成就...

未來我們可以和性愛機器人結婚嗎?

你想體驗機器人性愛嗎?你想和性愛機器人結婚嗎?如果你想,機器人有拒絕你的權利嗎? 近日,第二屆“國際人類-機器人性愛研討會”大會在倫敦金史密斯大學落下帷幕。而...

全球最變態的十個地方

10.土耳其地下洞穴城市 變態指數:★★☆☆☆ 這是土耳其卡帕多西亞的一個著名景點,傳說是當年基督教徒們爲了躲避戰爭而在此修建。裏面曾住著20000人,...

科學家稱,人類死亡後意識將在另外一個宇宙中繼續存活

據英國《每日快報》報道,一位科學家兼理論家Robert Lanza博士宣稱,世界上並不存在人類死亡,死亡的只是身體。他認爲我們的意識借助我們體內的能量生存,而且...

《屏裏狐》片頭曲《我愛狐狸精》歌詞是什麽?

《我愛狐狸精》 - 劉馨棋   (電視劇《屏裏狐》主題曲)   作詞:金十三&李旦   作曲:劉嘉   狐狸精 狐狸仙   千年修...

 
 
 
你不必嚴格遵守這些原則,違背它們也不會被處以宗教刑罰。但你應當把這些原則看成警鈴,若違背了其中的一條,那麽警鈴就會響起 。 ----- Arthur J.Riel (1)所有數據都應該隱藏在所在的類的內部。 (2)類的使用者必須依賴類的共有接口,但類不能依賴它的使用者。 (3)盡量減少類的協議中的消息。 (4)實現所有類都理解的最基本公有接口[例如,拷貝操作(深拷貝和淺拷貝)、相等性判斷、正確輸出內容、從ASCII描述解析等等]。 (5)不要把實現細節(例如放置共用代碼的私有函數)放到類的公有接口中。 如果類的兩個方法有一段公共代碼,那麽就可以創建一個防止這些公共代碼的私有函數。 (6)不要以用戶無法使用或不感興趣的東西擾亂類的公有接口。 (7)類之間應該零耦合,或者只有導出耦合關系。也即,一個類要麽同另一個類毫無關系,要麽只使用另一個類的公有接口中的操作。 (8)類應該只表示一個關鍵抽象。 包中的所有類對于同一類性質的變化應該是共同封閉的。一個變化若對一個包影響,則將對包中的所有類産生影響,而對其他的包不  造成任何影響 . (9)把相關的數據和行爲集中放置。 設計者應當留意那些通過get之類操作從別的對象中獲取數據的對象。這種類型的行爲暗示著這條經驗原則被違反了。 (10)把不相關的信息放在另一個類中(也即:互不溝通的行爲)。 朝著穩定的方向進行依賴. (11)確保你爲之建模的抽象概念是類,而不只是對象扮演的角色。 (12)在水平方向上盡可能統一地分布系統功能,也即:按照設計,頂層類應當統一地共享工作。 (13)在你的系統中不要創建全能類/對象。對名字包含Driver、Manager、System、Susystem的類要特別多加小心。 規劃一個接口而不是實現一個接口。 (14)對公共接口中定義了大量訪問方法的類多加小心。大量訪問方法意味著相關數據和行爲沒有集中存放。 (15)對包含太多互不溝通的行爲的類多加小心。 這個問題的另一表現是在你的應用程序中的類的公有接口中創建了很多的get和set函數。 (16)在由同用戶界面交互的面向對象模型構成的應用程序中,模型不應該依賴于界面,界面則應當依賴于模型。 (17)盡可能地按照現實世界建模(我們常常爲了遵守系統功能分布原則、避免全能類原則以及集中放置相關數據和行爲的原則而違背這條原則) 。 (18)從你的設計中去除不需要的類。 一般來說,我們會把這個類降級成一個屬性。 (19)去除系統外的類。 系統外的類的特點是,抽象地看它們只往系統領域發送消息但並不接受系統領域內其他類發出的消息。 (20)不要把操作變成類。質疑任何名字是動詞或者派生自動詞的類,特別是只有一個有意義行爲的類。考慮一下那個有意義的行爲是否應當遷移到已經存在或者尚未發現的某個類中。 (21)我們在創建應用程序的分析模型時常常引入代理類。在設計階段,我們常會發現很多代理沒有用的,應當去除。 (22)盡量減少類的協作者的數量。 一個類用到的其他類的數目應當盡量少。 (23)盡量減少類和協作者之間傳遞的消息的數量。 (24)盡量減少類和協作者之間的協作量,也即:減少類和協作者之間傳遞的不同消息的數量。 (25)盡量減少類的扇出,也即:減少類定義的消息數和發送的消息數的乘積。 (26)如果類包含另一個類的對象,那麽包含類應當給被包含的對象發送消息。也即:包含關系總是意味著使用關系。 (27)類中定義的大多數方法都應當在大多數時間裏使用大多數數據成員。 (28)類包含的對象數目不應當超過開發者短期記憶的容量。這個數目常常是6。 當類包含多于6個數據成員時,可以把邏輯相關的數據成員劃分爲一組,然後用一個新的包含類去包含這一組成員。 (29)讓系統功能在窄而深的繼承體系中垂直分布。 (30)在實現語義約束時,最好根據類定義來實現。這常常會導致類泛濫成災,在這種情況下,約束應當在類的行爲中實現,通常是在構造函數中實現,但不是必須如此。 (31)在類的構造函數中實現語義約束時,把約束測試放在構造函數領域所允許的盡量深的包含層次中。 (32)約束所依賴的語義信息如果經常改變,那麽最好放在一個集中式的第3方對象中。 (33)約束所依賴的語義信息如果很少改變,那麽最好分布在約束所涉及的各個類中。 (34)類必須知道它包含什麽,但是不能知道誰包含它。 (35)共享字面範圍(也就是被同一個類所包含)的對象相互之間不應當有使用關系。 (36)繼承只應被用來爲特化層次結構建模。 (37)派生類必須知道基類,基類不應該知道關于它們的派生類的任何信息。 (38)基類中的所有數據都應當是私有的,不要使用保護數據。 類的設計者永遠都不應該把類的使用者不需要的東西放在公有接口中。 (39)在理論上,繼承層次體系應當深一點,越深越好。 (40)在實踐中,繼承層次體系的深度不應當超出一個普通人的短期記憶能力。一個廣爲接受的深度值是6。 (41)所有的抽象類都應當是基類。 (42)所有的基類都應當是抽象類。 (43)把數據、行爲和/或接口的共性盡可能地放到繼承層次體系的高端。 (44)如果兩個或更多個類共享公共數據(但沒有公共行爲),那麽應當把公共數據放在一個類中,每個共享這個數據的類都包含這個類。 (45)如果兩個或更多個類有共同的數據和行爲(就是方法),那麽這些類的每一個都應當從一個表示了這些數據和方法的公共基類繼承。 (46)如果兩個或更多個類共享公共接口(指的是消息,而不是方法),那麽只有他們需要被多態地使用時,他們才應當從一個公共基類繼承。 (47)對對象類型的顯示的分情況分析一般是錯誤的。在大多數這樣的情況下,設計者應當使用多態。 (48)對屬性值的顯示的分情況分析常常是錯誤的。類應當解耦合成一個繼承層次結構,每個屬性值都被變換成一個派生類。 (49)不要通過繼承關系來爲類的動態語義建模。試圖用靜態語義關系來爲動態語義建模會導致在運行時切換類型。 (50)不要把類的對象變成派生類。對任何只有一個實例的派生類都要多加小心。 (51)如果你覺得需要在運行時刻創建新的類,那麽退後一步以認清你要創建的是對象。現在,把這些對象概括成一個類。 (52)在派生類中用空方法(也就是什麽也不做的方法)來覆寫基類中的方法應當是非法的。 (53)不要把可選包含同對繼承的需要相混淆。把可選包含建模成繼承會帶來泛濫成災的類。 (54)在創建繼承層次時,試著創建可複用的框架,而不是可複用的組件。 (55)如果你在設計中使用了多重繼承,先假設你犯了錯誤。如果沒犯錯誤,你需要設法證明。 (56)只要在面向對象設計中用到了繼承,問自己兩個問題:(1)派生類是否是它繼承的那個東西的一個特殊類型?(2)基類是不是派生類的一部分? (57)如果你在一個面向對象設計中發現了多重繼承關系,確保沒有哪個基類實際上是另一個基類的派生類。 (58)在面向對象設計中如果你需要在包含關系和關聯關系間作出選擇,請選擇包含關系。 (59)不要把全局數據或全局函數用于類的對象的薄記工作。應當使用類變量或類方法。 (60)面向對象設計者不應當讓物理設計准則來破壞他們的邏輯設計。但是,在對邏輯設計作出決策的過程中我們經常用到物理設計准則。 (61)不要繞開公共接口去修改對象的狀態。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
暖暖的午後美女(2)
一個人的生活
妩媚動人的女生
秀氣迷人的模特
巧合的對稱
擁抱明天
十二月,有陽光
董子讀書台
 
>>返回首頁<<
 
 
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有