锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲精品岁国产微拍精品,亚洲国产精品嫩草影院,亚洲综合偷自成人网第页色http://www.tkk7.com/mengqing/zh-cnSat, 10 May 2025 11:27:06 GMTSat, 10 May 2025 11:27:06 GMT60java eclipse涓殑閲嶆瀯http://www.tkk7.com/mengqing/archive/2011/11/15/363795.html姊︽櫞姊︽櫞Tue, 15 Nov 2011 02:30:00 GMThttp://www.tkk7.com/mengqing/archive/2011/11/15/363795.htmlhttp://www.tkk7.com/mengqing/comments/363795.htmlhttp://www.tkk7.com/mengqing/archive/2011/11/15/363795.html#Feedback0http://www.tkk7.com/mengqing/comments/commentRss/363795.htmlhttp://www.tkk7.com/mengqing/services/trackbacks/363795.htmleclipse閲嶆瀯璇﹁В

鍗氬鍒嗙被錛?/span>

eclipserefactoring

閲嶆瀯鏄杞歡鍐呴儴緇撴瀯鐨勪竴縐嶈皟鏁達紝鐩殑鏄湪涓嶆敼鍙樿蔣浠惰涓虹殑鍓嶆彁涓嬶紝鎻愰珮鍏跺彲鐞嗚В鎬э紝闄嶄綆鍏朵慨鏀規垚鏈傚紑鍙戜漢鍛樺彲浠ヤ嬌鐢ㄤ竴緋誨垪閲嶆瀯鍑嗗垯錛屽湪涓嶆敼鍙樿蔣浠惰涓虹殑鍓嶆彁涓嬶紝璋冩暣杞歡鐨勭粨鏋勩?

鏈夊緢澶氱鍘熷洜錛屽紑鍙戜漢鍛樺簲璇ラ噸鏋勪唬鐮侊紝渚嬪涔嬪墠鐨勫紑鍙戜漢鍛樹唬鐮佸啓寰楀緢鐑傘佽嚜宸變互鍓嶈璁℃椂鏈夌己闄楓侀渶姹傚彉鏇撮渶瑕佹坊鍔犱竴浜涙柊鐨勫姛鑳芥垨淇敼鍘熸湁鍔熻兘絳夌瓑銆侻artin Fowler鍦ㄥ叾钁楀悕鐨?lt;<Refactoring—Improving the Design of Existing Code>>涓涔︿腑璋堝埌浜嗕負浣曢噸鏋勭殑鍑犵偣鍘熷洜錛?

1. 閲嶆瀯鍙互鏀硅繘杞歡璁捐

濡傛灉涓嶈繘琛岄噸鏋勶紝紼嬪簭鐨勮璁′細鍙樺緱瓚婃潵瓚婄碂緋曘傞氬父紼嬪簭鍛樺彧涓虹煭鏈熺殑鐩殑錛屾垨鑰呭湪娌℃湁瀹屽叏鐞嗚В鏁翠綋璁捐鐨勬椂鍊欙紝灝卞紑濮嬩慨鏀逛唬鐮侊紝榪欐牱紼嬪簭灝嗕細閫愭笎澶卞幓鑷繁鐨勭粨鏋勶紝紼嬪簭鍛樹篃鎰堟潵鎰堥毦閫氳繃闃呰婧愮爜鐞嗚В鍘熸湰璁捐錛岀浉淇″姝ゆ瘡涓涓紑鍙戜漢鍛橀兘娣辨湁浣撲細銆?

浠g爜緇撴瀯鐨勬祦澶辨槸绱Н鎬х殑錛屾剤闅劇湅鍑轟唬鐮佹墍浠h〃鐨勬剰鎬濓紝灝辮秺闅句繚鎶ゅ叾涓殑璁捐錛屼簬鏄璁′篃灝嗗彉寰楄秺鏉ヨ秺緋熺硶錛岀粡甯告ч噸鏋勫彲浠ュ府鍔╃淮鎸佽璁¤鏈夌殑褰㈡併?

2. 閲嶆瀯浣胯蔣浠舵洿鏄撹鐞嗚В

寰堝寮鍙戜漢鍛樿涓轟唬鐮佸彧瑕佽兘澶熻繍琛岃搗鏉ュ氨鍙互浜嗭紝絎旇呭垰寮濮嬪仛寮鍙戠殑鏃跺欎篃鏄繖涔堣涓虹殑錛屼篃鍐欒繃寰堝鐨勫瀮鍦句唬鐮侊紝涔熷洜姝ゅ悆浜嗕笉灝戣嫤澶淬?

涔熻鏈変簺浜哄彲鑳戒細璁や負鑷繁鍙兘涓嶄箙灝變細紱誨紑鎵鍦ㄧ殑鑱屼綅錛屼笉蹇呭湪鎰忎唬鐮佺殑璐ㄩ噺錛屼絾浣滀負涓涓紑鍙戜漢鍛樻潵璇達紝鍐欏嚭婕備寒鐨勪唬鐮佹槸鏈鍩烘湰鐨勭礌璐ㄣ?

