鑹ソ鐨勭紪紼嬪師鍒欎笌鑹ソ鐨勮璁″伐紼嬪師鍒欏瘑鍒囩浉鍏熾傛湰鏂囨葷粨鐨勮繖浜涜璁″師鍒欙紝甯姪寮鍙戣呮洿鏈夋晥鐜囩殑緙栧啓浠g爜錛屽茍甯姪鎴愪負涓鍚嶄紭縐鐨勭▼搴忓憳銆?/p>
1.閬垮厤閲嶅鍘熷垯錛圖RY – Don’t repeat yourself錛?/strong>
緙栫▼鐨勬渶鍩烘湰鍘熷垯鏄伩鍏嶉噸澶嶃傚湪紼嬪簭浠g爜涓諱細鏈夊緢澶氱粨鏋勪綋錛屽寰幆銆佸嚱鏁般佺被絳夌瓑銆備竴鏃︿綘閲嶅鏌愪釜璇彞鎴栨蹇碉紝灝變細寰堝鏄撳艦鎴愪竴涓娊璞′綋銆?/p>
2.鎶借薄鍘熷垯錛圓bstraction Principle 錛?/strong>
涓嶥RY鍘熷垯鐩稿叧銆傝璁頒綇錛岀▼搴忎唬鐮佷腑姣忎竴涓噸瑕佺殑鍔熻兘錛屽彧鑳藉嚭鐜板湪婧愪唬鐮佺殑涓涓綅緗?/p>
3.綆鍗曞師鍒欙紙Keep It Simple and Stupid 錛?/strong>
綆鍗曟槸杞歡璁捐鐨勭洰鏍囷紝綆鍗曠殑浠g爜鍗犵敤鏃墮棿灝戯紝婕忔礊灝戯紝騫朵笖鏄撲簬淇敼銆?/p>
4.閬垮厤鍒涘緩浣犱笉瑕佺殑浠g爜 Avoid Creating a YAGNI (You aren’t going to need it)
闄ら潪浣犻渶瑕佸畠錛屽惁鍒欏埆鍒涘緩鏂板姛鑳姐?/p>
5.灝藉彲鑳藉仛鍙繍琛岀殑鏈綆鍗曠殑浜嬶紙Do the simplest thing that could possibly work錛?/strong>
灝藉彲鑳藉仛鍙繍琛岀殑鏈綆鍗曠殑浜嬨傚湪緙栫▼涓紝涓瀹氳淇濇寔綆鍗曞師鍒欍備綔涓轟竴鍚嶇▼搴忓憳涓嶆柇鐨勫弽鎬?#8220;濡備綍鍦ㄥ伐浣滀腑鍋氬埌綆鍖栧憿錛?#8221;榪欏皢鏈夊姪浜庡湪璁捐涓繚鎸佺畝鍗曠殑璺緞銆?/p>
6.鍒鎴戞濊?Don’t make me think )
榪欐槸Steve Krug涓鏈功鐨勬爣棰橈紝鍚屾椂涔熷拰緙栫▼鏈夊叧銆傛墍緙栧啓鐨勪唬鐮佷竴瀹氳鏄撲簬璇繪槗浜庣悊瑙o紝榪欐牱鍒漢鎵嶄細嬈h祻錛屼篃鑳藉緇欎綘鎻愬嚭鍚堢悊鍖栫殑寤鴻銆傜浉鍙嶏紝鑻ユ槸綣佹潅闅捐В鐨勭▼搴忥紝鍏朵粬浜烘繪槸浼氶伩鑰岃繙涔嬬殑銆?/p>
7.寮闂師鍒?Open/Closed Principle)
浣犳墍緙栧啓鐨勮蔣浠跺疄浣擄紙綾匯佹ā鍧椼佸嚱鏁扮瓑錛夋渶濂芥槸寮婧愮殑錛岃繖鏍峰埆浜哄彲浠ユ嫇灞曞紑鍙戙備笉榪囷紝瀵逛簬浣犵殑浠g爜錛屽緱闄愬畾鍒漢涓嶅緱淇敼銆傛崲鍙ヨ瘽璇達紝鍒漢鍙互鍩轟簬浣犵殑浠g爜榪涜鎷撳睍緙栧啓錛屼絾鍗翠笉鑳戒慨鏀逛綘鐨勪唬鐮併?/p>
8.浠g爜緇存姢(Write Code for the Maintainer)
涓涓紭縐鐨勪唬鐮侊紝搴斿綋浣挎湰浜烘垨鏄粬浜哄湪灝嗘潵閮借兘澶熷瀹冪戶緇紪鍐欐垨緇存姢銆備唬鐮佺淮鎶ゆ椂錛屾垨璁告湰浜轟細姣旇緝瀹規槗錛屼絾瀵逛粬浜哄嵈姣旇緝楹葷儲銆傚洜姝や綘鍐欑殑浠g爜瑕佸敖鍙兘淇濊瘉浠栦漢鑳藉瀹規槗緇存姢銆傜敤涔︿腑鍘熻瘽璇?#8220;濡傛灉涓涓淮鎶よ呬笉鍐嶇戶緇淮鎶や綘鐨勪唬鐮侊紝寰堝彲鑳戒粬灝辨湁鎯蟲潃浜嗕綘鐨勫啿鍔ㄣ?#8221;
9.鏈灝忔儕璁跺師鍒?Principle of least astonishment)
鏈灝忔儕璁跺師鍒欓氬父鏄湪鐢ㄦ埛鐣岄潰鏂歸潰寮曠敤錛屼絾鍚屾牱閫傜敤浜庣紪鍐欑殑浠g爜銆備唬鐮佸簲璇ュ敖鍙兘鍑忓皯璁╄鑰呮儕鍠溿備篃灝辨槸璇達紝浣犵紪鍐欑殑浠g爜鍙渶鎸夌収欏圭洰鐨勮姹傛潵緙栧啓銆傚叾浠栧崕涓界殑鍔熻兘灝變笉蹇呬簡錛屼互鍏嶅紕宸ф垚鎷欍?/p>
10.鍗曚竴璐d換鍘熷垯(Single Responsibility Principle)
鏌愪釜浠g爜鐨勫姛鑳斤紝搴旇淇濊瘉鍙湁鍗曚竴鐨勬槑紜殑鎵ц浠誨姟銆?/p>
11.浣庤﹀悎鍘熷垯(Minimize Coupling)
浠g爜鐨勪換浣曚竴涓儴鍒嗗簲璇ュ噺灝戝鍏朵粬鍖哄煙浠g爜鐨勪緷璧栧叧緋匯傚敖閲忎笉瑕佷嬌鐢ㄥ叡浜弬鏁般備綆鑰﹀悎寰寰鏄畬緹庣粨鏋勭郴緇熷拰浼樼璁捐鐨勬爣蹇椼?/p>
12.鏈澶ч檺搴﹀嚌鑱氬師鍒?Maximize Cohesion)
鐩鎬技鐨勫姛鑳戒唬鐮佸簲灝介噺鏀懼湪涓涓儴鍒嗐?/p>
13.闅愯棌瀹炵幇緇嗚妭錛圚ide Implementation Details錛?/strong>
闅愯棌瀹炵幇緇嗚妭鍘熷垯錛屽綋鍏朵粬鍔熻兘閮ㄥ垎鍙戠敓鍙樺寲鏃訛紝鑳藉灝藉彲鑳介檷浣庡鍏朵粬緇勪歡鐨勫獎鍝嶃?/p>
14.榪背鐗規硶鍒欏張鍙綔鏈灝戠煡璇嗗師鍒?Law of Demeter)
璇ヤ唬鐮佸彧鍜屼笌鍏舵湁鐩存帴鍏崇郴鐨勯儴鍒嗚繛鎺ャ傦紙姣斿錛氳閮ㄥ垎緇ф壙鐨勭被錛屽寘鍚殑瀵硅薄錛屽弬鏁頒紶閫掔殑瀵硅薄絳夛級銆?/p>
15.閬垮厤榪囨棭浼樺寲(Avoid Premature Optimization)
闄ら潪浣犵殑浠g爜榪愯鐨勬瘮浣犳兂鍍忎腑鐨勮鎱紝鍚﹀垯鍒幓浼樺寲銆傚亣濡備綘鐪熺殑鎯充紭鍖栵紝灝卞繀欏誨厛鎯沖ソ濡備綍鐢ㄦ暟鎹瘉鏄庯紝瀹冪殑閫熷害鍙樺揩浜嗐?/p>
“榪囨棭鐨勪紭鍖栨槸涓鍒囩姜鎭剁殑鏍規簮”——Donald Knuth
16.浠g爜閲嶇敤鍘熷垯錛圕ode Reuse is Good錛?nbsp;
閲嶇敤浠g爜鑳芥彁楂樹唬鐮佺殑鍙鎬э紝緙╃煭寮鍙戞椂闂淬?/p>
17.鍏蟲敞鐐瑰垎紱伙紙Separation of Concerns錛?/strong>
涓嶅悓棰嗗煙鐨勫姛鑳斤紝搴旇鐢變笉鍚岀殑浠g爜鍜屾渶灝忛噸榪殑妯″潡緇勬垚銆?/p>
18.鎷ユ姳鏀瑰彉錛圗mbrace Change錛?/strong>
榪欐槸Kent Beck涓鏈功鐨勬爣棰橈紝鍚屾椂涔熻璁や負鏄瀬闄愮紪紼嬪拰鏁忔嵎鏂規硶鐨勫畻鏃ㄣ?/p>
璁稿鍏朵粬鍘熷垯閮芥槸鍩轟簬榪欎釜姒傚康鐨勶紝鍗充綘搴旇縐瀬闈㈠鍙樺寲銆備簨瀹炰笂錛屼竴浜涜緝鑰佺殑緙栫▼鍘熷垯濡傛渶灝忓寲鑰﹀悎鍘熷垯閮芥槸涓轟簡浣夸唬鐮佽兘澶熷鏄撳彉鍖栥傛棤璁轟綘鏄惁鏄釜鏋侀檺緙栫▼鑰咃紝鍩轟簬榪欎釜鍘熷垯鍘葷紪鍐欎唬鐮佷細璁╀綘鐨勫伐浣滃彉寰楁洿鏈夋剰涔夈?/p>
浣滆呯畝浠?/strong>錛欳hristopher Diggins鏄姞鎷垮ぇ涓浣嶆湁25騫寸紪紼嬬粡楠岀殑璧勬繁鎶鏈漢鍛橈紝鏇炬晥鍔涗簬Microsoft鍜孉utoDesk錛屽茍鍒涘姙榪囦袱瀹惰耽鍒╃殑浜掕仈緗戝叕鍙搞?/p> 浠栨槸銆奀++ Cookbook銆嬬殑浣滆呬箣涓錛屽茍鑷繁緙栧啓浜嗕竴闂ㄧ紪紼嬭璦Heron銆?br />
]]>
銆Singleton Pattern(鍗曚緥妯″紡)
銆鏀瑰杽鍏ㄥ眬鍙橀噺鍜屽懡鍚嶇┖闂寸殑鍐茬獊錛屽彲浠ヨ鏄竴縐嶆敼鑹簡鐨勫叏灞鍙橀噺銆傝繖縐嶄竴涓被鍙湁涓涓疄渚嬶紝涓旀彁渚涗竴涓闂叏灞鐐圭殑鏂瑰紡錛屾洿鍔犵伒媧葷殑淇濊瘉浜嗗疄渚嬬殑鍒涘緩鍜岃闂害鏉熴?br /> 鏈夋椂鍊欏湪浣跨敤綾葷殑鏃跺欙紝榪欎釜綾誨繀欏誨瓨鍦紝浣嗘槸鎴戜滑鍙堣姹傝繖涓被鍦ㄦ暣涓伐紼嬩腑鍙兘鏈変竴涓璞★紝鏃犺浠涔堟椂鍊欒皟鐢ㄩ兘鍙兘璋冪敤榪欏敮涓鐨勪竴涓璞★紝鎬庝箞鍋氬憿錛?br /> 榪欑妯″紡鐨勬牳蹇冭窡javaBean鏈夌偣綾諱技錛屼笉鍚屽湪浜庡崟渚嬫ā寮忚姹傚垱寤哄茍縐佹湁鍖栦竴涓璞★紝鍚屾椂縐佹湁鍖栨瀯閫犳柟娉曪紝閲嶅啓鏋勯犳柟娉曚嬌鍏惰繑鍥炶繖涓璞°備負浜嗚兘澶熶嬌鐢ㄨ繖涓璞★紝鎴戜滑鍦ㄥ叾涓垱寤轟竴涓潤鎬佺殑Get鏂規硶鐢ㄦ潵榪斿洖璇ュ璞°?br />
涓鑸殑鎴戜滑浼氱敤涓ょ鍗曚緥妯″紡鐨勬柟娉曪紝涓涓槸寤惰繜鍔犺澆錛屽張鍙噿姹夊紡錛屽彟涓涓槸闈炲歡榪熷姞杞斤紝鍙堢О楗挎睏寮忋傚尯鍒湪浜庡墠鑰呮槸鍦ㄨ皟鐢ㄧ殑鏃跺欐墠鐢熸垚瀵硅薄錛岃屽悗鑰呭垯鏄簨鍏堢敓鎴愬璞★紱鏂規硶鍖哄埆鍦ㄤ簬鏄惁鎶婄敓鎴愬璞℃斁鍏et鏂規硶錛堝彲浠ュ姞鍏ュ垽鏂鏋滆瀵硅薄涓嶅瓨鍦ㄥ氨new涓涓紝瀛樺湪鐨勮瘽灝辮繑鍥炶宸插瓨鍦ㄧ殑瀵硅薄錛夈?br /> 榪欑鎬濇兂鍦ㄥ緢澶氬湴鏂歸兘浼氫嬌鐢紝鐢ㄥ悓鏍風殑鎬濇兂鎴戜滑鍙互瑙e喅鏇村鐨勯棶棰樸?br />
23縐嶆ā寮忔兂浜嗚В鏇村鐨勮瘽鍙互鍘昏胺姝岀湅鐪嬨傛垜浠噸鐐逛笉鏄帉鎻″嚑縐嶆柟娉曪紝鑰屾槸椹鵑┉榪欑鎬濇兂錛岀伒媧諱嬌鐢ㄨ繖縐嶆柟娉曘傞珮鍐呰仛錛屼綆鑰﹀悎錛屽湪鍐欑▼搴忎箣鍓嶅氨瑕佸鏁翠釜榪囩▼浜嗚В寰堥忓交錛岃屼笉鏄竟鍐欒竟鎯崇┒绔熻鎬庝箞甯冨眬銆?br />