锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
http://dreamhead.blogbus.com/logs/14189175.html
浣滀負(fù)涓涓湁鐞嗘兂銆佹湁榪芥眰鐨勭▼搴忓憳錛屼綘鎴愬ぉ琚悇縐嶅悕璇嶅寘鍥寸潃錛屼綘瀵瑰叾涓竴涓彨鍋氭晱鎹風(fēng)殑涓滆タ鐗瑰埆鎰熷叴瓚o紝鍥犱負(fù)瀹冪壒鍒己璋冧漢鐨勪綔鐢紝榪欏惉鐫閮借鍋氱▼搴忓憳鐨勪綘鎰熷埌鑸掓湇銆備負(fù)浜?jiǎn)璁╄嚜宸辨棭鏃ユ晱鎹疯典h潵錛屼綘浠庝紬澶氱殑鏁忔嵎瀹炶返涓夋嫨浜?jiǎn)涓涓彨鍋氭祴璇曢┍鍔ㄥ紑鍙戯紙Test Driven Development錛孴DD錛夌殑浣滀負(fù)浣犵殑璧峰鐐廣傚洜涓哄畠瀵逛綘鍛ㄩ伃鐨勭幆澧冭姹傛槸鏈浣庣殑錛氬畠涓嶅儚緇撳閭f牱錛岃姹傚叾浠栦漢鍜屼綘涓璧峰悎浣滐紱涔熶笉鍍忛噰鐢⊿tory閭f牱鏀瑰彉浣犳墍鍦ㄥ洟闃熺殑鍋氫簨鏂瑰紡……浣犳墍闇瑕佸仛鐨勶紝鍙槸鍦ㄤ綘緙栧啓涓氬姟浠g爜涔嬪墠錛屾妸嫻嬭瘯鍏堝啓濂姐傝繖瀹屽叏鏄竴縐嶆鼎鐗╃粏鏃犲0鐨勫仛娉曪紝鏍規(guī)湰鏃犻渶鍛婅瘔浣犱箣澶栫殑浠諱綍浜恒傚氨鍦ㄥ埆浜哄繖紕岀殑鎵綽ug鏃訛紝浣犱究寮濮嬩韓鍙楁晱鎹峰甫緇欎綘鐨勫揩涔愪簡(jiǎn)銆傞『渚垮甫鏉ョ殑濂藉鏄紝涓嬫鍦ㄩ偅閲屽拰鍒漢浜夎鏁忔嵎鐨勬椂鍊欙紝浣犲彲浠ヤ互涓涓疄璺佃呯殑濮挎佸嚭鐜幫紝鑰屼笉鏄湪閭i噷淇″彛寮娌熾?br>
浣犱笉浼?xì)鎵撴棤鍑嗗涔嬩粭锛屼簬鏄Q屼綘閫氳浜?jiǎn)Kent Beck鐨勯偅鏈杽鍐屽瓙銆傞氳涔嬩笅錛屼綘瀵筎DD鏇存槸鍏呮弧浜?jiǎn)淇″績(jī)銆傚洜涓?#8220;綰⑩斺旂豢鈥斺旈噸鏋?#8221;鐨勬楠ゅ疄鍦ㄦ槸綆鍗曞緱浠や漢鍙戞寚銆傚ソ鍚э紒鎬昏岃█涔嬶紝浣犲凡緇忎俊蹇?jī)鍗伃懗鐨勫噯澶囧紑濮婽DD錛屾鍏ユ晱鎹風(fēng)殑搴峰簞澶ч亾浜?jiǎn)銆?br>
鐞嗘兂寰堢編濂斤紝鐜板疄寰堟畫閰楓?br>
褰撲綘鐫鎵嬪湪瀹為檯欏圭洰涓綋楠孴DD鐨勬椂鍊欙紝涓鍒囧彉寰楀茍涓嶅儚鏈鍒濈湅璧鋒潵鐨勯偅鏍風(fēng)編濂姐傝櫧鐒朵綘鍔姏鐨勫潥鎸佺潃TDD鐨勫師鍒欙紝浣嗕綘緇忓父灝變細(xì)鍙戠幇鏌愪簺涓滆タ涓嶅ソ嫻嬶紝姣斿浣犻亣鍒頒簡(jiǎn)鏁版嵁搴擄紝姣斿浣犻亣鍒頒簡(jiǎn)GUI錛屾瘮濡備綘閬囧埌浜?jiǎn)璁℃椂鍣ㄥQ圱imer錛夈傛晱鎹峰茍闈炴暀鏉★紝褰撴煇浜涗簨涓嶅彲涓虹殑鏃跺欙紝浣犲畬鍏ㄥ彲浠ヤ笉閭d箞鍧氭寔銆備簬鏄紝浣犲憡璇夎嚜宸憋紝涓嶅ソ嫻嬬殑涓滆タ鍙互涓嶆祴錛岃繖鏍鳳紝鑷沖皯浠庡績(jī)鐞嗕笂鏉ヨ錛屼綘瑙夊緱鑸掓湇澶氫簡(jiǎn)銆傞殢鐫宸ヤ綔鐨勭戶緇紝浣犲彂鐜幫紝浣犱笉鑳芥祴鐨勪笢瑗胯秺鏉ヨ秺澶氾紝鍗曞厓嫻嬭瘯鐨勮鐩栫巼闅忕潃寮鍙戠殑榪涜姝e湪閫愭笎闄嶄綆錛屼竴涓濇亹鎯ф秾涓婂績(jī)澶淬傚洖榪囧ご鏉ワ紝鍐嶅幓鐪婯ent Beck鐨勪功錛屼綘紿佺劧瑙夊緱錛屼綘浼間箮琚獥浜?jiǎn)锛屽洜湄?fù)Kent Beck鐨勪緥瀛愯矊浼煎叏閮芥槸閫昏緫錛屽鏋滃彧鏄昏緫錛屽綋鐒跺ソ嫻嬩簡(jiǎn)錛屼絾鐜板疄浠庢潵灝變笉鏄繖鏍楓?br>
闅鵑亾TDD鍙槸鐪嬩笂鍘誨緢緹庯紵
鏄劇劧錛屼綘涓嶆効鎰忓氨榪欐牱鏀懼純錛屾斁寮冧綘鑻﹀績(jī)瀛︽潵鐨勮蔣浠跺紑鍙戠綾嶏紝閭d簺浼犺涓殑楂樻墜鏋佸姏鎺ㄥ磭鐨凾DD蹇呯劧鏈変竴瀹氶亾鐞嗭紝TDD紜疄鑳藉璁╀綘鎰熻寰堝ソ錛氳兘嫻嬭瘯鐨勯偅閮ㄥ垎浠g爜紜疄鏋佸ぇ鐨勫寮轟簡(jiǎn)浣犲杞歡璐ㄩ噺鐨勪俊蹇?jī)锛岃屼笖鍑洪敊浜?jiǎn)涔熂嫯瀹炲ソ鎵惧Q屾瘡嬈′慨鏀逛唬鐮佷箣鍚庤繍琛屾祴璇曞嚭鐜扮殑緇挎潯涔熺‘瀹炶浣犺韓蹇?jī)鎰夋?zhèn)︺?br>
閭i棶棰樺埌搴曞嚭鍦ㄥ摢鍛紵浣犻櫡鍏ヤ簡(jiǎn)娌夋濄?br>
淇¢┈鐢辯及錛屼綘緲誨紑浜?jiǎn)鑷繁鍐櫂q囩殑浠g爜銆傜湅鐫鑷繁鍐欑殑榪欎簺浠g爜錛屼綘蹇界劧鎰忚瘑鍒頒竴涓棶棰橈紝鑷繁閬囧埌鐨勯棶棰樺茍涓嶅睘浜嶵DD錛岃屾槸灞炰簬鍗曞厓嫻嬭瘯銆傛濡備綘涔嬪墠鎵鎯沖埌鐨勯偅鏍鳳紝TDD鍋氭硶鏈韓鐨勭粨鏋滄槸璁╀綘鎰熷埌蹇箰鐨勩傚錛屼竴瀹氭槸鍗曞厓嫻嬭瘯鏈韓鍑轟簡(jiǎn)闂銆傞偅鍗曞厓嫻嬭瘯鍑轟簡(jiǎn)浠涔堥棶棰橈紝寰堟樉鐒?dòng)灱屼竴澶у爢涓嶈兘嫻嬭瘯鐨勯儴鍒嗚鍗曞厓嫻嬭瘯鍙樺緱寰堥毦鍐欙紝闄嶄綆浜?jiǎn)鍗曞厓娴嬭瘯鐨勮鐩栧害銆傞偅鏄笉鏄繖浼?xì)鏄竴涓棤瑙g殑闂鍛紵浣犳樉鐒朵笉鎰挎剰灝辨鏀懼純錛屾墍浠ワ紝欏虹潃榪欎釜鎬濊礬緇х畫鍚戝墠銆?br>
TDD涔嬫墍浠ヨ浣犲畨蹇?jī)锛屼富瑕佹槸姣弸啤缂栧啓浠g爜涔嬪悗锛寴q愯嫻嬭瘯浼?xì)鍑虹庮C竴涓豢鏉★紝鍛婅瘔浣犳祴璇曢氳繃銆傝繖鏍鳳紝浣犲彲浠ユ斁蹇?jī)澶ц儐鐨勫悜鍓嵕lх畫錛屽洜涓轟綘鐨勪唬鐮佸茍娌℃湁鐮村潖浠諱綍涓滆タ銆傜┒绔熸槸浠涔堣浣犳劅鍒頒笉瀹夛紝鏄劇劧鏄偅浜涙祴璇曟病鏈夎鐩栧埌鐨勪唬鐮併備綘鍙堜粩緇嗙炕鐪嬩簡(jiǎn)涓涓嬮偅浜涙病鏈夋祴璇曡鐩栫殑浠g爜錛屼綘鐨勬濊礬涓涓嬪瓙娓呮櫚璧鋒潵銆備箣鎵浠ヨ繖閮ㄥ垎璁╀綘涓嶅畨錛屽洜涓洪噷闈㈤櫎浜?jiǎn)閭d簺纭疄涓嶅ソ娴嬭瘯鐨勯儴鍒嗕箣澶栧Q岄噷闈㈣繕鏈変竴浜涢昏緫銆傚鏋滃彧鏄偅浜涚湡姝d笉濂芥祴璇曠殑閮ㄥ垎娌℃湁琚祴璇曡鐩栧埌錛屼綘浼?xì)瑙夊緱蹇?jī)閲岃繕鏈変竴浜涘畨鎱般備綘紜畾浜?jiǎn)锛岀湡姝d娇浣犱笉瀹夌殑灏辨槸涓庝笉濂綃箣璇曠殑浠g爜鍏卞瓨浜$殑杩欎簺閫昏緫閮ㄥ垎銆?br>
濡傛灉嫻嬭瘯鍙互瑕嗙洊鍒拌繖浜涢昏緫鐨勯儴鍒嗭紝鑷沖皯浠庢劅鎯呬笂鏉ヨ錛屽氨鍙互鎺ュ彈浜?jiǎn)銆傞偅鎬庝箞鎵嶈兘璁╄繖浜涢儴鍒嗚嫻嬭瘯瑕嗙洊鍒板憿錛熶綘浠旂粏瑙傚療鐫閭d簺娌℃湁嫻嬭瘯鐨勪唬鐮侊紝濡傛灉榪欐牱鍋氾紝榪欎釜閮ㄥ垎灝卞彲浠ユ祴璇曚簡(jiǎn)錛屽鏋滈偅鏍峰仛錛岄偅涓儴鍒嗕篃鍙互嫻嬭瘯浜?jiǎn)锛屼竴鏉ヤ簩鍘伙紝榪欎簺璨屼技涓嶅彲嫻嬭瘯鐨勪唬鐮佸彲浠ュ垎瑙e嚭璁稿鍙互嫻嬭瘯鐨勯儴鍒嗐?br>
浣犵殑蹇?jī)鎯呬竴涓嬪瓙濂戒簡(jiǎn)璁稿錛屽洜涓鴻繖涔堝仛緇堜簬鍙互璁╂祴璇曠殑瑕嗙洊搴﹁揪鍒拌浣犲績(jī)鐞嗕笂鍙互鎺ュ彈鐨勮寖鍥淬備笉榪囷紝鏂扮殑闂涔熼殢涔嬭屾潵銆傛垜鍦ㄥ仛浠涔堬紵鎷嗘潵鍒嗗幓錛岃繖涓嶅氨鏄璁″悧錛熸庝箞璧板埌榪欓噷鏉ヤ簡(jiǎn)銆傛垜涓嶆槸鍦ㄥ垎鏋愬崟鍏冩祴璇曠殑闂鍚楋紵瀵逛簡(jiǎn)錛屾垜鏈鍒濈殑闂鏄疶DD錛屾庝箞涓璺窇鍒拌璁′笂鏉ヤ簡(jiǎn)錛?br>
TDD錛熻璁★紵
浣犵獊鐒跺彂瑙夎嚜宸卞TDD鐨勭悊瑙f湁涓浜涘亸宸俆DD錛屽茍涓嶄唬琛ㄤ笉闇瑕佽璁°傝榪囧緢澶氫功鐨勪綘紿佺劧鎯寵搗浜?jiǎn)Robert Martin閭f湰钁楀悕鐨勩婃晱鎹瘋蔣浠跺紑鍙戙嬶紝涓婇潰鏈変竴涓叧浜庢暟鎹簱璁塊棶鐨勪緥瀛愩傞偅涓緥瀛愰噷闈紝鍓嶅悗涓や釜鐗堟湰鐨勫樊寮傛濂藉氨鏄冭檻璁捐鐨勭粨鏋溿傞氬父錛屽湪璁捐涓冭檻嫻嬭瘯錛屼細(xì)寰堝鏄撴壘鍒拌璁′腑鍍電‖鐨勯儴鍒嗭紝璁╃▼搴忔洿鍔犵伒媧匯傚啀榪涗竴姝ワ紝濡傛灉鍦ㄥ紑濮嬪姩鎵嬩箣鍓嶏紝紼嶅井榪涜涓浜涜璁★紝榪欎簺闂榪樻槸鍙兘娉ㄦ剰寰楀埌鐨勩備綘紿佺劧瑙夊緱錛屾鏄洜涓篢DD鏈韓榪囦簬寮鴻皟嫻嬭瘯鐨勪環(huán)鍊兼墍鍦紝璁╀綘蹇界暐杞歡寮鍙戜腑寰堥噸瑕佺殑閮ㄥ垎錛氳璁°?br>
鎬濊礬涓涓嬪瓙娓呮璧鋒潵錛孴DD鍏跺疄涓嶅彧鏄?#8220;綰⑩斺旂豢鈥斺旈噸鏋?#8221;錛屽畠榪樻槸涓庤璁$浉鍏崇殑錛氬湪鍔ㄦ墜涔嬪墠錛岃繕鏄鏈変竴瀹氱殑璁捐錛岃屼笖錛屽湪璁捐涓鑰冭檻嫻嬭瘯鐨勯棶棰樸傜粓浜庤В寮浜?jiǎn)蹇?jī)涓殑鍥版儜錛岀幇鍦ㄧ殑浣狅紝瀵逛簬TDD鏈変簡(jiǎn)涓涓柊鐨勮璇嗭紝铏界劧榪欎釜璁よ瘑涓嶈寰楁槸浠涔堢粓鏋佺湡鐞嗭紝浣嗚嚦灝戞槸閫氳繃鑷繁鐨勬濊冨緱鏉ョ殑錛岃繖璁╀綘鏇村姞鐩鎬俊瀹炶返鍑虹湡鐭ョ殑閬撶悊銆?/p>
鐞嗘竻鎬濊礬鍚庯紝浣犳洿鍔犲潥淇DD鏈韓鐨勪環(huán)鍊兼墍鍦紝涔熷潥瀹氫簡(jiǎn)鍦ㄦ棩鍚庡紑鍙戜腑緇х畫浣跨敤TDD鐨勫康澶達(dá)紝褰撶劧錛岀洰鍏夎繙澶х殑浣犲凡緇忕洴涓婁簡(jiǎn)鍏跺畠鐨勬晱鎹峰疄璺點(diǎn)?/p>