鍦ㄨ蔣浠剁殑涓嶆柇淇敼榪囩▼涓紝浠g爜鐨勫彲璇繪ц秺鏉ヨ秺宸篃鏄細鎱㈡參绱Н鐨勶紝浣嗚繖涓嶈绱э紝鍙璁板緱鎸佺畫閲嶆瀯錛屽氨鑳戒嬌鑷繁鐨勪唬鐮佹洿瀹規槗琚悊瑙c?

3. 閲嶆瀯鍙互鍗忓姪鎵懼埌Bugs

瀵逛唬鐮佺殑鐞嗚В錛屽彲浠ユ洿瀹規槗鎵懼埌bug錛屽湪閲嶆瀯鐨勫悓鏃訛紝涔熻兘澶熸洿濂界殑鐞嗚В浠g爜鍙婂叾琛屼負錛屼粠鑰岄氳繃閲嶆瀯鑳藉甯姪寮鍙戜漢鍛樺啓鍑烘洿寮哄.鐨勪唬鐮併?

4. 閲嶆瀯鍙互鎻愰珮緙栫▼鐨勯熷害

鑹ソ鐨勮璁℃槸蹇熻蔣浠跺紑鍙戠殑鏍規湰錛屽鏋滄病鏈夎壇濂界殑璁捐錛屼篃璁稿紑濮嬬殑涓孌墊椂闂村紑鍙戜漢鍛樼殑榪涘睍榪呴燂紝浣嗘槸鎭跺姡鐨勮璁″緢蹇氨浼氫嬌寮鍙戦熷害鎱笅鏉ャ備篃璁告妸鏃墮棿鑺卞湪璋冭瘯涓婄殑鏃墮棿浼氳秺鏉ヨ秺澶氾紝淇敼鐨勬椂闂翠細瓚婃潵瓚婇暱錛岃屼笖榪欎細鏄竴涓伓鎬х殑寰幆銆?
鑹ソ鐨勮璁℃槸緇存寔杞歡寮鍙戦熷害鐨勬牴鏈紝閲嶆瀯鍙互甯姪寮鍙戜漢鍛樻洿蹇熷湴寮鍙戣蔣浠訛紝鍥犱負瀹冭兘澶熼樆姝㈢郴緇熺殑璁捐鍙樿川錛岃兘澶熸彁楂樹唬鐮佺殑鍙鎬с?

浣跨敤Eclipse榪涜浠g爜閲嶆瀯

閲嶆瀯鏄蔣浠跺紑鍙戣繃紼嬩腑淇濊瘉浠g爜璐ㄩ噺闈炲父閲嶈鐨勬墜孌碉紝鑰屾墜鍔ㄨ繘琛岄噸鏋勪唬鐮佺殑璇濓紝寰堝鏄撳紩鍏ヤ竴浜涗綆綰ч敊璇紙渚嬪錛屽崟璇嶆嫾鍐欓敊璇級錛屼粠鑰屽鑷存氮璐瑰ぇ閲忎笉蹇呰鐨勬椂闂淬侲clipse涓洪噸鏋勬彁渚涗簡寰堝己澶х殑鏀寔錛屽緢澶х▼搴︿笂鐢ㄦ埛涓嶅繀涓洪噸鏋勭殑絎旇鑰屽啀鐑︽伡銆?
鍦‥clipse涓紝鍙互浣跨敤JDT鎻愪緵鐨勯噸鏋勫姛鑳藉Java欏圭洰銆佺被鍜屽叾鎴愬憳榪涜閲嶆瀯錛屾墍鏈夎繖浜涜閲嶆瀯鐨勯儴鍒嗛兘鍙互鐪嬫垚涓涓狫DT鑳借瘑鍒殑Java鍏冪礌銆傝鎵ц閲嶆瀯錛岄鍏堝繀欏婚夋嫨鐩稿簲閲嶆瀯鐨凧ava鍏冪礌錛屼竴浜涢噸鏋勬槸閫傚悎浠諱綍Java鍏冪礌鐨勶紝鑰屼竴閮ㄥ垎閲嶆瀯鍙傚悎鐗瑰畾鐨凧ava鍏冪礌錛屽嚑涔庢墍鏈夌殑閲嶆瀯閮借兘澶熷湪閲嶆瀯瀵硅瘽妗嗕腑鐪嬪埌棰勮鐨勬晥鏋溿?

瑕佷嬌鐢‥clipse鐨勯噸鏋勫姛鑳斤紝鍙互鍏堥夋嫨鐩稿簲鐨凧ava鍏冪礌錛圝ava宸ョ▼涓殑璧勬簮錛屽寘鎷伐紼嬨佹枃浠躲佹柟娉曘佸彉閲忕瓑錛夛紝閫氳繃鍙抽敭鑿滃崟閫夋嫨Refactor鑿滃崟涓嬬殑閲嶆瀯鍔熻兘錛屽鍥?鎵紺恒?




鍥? 閫夋嫨閲嶆瀯鑿滃崟


鍦‥clipse涓紝鍙互綆鍗曠殑鎶婇噸鏋勫垎涓虹粨鏋勬ч噸鏋勩佺被綰у埆閲嶆瀯鍜岀被鍐呴儴閲嶆瀯錛屾瘡縐嶇被鍨嬬殑閲嶆瀯鍙堝垎鍒寘鍚簡涓浜涘叿浣撶殑瀹炵幇錛屾帴涓嬫潵灝嗗垎鍒粙緇岴clipse濡備綍瀵笿ava鍏冪礌榪涜閲嶆瀯銆?

鎻愮ず錛氬湪JDT鍙瘑鍒殑鑼冨洿鍐咃紝鍙互璁や負宸ョ▼涓祫婧愰兘鏄疛ava鍏冪礌錛屽寘鎷琂ava鏂囦歡鍚嶃佺被銆佹柟娉曘佸彉閲忕瓑銆?

緇撴瀯鎬ч噸鏋?

緇撴瀯鎬ч噸鏋勬秹鍙婂埌JAVA鍏冪礌鐨勭墿鐞嗙粨鏋勭殑鏀瑰彉錛屽寘鎷?#8220;Rename”銆?#8220;Move”銆?#8220;Change Method Signature”銆?#8220;Convert Anonymous Class to Nested”鍜?#8220;Move Member Type to New File”錛屼笅闈㈠皢涓涓浠嬬粛榪欎簺閲嶆瀯鍦‥clipse涓殑瀹炵幇銆?

1. Rename

Rename閲嶆瀯鐨勫姛鑳藉氨鏄噸鍛藉悕Java鍏冪礌銆傝櫧鐒跺彲浠ラ氳繃鎵嬪姩淇敼鏂囦歡鐨勬枃浠跺悕鎴栧叾瀹僇ava鍏冪礌鐨勫悕縐幫紝浣嗚繖縐嶆柟寮忎笉浼氭洿鏂頒笌姝ava鍏冪礌鐩稿叧鑱旂殑寮曠敤錛岀敤鎴峰繀欏繪墜鍔ㄦ煡鎵懼拰姝ava鍏冪礌鐩稿叧鐨勪綅緗紝鐒跺悗榪涜鎵嬪姩淇敼銆傞氳繃鎵嬪姩淇敼鍚嶇О鐨勬柟寮忥紝閫犳垚絎旇鐨勫彲鑳芥т細澶お澧炲姞銆傞氳繃Eclipse鎻愪緵鐨凴ename鐨勫姛鑳斤紝Eclipse浼氳嚜鍔ㄥ畬鎴愭洿鏂扮浉鍏沖紩鐢ㄧ殑鎿嶄綔銆?
褰揓ava鍏冪礌鐨勫懡鍚嶄笉娓呮櫚鎴栧姛鑳藉彂鐢熸敼鍙樼殑鏃訛紝涓轟簡淇濇寔浠g爜鐨勫彲璇繪э紝鍙互閫氳繃Eclipse鐨勯噸鏋勫姛鑳介噸鍛藉悕Java鍏冪礌銆傞夋嫨鐩稿簲鐨凧ava鍏冪礌錛岄夋嫨鍙抽敭Refactor鑿滃崟涓嬬殑Rename鑿滃崟錛屽彲浠ュ褰撳墠閫夋嫨鐨勫厓绱犺繘琛岄噸鍛藉悕錛屽湪寮瑰嚭鐨勯噸鍛藉悕瀵硅瘽妗嗕腑淇敼鐩稿簲鐨勫厓绱犲悕縐板嵆鍙紝渚嬪淇敼涓涓寘鐨勯噸鍛藉悕錛屽鍥?鎵紺恒?




鍥? Rename瀵硅瘽妗?


瑕佷慨鏀瑰寘鍚嶇殑鍚屾椂錛屽彲浠ラ夋嫨鏄惁鏇存柊寮曠敤鍜屾洿鏂板瓙鐩綍錛岀敋鑷蟲槸闈濲ava鏂囦歡涔熷彲浠ラ夋嫨鎬х殑鏇存柊銆傞夋嫨Preview鎸夐挳鍙互棰勮閲嶅懡鍚嶉噸鏋勫悗鐨勬晥鏋滐紝濡傚浘3鎵紺恒?




鍥? 棰勮閲嶅懡鍚嶅寘鍚?

鍙互鏌ョ湅棰勮鐨勫唴瀹規槸鍚︿竴鑷達紝紜鏄惁瑕佽繘琛岄噸鍛藉悕鐨勯噸鏋勩傚彲浠ヨ繘琛岄噸鍛藉悕鐨凧ava鍏冪礌鏈塉ava欏圭洰銆丣ava鏂囦歡銆佸寘銆佹柟娉曞拰灞炴у瓧孌電瓑銆?

鎻愮ず錛氶潪Java欏圭洰鍜孞ava鏂囦歡絳変篃鍙互閫氳繃閲嶆瀯鑿滃崟鐨凴ename榪涜閲嶅懡鍚嶃?

2. Move

Move鐨勯噸鏋勫拰Rename鐨勯噸鏋勭被浼鹼紝瀹冨彲浠ユ妸涓涓狫ava鍏冪礌浠庝竴涓湴鏂圭Щ鍔ㄥ埌鍙︿竴涓湴鏂癸紝Move鐨勯噸鏋勪富瑕佺敤鏉ョЩ鍔ㄤ竴涓被鍒頒笉鍚岀殑鍖呬笅銆傞鍏堥変腑涓涓狫ava鏂囦歡錛岄夋嫨Refactor鑿滃崟涓嬬殑Move鑿滃崟欏癸紝寮瑰嚭Move鐨勯噸鏋勫璇濇錛屽鍥?鎵紺恒?



鍥? Move瀵硅瘽妗?


鍙互閫夋嫨鏄惁鏇存柊寮曠敤錛岃瀹氱Щ鍔ㄦ枃浠墮噸鏋勭殑涓浜涘弬鏁般?

鎻愮ず錛氫篃鍙互閫氳繃鎷栧姩鐨勬柟寮忔妸涓涓枃浠朵粠涓涓寘縐誨姩鍒板彟涓涓寘錛屽疄鐜扮Щ鍔ㄦ枃浠剁殑閲嶆瀯銆?

3. Change Method Signature

“Change Method Signature”閲嶆瀯鐨勫姛鑳芥槸鏀瑰彉鏂規硶鐨勫畾涔夛紝渚嬪鏀瑰彉鏂規硶鐨勫弬鏁板悕縐般佺被鍨嬪拰涓暟銆佽繑鍥炲肩殑綾誨瀷錛屾柟娉曠殑鍙鎬т互鍙婃柟娉曠殑鍚嶇О絳夈?

瑕佹敼鍙樻柟娉曠殑瀹氫箟錛屽彲浠ュ厛閫夋嫨鏂規硶錛岄氳繃鍙抽敭鑿滃崟閫夋嫨Refactor鑿滃崟鐨?#8220;Change Method Signature”瀛愯彍鍗曢」錛屽脊鍑?#8220;Change Method Signature”瀵硅瘽妗嗭紝濡傚浘5鎵紺恒?




鍥? “Change Method Signature”瀵硅瘽妗?


鍙互閫氳繃“Change Method Signature”瀵硅瘽妗嗘敼鍙樻柟娉曠殑鍙傛暟鍚嶇О銆佺被鍨嬪拰涓暟銆佽繑鍥炲肩殑綾誨瀷錛屾柟娉曠殑鍙鎬т互鍙婃柟娉曞悕縐扮瓑銆?

4. Convert Anonymous Class to Nested

“Convert Anonymous Class to Nested”閲嶆瀯鐨勫姛鑳芥槸鎶婂尶鍚嶇被鏀規垚鍐呴儴綾伙紝榪欐牱鍚屼竴涓被鐨勫叾瀹冮儴鍒嗕篃鍙互鍏變韓姝ょ被浜嗐?
渚嬪鏈変緥紼?鎵紺虹殑綾匯?

渚嬬▼1 KeyListenerExample.java

public class KeyListenerExample { Display display; Shell shell; KeyListenerExample() { display = new Display(); shell = new Shell(display); shell.setSize(250, 200); shell.setText("A KeyListener Example"); Text text = new Text(shell, SWT.BORDER); text.setBounds(50, 50, 100, 20); text.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) { System.out.println("key Pressed -" + e.character); } public void keyReleased(KeyEvent e) { System.out.println("key Released -" + e.character); } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } public static void main(String[] args) { new KeyListenerExample(); } }

鍦↘eyListenerExample綾繪湁涓涓尶鍚嶇被錛屽疄鐜頒簡KeyListener鎺ュ彛錛屽彲浠ユ妸榪欎釜鍖垮悕綾繪敼鎴愬唴閮ㄧ被錛岄鍏堥夋嫨鍖垮悕綾伙紝鍙抽敭閫夋嫨Refactor鐨?#8220;Convert Anonymous Class to Nested”鑿滃崟錛岃緭鍏ュ唴閮ㄧ被鐨勫悕縐幫紝濡傚浘6鎵紺恒?




鍥? “Convert Anonymous Class to Nested”瀵硅瘽妗?


閲嶆瀯鍚庣殑緇撴灉鏄疎clipse涓烘鍒涘緩浜嗕竴涓唴閮ㄧ被錛屽悕縐頒負TestKeyListener錛岄噸鏋勫悗鐨勪唬鐮佸渚嬬▼2鎵紺恒?
渚嬬▼2 閲嶆瀯鍚庣殑KeyListenerExample.java

public class KeyListenerExample { private final class TestKeyListener implements KeyListener { public void keyPressed(KeyEvent e) { System.out.println("key Pressed -" + e.character); } public void keyReleased(KeyEvent e) { System.out.println("key Released -" + e.character); } } Display display; Shell shell; KeyListenerExample() { display = new Display(); shell = new Shell(display); shell.setSize(250, 200); shell.setText("A KeyListener Example"); Text text = new Text(shell, SWT.BORDER); text.setBounds(50, 50, 100, 20); text.addKeyListener(new TestKeyListener()); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } public static void main(String[] args) { new KeyListenerExample(); } }

涔熷彲浠ラ氳繃“Convert Anonymous Class to Nested”瀵硅瘽妗嗗畾涔夋柊鐢熸垚鐨勫唴閮ㄧ被鐨勫彲璁塊棶鎬с?

5. Move Member Type to Top Level

閫氳繃“Move Member Type to Top Level”鐨勯噸鏋勬柟寮忥紝鍙互鎶婂唴閮ㄧ被鏀規垚闈炲唴閮ㄧ被錛屽茍涓旈噸鏂板垱寤轟竴涓柊鐨勬枃浠訛紝榪欐牱鍏跺畠鐨勭被灝卞彲浠ュ叡浜綾匯?

渚嬬▼2鍒涘緩浜嗕竴涓唴閮ㄧ被TestKeyListener錛岀幇鍦ㄥ彲浠ラ氳繃“Move Member Type to Top Level”閲嶆瀯鐨勬柟寮忥紝鎶奣estKeyListener鏀懼叆涓涓崟鐙殑綾諱腑銆傞鍏堥夋嫨TestKeyListener綾伙紝浠庡彸閿彍鍗昍efactor涓夋嫨“Move Member Type to Top Level”錛屾墦寮“Move Member Type to Top Level”瀵硅瘽妗嗭紝濡傚浘7鎵紺恒?




鍥? “Move Member Type to Top Level”瀵硅瘽妗?


閫氳繃涓婇潰“Move Member Type to Top Level”閲嶆瀯錛屽彲浠ユ妸鍐呴儴綾繪敼鎴愰潪鍐呴儴綾匯?

鎻愮ず錛氭湁浜涙椂鍊欙紝閲嶆瀯騫朵笉鏄竴姝ュ畬鎴愮殑錛屽彲浠ヤ竴姝ヤ竴姝ラ噸鏋勶紝渚嬪錛岄鍏堟妸鍖垮悕綾繪敼鎴愬唴閮ㄧ被錛屽啀鎺ョ潃鎶婂唴閮ㄧ被鏀規垚闈炲唴閮ㄧ被銆?


綾葷駭鍒噸鏋?

綾葷駭鍒噸鏋勬湁濡備笅涓浜涳細

1. Push Down

“Push Down”閲嶆瀯鍔熻兘鏄妸鐖剁被鐨勬柟娉曞拰灞炴хЩ鍔ㄥ埌鎵鏈夌殑瀛愮被涓紝鐖剁被鐨勬柟娉曞彲浠ラ夋嫨鎬х殑淇濈暀鎶借薄鏂規硶銆傞鍏堥夋嫨鐖剁被錛屽彸閿夋嫨Refactor鑿滃崟鐨?#8220;Push Down”鑿滃崟欏癸紝鍙互閫氳繃“Push Down”瀵硅瘽妗嗛夋嫨閲嶆瀯錛屽鍥?鎵紺恒?




鍥? “Push Down”瀵硅瘽妗?


“Push Down”閲嶆瀯鍦ㄩ噸鏂拌璁$被鐨勬椂鍊欐槸闈炲父鏈夌敤鐨勶紝瀹冨彲浠ユ瘮杈冩湁杈冪殑鏀瑰杽綾葷殑緇ф壙鍏崇郴錛屾竻妤氬畾涔夌被鐨勮涓恒?

2. Pull Up

“Pull Up”閲嶆瀯鍜?#8220;Push Down”閲嶆瀯姝eソ鐩稿弽錛屽畠鐨勪綔鐢ㄦ槸鎶婃柟娉曞拰灞炴хЩ鍔ㄥ埌鍏剁埗綾諱腑鍘匯傞夋嫨闇瑕侀噸鏋勭殑瀛愮被錛屼粠鍙抽敭鑿滃崟閫夋嫨Refactor鑿滃崟鐨?#8220;Pull up”鑿滃崟欏癸紝閫氳繃“Pull Up”瀵硅瘽妗嗚繘琛岄噸鏋勶紝濡傚浘9鎵紺恒?




鍥? “Pull Up”瀵硅瘽妗?


鎻愮ず錛?#8220;Pull Up”閲嶆瀯鍜?#8220;Push Down”閲嶆瀯鍚庡彲鑳戒細鍑洪敊錛屽湪浣跨敤姝ら噸鏋勭殑鍚屾椂錛屽簲璇ュ厛寮勬竻妤氭煇浜涙柟娉曚腑鏄惁鏈夊紩鐢ㄥ埌鍏跺畠鏂規硶鎴栧睘鎬с?

3. Extract Interface

“Extract Interface”閲嶆瀯鑳藉浠庝竴涓凡瀛樺湪鐨勭被涓彁鍙栨帴鍙o紝瀹冨彲浠ヤ粠鏌愪釜綾諱腑閫夋嫨鏂規硶錛屾妸榪欎簺鏂規硶鎻愬彇鍒頒竴涓崟鐙殑鎺ュ彛涓傞夋嫨鎻愬彇鎺ュ彛鐨勭被錛屽彸閿夋嫨Refactor鑿滃崟鐨?#8220;Extract Interface”鑿滃崟欏癸紝鎵撳紑“Extract Interface”瀵硅瘽妗嗭紝濡傚浘10鎵紺恒?




鍥?0 “Extract Interface”瀵硅瘽妗?


鍗曞厓OK鎸夐挳錛屽皢浼氭彁鍙朤estInterface鐨勬帴鍙o紝鎻愬彇鎺ュ彛鍚庯紝褰撳墠閫夋嫨鐨勭被灝嗕細瀹炵幇姝ゆ帴鍙c?

鎻愮ず錛氬彧鏈夊叕鐢ㄦ柟娉曟墠鍙互琚彁鍙栦負鎺ュ彛鐨勬柟娉曘?

4. Generalize Declared Type

“Generalize Declared Type”閲嶆瀯鑳藉鏀瑰彉鍙橀噺銆佸弬鏁般佸睘鎬т互鍙婂嚱鏁扮殑榪斿洖鍊肩殑綾誨瀷錛屽彲浠ユ妸榪欎簺綾誨瀷鏀規垚鍏剁埗綾葷殑綾誨瀷銆傚湪Refactor鑿滃崟涓夋嫨“Generalize Declared Type”錛屽鍥?1鎵紺恒?




鍥?1 “Generalize Declared Type”瀵硅瘽妗?


鍗曞嚮OK鎸夐挳錛岃兘澶熸妸澹版槑鐨勭被鍨嬫敼鎴愬綋瀵硅瘽妗嗕腑閫夋嫨鐨勭被鍨嬨?

5. User Supertype Where Possible

“User Supertype Where Possible”閲嶆瀯鑳藉鐢ㄦ煇涓涓被鐨勭埗綾葷殑綾誨瀷鏇挎崲褰撳墠綾葷殑綾誨瀷錛岄夋嫨闇瑕佽鏇挎崲寮曠敤鐨勭被銆傚湪Refactor鑿滃崟涓夋嫨“User Supertype Where Possible”鎵撳紑“User Supertype Where Possible”瀵硅瘽妗嗭紝濡傚浘12鎵紺恒?




鍥?2 “User Supertype Where Possible”瀵硅瘽妗?


“Generalize Declared Type”閲嶆瀯鍜?#8220;User Supertype Where Possible”閲嶆瀯鍦ㄩ潰鍚戞帴鍙g紪紼嬫柟闈㈡槸寰堟湁鐢ㄧ殑錛屽彲浠ユ妸寮曠敤鐨勫璞″敖鍙兘鐢ㄦ帴鍙h繘琛屽疄鐜般?

鎻愮ず錛?#8220;User Supertype Where Possible”閲嶆瀯灝嗘浛鎹㈠叾瀹冪被涓殑寮曠敤錛岃鎯崇湅鍒伴噸鏋勭殑鏁堟灉錛屽簲璇ユ壘鍒板叾瀹冪被寮曠敤鐨勪綅緗紝姝ゆ搷浣滀笉浼氫慨鏀瑰綋鍓嶆枃浠躲?


綾誨唴閮ㄩ噸鏋?

綾誨唴閮ㄩ噸鏋勬湁濡備笅涓浜涳細

1. Inline

“Inline”閲嶆瀯鑳界敤鍑芥暟鐨勫唴瀹規浛鎹㈡帀鍑芥暟鐨勫紩鐢ㄣ傞鍏堥夋嫨鍑芥暟鐨勫紩鐢紝鍦≧efactor鑿滃崟涓夋嫨“Inline”鎵撳紑“Inline”瀵硅瘽妗嗭紝濡傚浘13鎵紺恒?



鍥?3 “Inline”瀵硅瘽妗?


鍗曞嚮紜畾鎸夐挳錛孍clipse灝嗕細鐢ㄦ柟娉曞疄鐜扮殑閮ㄥ垎鏇挎崲寮曠敤鐨勯儴鍒嗭紝鍗沖綋鍓嶄笉閲囩敤鏂規硶璋冪敤鐨勬柟寮忚繘琛屾搷浣溿備篃鍙互閫夋嫨“All invocations”鍜?#8220;Delete method declaration”錛孍clipse浼氭浛鎹㈡帀鎵鏈夊紩鐢ㄦ柟娉曠殑浣嶇疆錛屽茍涓斿垹闄ゆ柟娉曘?

鎻愮ず錛欼nline浼氱敤鏂規硶鐨勫疄鐜伴儴鍒嗘浛鎹㈡墍鏈夎皟鐢ㄦ柟娉曠殑鍦版柟銆?

2. Extract Method

“Extract Method”閲嶆瀯鍜?#8220;Inline”閲嶆瀯鐩稿弽錛屽畠鑳藉浠庡啑闀跨殑鏂規硶涓彁鍙栧皬鐨勬柟娉曪紝鎶婂ぇ鐨勬柟娉曞垎瑙f垚澶氫釜灝忔柟娉曟潵瀹炵幇錛岄氳繃姝ら噸鏋勮兘澶熶嬌浠g爜鐪嬩笂鍘繪洿綆鍗曟紓浜紝涔熷緢澶х▼搴︿笂鎻愰珮浠g爜鐨勫鐢ㄦс傚彲浠ラ夋嫨瑕佹彁鍙栨柟娉曠殑浠g爜錛屽湪Refactor鑿滃崟涓夋嫨“Extract Method”鎵撳紑“Extract Method”瀵硅瘽妗嗭紝濡傚浘14鎵紺恒?




鍥?4 “Extract Method”瀵硅瘽妗?


“Extract Method”閲嶆瀯鏄潪甯稿ソ鐨勯噸鏋勬柟寮忥紝鑳藉鎶婂ぇ鐨勬柟娉曚綋閲嶆瀯鎴愬涓柟娉曠殑瀹炵幇錛屼嬌浠g爜鏇存竻妤氭槗鎳傘?

鎻愮ず錛?#8220;Extract Method”閲嶆瀯鍜?#8220;Inline”閲嶆瀯鏄搴旂殑錛屾湁浜涙椂鍊欎負浜嗙粍緇囦竴浜涗笉鍚堢殑鍑芥暟錛屽彲浠ュ厛閫氳繃“Inline”鐨勬柟寮忕敓鎴愪竴涓ぇ鐨勫嚱鏁幫紝鍐嶉氳繃“Extract Method”鏉ラ噸鏋勫ぇ鐨勫嚱鏁幫紝浣夸唬鐮佹洿瓚嬩簬鍚堢悊銆?

3. Extract Local Variable

鍦ㄥ紑鍙戣繃紼嬩腑錛屼嬌鐢ㄥ彉閲忎唬鏇胯〃杈懼紡鏄潪甯稿ソ鐨勶紝榪欐牱鑳戒嬌浠g爜鏇村鏄撹鐞嗚В銆侲clipse涓彲浠ラ氳繃“Extract Local Variable”閲嶆瀯瀹炵幇鎻愬彇灞閮ㄧ殑琛ㄨ揪寮忋傞鍏堥夋嫨琛ㄨ揪寮忥紝鍦≧efactor鑿滃崟涓夋嫨“Extract Local Variable”鎵撳紑“Extract Local Variable”瀵硅瘽妗嗭紝濡傚浘15鎵紺恒?



鍥?5 “Extract Local Variable”瀵硅瘽妗?


4. Extract Constant

“Extract Constant”閲嶆瀯鍜?#8220;Extract Local Variable”閲嶆瀯綾諱技錛屽畠鍙互鎶婅〃杈懼紡瀹氫箟涓哄父閲忥紝鍙﹀“Extract Constant”閲嶆瀯鑳藉璁懼畾甯擱噺鐨勫彲瑙佹с傞夋嫨琛ㄨ揪寮忥紝鍦≧efactor鑿滃崟涓夋嫨“Extract Constant”鎵撳紑“Extract Constant”瀵硅瘽妗嗭紝濡傚浘16鎵紺恒?



鍥?6 “Extract Constant”瀵硅瘽妗?


5. Introduce Parameter

“Introduce Parameter”閲嶆瀯鍙互閫氳繃鍑芥暟涓殑琛ㄨ揪寮忋佸彉閲忔垨寮曠敤涓哄嚱鏁版坊鍔犳柊鐨勫弬鏁幫紝榪樿兘澶熻嚜鍔ㄦ洿鏂板紩鐢ㄦ鍑芥暟鐨勫叾瀹冧綅緗殑榛樿鍙傛暟銆傝鎯寵繘琛?#8220;Introduce Parameter”閲嶆瀯錛屽彲浠ラ夋嫨琛ㄨ揪寮忋佸彉閲忔垨寮曠敤銆傚湪Refactor鑿滃崟涓夋嫨“Introduce Parameter”鎵撳紑“Introduce Parameter”瀵硅瘽妗嗭紝濡傚浘17鎵紺恒?




鍥?7 “Introduce Parameter”瀵硅瘽妗?


6. Introduce Factory

“Introduce Factory”閲嶆瀯鑳藉涓虹被鍒涘緩宸ュ巶鏂規硶銆傞鍏堥夋嫨闇瑕佸垱寤哄伐鍘傛柟娉曠殑綾葷殑鏋勯犲嚱鏁幫紝鍦≧efactor鑿滃崟涓夋嫨“Introduce Factory”鎵撳紑“Introduce Factory”瀵硅瘽妗嗭紝濡傚浘18鎵紺恒?




鍥?8 “Introduce Factory”瀵硅瘽妗?


鍦?#8220;Introduce Factory”瀵硅瘽妗嗕腑錛屽彲浠ヨ緭鍏ュ伐鍘傛柟娉曠殑鍚嶅瓧錛屼互鍙婂伐鍘傜被錛孍clipse灝嗕細鑷姩鏍規嵁鏋勯犲嚱鏁板垱寤哄伐鍘傛柟娉曘?
鎻愮ず錛氬伐鍘傜被搴旇宸茬粡瀛樺湪錛岄氬父鍙互鍦ㄤ竴涓伐鍘傜被涓負澶氫釜鍏寵仈鐨勭被鍒涘緩宸ュ巶鏂規硶錛屾墍浠ュ湪浣跨敤“Introduce Factory”閲嶆瀯鍓嶏紝搴旇鍏堝垱寤哄ソ宸ュ巶綾匯?

7. Convert Local Variable to Field

“Convert Local Variable to Field”閲嶆瀯鑳藉鎶婂眬閮ㄧ殑鍙橀噺杞崲鎴愮被涓殑鍏ㄥ眬鍙橀噺銆傞鍏堥夋嫨瑕佽漿鎹㈢殑灞閮ㄥ彉閲忥紝鍦≧efactor鑿滃崟涓夋嫨“Convert Local Variable to Field”鎵撳紑“Convert Local Variable to Field”瀵硅瘽妗嗭紝濡傚浘19鎵紺恒?




鍥?9 “Convert Local Variable to Field”瀵硅瘽妗?


鍦?#8220;Convert Local Variable to Field”瀵硅瘽妗嗕腑錛岃繕鑳藉淇敼鍙橀噺鐨勫悕縐頒互鍙婂彉閲忕殑鍙鎬с?

8. Encapsulate Field

“Encapsulate Field”閲嶆瀯鑳藉鍖呰灞炴х殑鍙闂э紝浠ュ強鐢熸垚璁塊棶鐨勬柟娉曘傞鍏堥夋嫨瑕佸寘瑁呯殑灞炴э紝鍦≧efactor鑿滃崟涓夋嫨“Encapsulate Field”鎵撳紑“Encapsulate Field”瀵硅瘽妗嗭紝濡傚浘20鎵紺恒?




鍥?0 “Encapsulate Field”瀵硅瘽妗?


閫氬父閫氳繃“Encapsulate Field”鍙互鐢熸垚get鍜宻et鏂規硶銆傚湪“Encapsulate Field”瀵硅瘽妗嗕腑鍙互杈撳叆灞炴х殑璁塊棶鏂規硶鐨勫悕縐幫紝浠ュ強鏂規硶鐢熸垚鐨勪綅緗拰鏂規硶鐨勫彲瑙佹с?

鎻愮ず錛氶氳繃鍙抽敭鑿滃崟鐨凷ource鑿滃崟涔熻兘鐢熸垚鐩稿簲鐨刧et鍜宻et鏂規硶銆?

Undo and Redo

Eclipse鐨勮嚜鍔ㄩ噸鏋勫姛鑳借兘澶熷緢濂界殑鏀寔鍚勭紼嬪簭鍏冪礌鐨勯噸鍛藉悕錛屽茍鑷姩鏇存柊鐩稿叧鐨勫紩鐢ㄣ侲clipse鑳藉鏀寔鏂規硶銆佸瓧孌靛湪綾諱箣闂寸Щ鍔紝騫惰嚜鍔ㄦ洿鏂板紩鐢紝杈冨ソ鍦版敮鎸佸唴鑱斿瓧孌點佸嚱鏁扮殑鏇存柊鏇挎崲錛岃緝濂藉湴鏀寔鎶藉彇鏂規硶銆佸彉閲忕瓑紼嬪簭鍏冪礌銆?

閲嶆瀯鐨勮繃紼嬫槸涓涓笉鏂皾璇曞拰鎺㈢儲鐨勮繃紼嬨侲clipse鐨勯噸鏋勬敮鎸佹挙閿鍜岄噸鍋氾紝騫朵笖鑳藉棰勮閲嶆瀯緇撴灉錛岃繖浜涙槸寰堝疄鐢ㄧ殑鍔熻兘銆傝鎯蟲墽琛屾挙娑堝拰閲嶅仛錛圲ndo and Redo錛夌殑鍔熻兘錛屽彲浠ョ洿鎺ユ寜蹇嵎閿瓹trl+Z浠ュ強Ctrl+Y錛屼篃鍙互閫夋嫨Edit鑿滃崟鐨刄ndo鍜孯edo鎿嶄綔銆?

鎻愮ず錛氳櫧鐒禘clipse瀵歸噸鏋勬彁渚涗簡寰堝己澶х殑鏀寔錛屼絾鏄噸鏋勫悗浠g爜鐨勬祴璇曟槸蹇呬笉鍙皯鐨勶紝鑰屼笖涓嶈兘鎸囨湜Eclipse鑳藉瑙e喅鎵鏈夐噸鏋勭殑闂錛屾湁浜涙椂鍊欐墜鍔ㄩ噸鏋勮繕鏄繀欏葷殑銆傝嚜鍔ㄩ噸鏋勭殑鐞嗗康搴旇鏄?#8220;宸ュ叿杈呭姪涓嬬殑閲嶆瀯宸ヤ綔”錛屼絾寮鍙戜漢鍛樹粛鐒舵壙鎷呭緢澶т竴閮ㄥ垎閲嶆瀯宸ヤ綔銆?/span>

 



姊︽櫞 2011-11-15 10:30 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 国产成人高清亚洲| jizz免费一区二区三区| 亚洲精品国精品久久99热一| 97视频热人人精品免费| 亚洲免费人成在线视频观看| 久久久久久亚洲精品无码| 97亚洲熟妇自偷自拍另类图片 | 亚洲日韩区在线电影| 免费人成在线观看网站视频| 青青青国产在线观看免费网站 | 久久久久一级精品亚洲国产成人综合AV区 | 深夜福利在线免费观看| 亚洲天堂免费在线| 久久精品国产亚洲av麻豆色欲| 亚洲日韩在线观看| www亚洲一级视频com| 日韩激情无码免费毛片| 在线免费观看一区二区三区| 无码国产精品一区二区免费| 69视频在线观看高清免费| 久久99毛片免费观看不卡| 你懂的网址免费国产| 中文字幕久无码免费久久| 人人公开免费超级碰碰碰视频| 麻豆va在线精品免费播放| 国产精品无码亚洲一区二区三区| 亚洲日日做天天做日日谢| 国产成人精品日本亚洲专| 亚洲一区二区三区亚瑟| 国产成人亚洲精品| 中文字幕亚洲综合久久综合| 精品久久久久久亚洲精品| 亚洲国产日产无码精品| 国产精品亚洲综合五月天| 色噜噜亚洲男人的天堂| 亚洲精品成a人在线观看☆| 在线亚洲v日韩v| 免费看一级一级人妻片| 丁香六月婷婷精品免费观看| free哆拍拍免费永久视频| 一区二区免费电影|