ÖйúIT¶¯Á¦,×îÐÂ×îÈ«µÄIT¼¼Êõ½Ì³Ì
×îÐÂ100ƪ | ÍÆ¼ö100ƪ | רÌâ100ƪ | ÅÅÐаñ | ËÑË÷ | ÔÚÏßAPIÎĵµ
Ê× Ò³ | ³ÌÐò¿ª·¢ | ²Ù×÷ϵͳ | Èí¼þÓ¦Óà| Í¼ÐÎͼÏó | ÍøÂçÓ¦Óà| ¾«ÎÄÜöÝÍ | ½ÌÓýÈÏÖ¤ | Ó²¼þά»¤ | Î´ÕûÀíÆª | Õ¾³¤½Ì³Ì
ASP JS PHP¹¤³Ì ASP.NET ÍøÕ¾½¨Éè UML J2EESUN .NET VC VB VFP ÍøÂçά»¤ Êý¾Ý¿â DB2 SQL2000 Oracle Mysql
·þÎñÆ÷ Win2000 Office C DreamWeaver FireWorks Flash PhotoShop ÉÏÍø±¦µä CorelDraw ЭÒé´óÈ« ÍøÂ簲ȫ ΢ÈíÈÏÖ¤
Ó²¼þά»¤  CPU  Ö÷°å  Ó²ÅÌ  ÄÚ´æ  ÏÔ¿¨  ÏÔʾÆ÷  ¼üÅÌÊó±ê  Éù¿¨ÒôÏä  ´òÓ¡»ú  »úÏäµçÔ´  BIOS  Íø¿¨  C#  Java  Delphi  vs.net2005
  µ±Ç°Î»Öãº> ³ÌÐò¿ª·¢ > Èí¼þ¹¤³Ì > Èí¼þ·½·¨Ñ§ > XP¼«ÏÞ±à³Ì
Is design dead?
×÷Õß:δ֪ ʱ¼ä:2005-08-07 11:17 ³ö´¦:ϵͳ·ÖÎöÖ®´° Ôð±à:chinaitpower
              ÕªÒª£ºIs design dead?

Éè¼ÆÒÑËÀ£¿

Ó¢ÎÄÔ­ÎİæÈ¨ÓÉMartin FowlerÓµÓÐ
Original text is copyrighted by Martin Fowler

Martin Fowler
Chief Scientist, ThoughtWorks

Ô­Îijö´¦| ·±Ìå°æ | ÒëÕߣºDaimler Huang

¶ÔºÜ¶à´ÖÂÔ½Ó´¥µ½ Extreme Programming µÄÈËÀ´Ëµ£¬XP ËÆºõ Ðû¸æÁËÈí¼þÉè¼ÆµÄËÀÐÌ¡£²»Ö»ºÜ¶àµÄÉè¼Æ±»³°Ð¦Îª "Big Up Front Design"[Òë×¢1]£¬Á¬ºÜ¶à¼¼ÊõÏñUML¡¢¸»Óе¯ÐԵijÌÐò¼Ü¹¹ (framework)£¬ÉõÖÁÁ¬Ä£Ê½ (pattern) ¶¼²»ÊÜÖØÊÓ£¬»òÊǽüËÆºöÂÔÁË¡£ÊÂʵÉÏ£¬XPÄÚº¬ºÜ¶àÉè¼ÆÀíÄµ«ÊÇËüÓëÏÖÓеÄÈí¼þÁ÷³ÌÓÐ×Ų»Í¬µÄÔË×÷·½Ê½¡£XP½åÓɶàÖÖʵÎñ¼¼ÇÉ (practice) ¸³ÓèÑݽøÊ½Éè¼Æ (evolutionary design) ոеķçò£¬ÈÃÑݽø±ä³ÉÒ»ÖÖʵÓõÄÉè¼Æ·½·¨¡£ËüÒ²ÈÃÉè¼ÆÕß (designer[Òë×¢2]) ÃæÁÙеÄÌôÕ½Óë¼¼ÇÉ£¬Ñ§Ï°ÈçºÎʹÉè¼Æ¾«¼ò£¬ÈçºÎʹÓÃÖØ¹¹À´±£³ÖÒ»¸öÉè¼ÆµÄÇå³þÒ×¶®£¬ÒÔ¼°ÈçºÎÖð²½µØÌ×ÓÃģʽ¡£

 (ÕâÆªÎÄÕÂÊÇÎÒÔÚ XP2000 ÑÐÌֻᷢ±íµÄÑÝ˵£¬Ëü»á¹«²¼ÔÚÑÐÌֻὲÒåÖС£)

       Planned and Evolutionary Design (¾­¹ý¹æ»®µÄÉè¼ÆÓëÑݽøÊ½µÄÉè¼Æ)

       The Enabling Practices of XP (XPÓÐЧµÄʵ×÷¼¼ÇÉ)

       The Value of Simplicity (¼òµ¥µÄ¼ÛÖµ)

       What on Earth is Simplicity Anyway (¾¿¾¹Ê²Ã´ÊǼòµ¥)

       Does Refactoring Violate YAGNI? (ÖØ¹¹Î¥·´ÁËYAGNIÂð£¿)

       Patterns and XP (ģʽÓëXP)

       Growing an Architecture (·¢Õ¹½á¹¹)

       UML and XP (UMLÓëXP)

       On Metaphor (¹ØÓÚÒþÓ÷)

       Do you wanna be an Architect when you grow up? (Ä㽫À´Ïë³ÉΪһ¸öÈí¼þ½á¹¹Ê¦Âð£¿)

       Things that are difficult to refactor in (ºÜÄÑÖØ¹¹µÄ¶«Î÷)

       So is Design Dead? (ËùÒÔ£¬Éè¼ÆËÀÁËÂð£¿)

       Acknowledgements (ÖÂл)

      Revision History (ÐÞ¶©µÄ¼Ç¼)

 Extreme Programming (XP) ÌôÕ½ºÜ¶àÈí¼þ¿ª·¢³£¼ûµÄ¼ÙÉè¡£ÆäÖÐ×îÊÜÕùÒéµÄ¾ÍÊǼ«Á¦Åųâ up-front design£¬¶øÖ§³ÖÒ»ÖֱȽÏÊôÓÚÑݽøµÄ·½Ê½¡£ÅúÆÀÕß˵ÕâÊÇÍ˻ص½ÁË "code and fix" µÄ¿ª·¢·½Ê½£¬¶¥¶àÖ»ÄÜËãÊÇÒ»°ã¼±¾ÍÕµijÌÐòÉè¼Æ°ÕÁË¡£Ö§³ÖÕßÒ²³£¿´µ½ XP ¶ÔÓÚÉè¼Æ·½·¨ (Èç UML)¡¢principle(Éè¼Æ×¼Ôò)¡¢patterns µÈµÄÅų⡣±ðµ£ÐÄ£¬×ÐϸעÒâÄãµÄ³ÌÐò´úÂ룬Äã¾Í»á¿´µ½ºÃµÄ design ¸¡ÏÖ³öÀ´¡£

 ÎÒ·¢ÏÖ×Ô¼ºÕýÏÝÓÚÕâ¸öÕùÂÛµ±ÖС£ÎҵŤ×÷×ÅÖØÔÚͼÐλ¯Éè¼ÆÓïÑÔ - UML ÒÔ¼° patterns£¬ÊÂʵÉÏÎÒҲд¹ý UML ºÍ patterns µÄÊé¡£ÎÒÈç´ËµÄÓµ±§ XP ÊÇ·ñ±íʾÎÒ·ÅÆúÁËÕâЩÀíÂÛ£¬»òÊǽ«ÕâЩ·´½¥½øÊ½ (counter-revolutionary) µÄ¸ÅÄî´ÓÄÔÖÐÇå³ýÁË£¿

 àÅ... ÎÒ²»ÏëÈÃÄãµÄÐÄÐüµ´ÔÚÕâÁ½ÖÖÇé¾³ÖС£¼òµ¥µÄ˵²¢²»ÊÇ£»½ÓÏÂÀ´µÄÎÄÕ¾ÍÈÃÎÒÀ´Ïêϸ˵Ã÷¡£

 

Planned and Evolutionary Design

 

ÎÒ½«ÔÚÕâÆªÎÄÕÂÖÐ˵Ã÷Èí¼þ¿ª·¢µÄÁ½ÖÖÉè¼Æ·½Ê½ÊÇÈçºÎÍê³ÉµÄ¡£»òÐí×î³£¼ûµÄÊÇÑݽøÊ½Éè¼Æ¡£ËüµÄ±¾ÖÊÊÇϵͳµÄÉè¼ÆËæ×ÅÈí¼þ¿ª·¢µÄ¹ý³ÌÔö³¤¡£Éè¼Æ (design) ÊÇ׫д³ÌÐò´úÂë¹ý³ÌµÄÒ»²¿·Ý£¬Ëæ×ųÌÐò´úÂëµÄ·¢Õ¹£¬Éè¼ÆÒ²¸ú×ŵ÷Õû¡£

 ÔÚ³£¼ûµÄʹÓÃÖУ¬ÑݽøÊ½Éè¼ÆÊµÔÚÊdz¹µ×µÄʧ°Ü¡£Éè¼ÆµÄ½á¹ûÆäʵÊÇÒ»¶ÑΪÁËÄ³Ð©ÌØÊâÌõ¼þ¶øÇÉÃî°²Åŵľö¶¨Ëù×é³É£¬Ã¿¸öÌõ¼þ¶¼»áÈóÌÐò´úÂë¸üÄÑÐ޸ġ£´ÓºÜ¶à·½ÃæÀ´¿´£¬Äã¿ÉÄÜ»áÅúÆÀÕâÑù¸ù±¾¾ÍûÓÐÉè¼Æ¿ÉÑÔ£¬ÎÞÒɵØÕâÑùµÄ·½Ê½³£»áµ¼ÖºܲµÄÉè¼Æ¡£¸ù¾ÝKentµÄ³ÂÊö£¬ËùνµÄÉè¼Æ (design) ÊÇÒªÄܹ»ÈÃÄã¿ÉÒÔ³¤ÆÚºÜ¼òµ¥µØÐÞ¸ÄÈí¼þ¡£µ±Éè¼Æ (design) ²»ÈçÔ¤ÆÚʱ£¬ÄãÓ¦¸ÃÄܹ»×öÓÐЧµÄ¸ü¸Ä¡£Ò»¶Îʱ¼äÖ®ºó£¬Éè¼Æ±äµÃÔ½À´Ô½Ô㣬ÄãÒ²Ìå»áµ½Õâ¸öÈí¼þ»ìÂҵij̶ȡ£ÕâÑùµÄÇéÐβ»½öʹµÃÈí¼þ±¾ÉíÄÑÒÔÐ޸ģ¬Ò²ÈÝÒײúÉúÄÑÒÔ×·×ٺͳ¹µ×½â¾öµÄ bug¡£Ëæ×żƻ­µÄ½øÐУ¬bug µÄÊýÁ¿³ÊÖ¸ÊýµØ³É³¤¶ø±ØÐ뻨¸ü¶à³É±¾È¥½â¾ö£¬Õâ¾ÍÊÇ "code and fix" µÄ¶ñÃΡ£

 Planned Design µÄ×ö·¨ÕýºÃÏà·´£¬²¢ÇÒº¬ÓÐÈ¡×ÔÆäËü¹¤³ÌµÄ¸ÅÄî¡£Èç¹ûÄã´òËã×öÒ»¼ä¹·ÎÝ£¬ÄãÖ»ÐèÒªÕÒÆëľÁÏÒÔ¼°ÔÚÐÄÖÐÓÐÒ»¸ö´óÂÔµÄÐÎÏó¡£µ«ÊÇÈç¹ûÄãÏëÒª½¨Ò»¶°Ä¦Ìì´óÂ¥£¬ÕÕͬÑùµÄ×ö·¨£¬¿ÖÅ»¹²»µ½Ò»°ëµÄ¸ß¶È´óÂ¥¾Í¿åÁË¡£ÓÚÊÇÄãÏÈÔÚÒ»¼äÏñÎÒ̫̫ÔÚ²¨Ê¿¶ÙÊÐÇøÄÇÑùµÄ°ì¹«ÊÒÀïÍê³É¹¤³Ìͼ¡£ËýÔÚÉè¼ÆÍ¼ÖÐÈ·¶¨ËùÓеÄϸ½Ú£¬Ò»²¿·ÝʹÓÃÊýѧ·ÖÎö£¬µ«ÊǴ󲿷ֶ¼ÊÇʹÓý¨Öþ¹æ·¶¡£ËùνµÄ½¨Öþ¹æ·¶¾ÍÊǸù¾Ý³É¹¦µÄ¾­Ñé (ÓÐЩÊÇÊýѧ·ÖÎö) ÖÆ¶¨³öÈçºÎÉè¼Æ½á¹¹ÌåµÄ·¨Ôò¡£µ±Éè¼ÆÍ¼Íê³É£¬ËýÃǹ«Ë¾¾Í¿ÉÒÔ½«Éè¼ÆÍ¼½»¸øÁíÒ»¸öÊ©¹¤µÄ¹«Ë¾°´Í¼Ê©¹¤¡£

 Planned Design ½«Í¬ÑùµÄ·½Ê½Ó¦ÓÃÔÚÈí¼þ¿ª·¢¡£Designer Ïȶ¨³öÖØÒªµÄ²¿·Ý£¬³ÌÐò´úÂë²»ÊÇÓÉËûÃÇÀ´×«Ð´£¬ÒòΪÈí¼þ²¢²»ÊÇËûÃÇ "½¨Ôì[Òë×¢3]" µÄ£¬ËûÃÇÖ»¸ºÔðÉè¼Æ¡£ËùÒÔ designer ¿ÉÒÔÀûÓÃÏñ UML ÕâÑùµÄ¼¼Êõ£¬²»ÐèÒªÌ«×¢ÖØ×«Ð´³ÌÐò´úÂëµÄϸ½ÚÎÊÌ⣬¶øÔÚÒ»¸ö±È½ÏÊôÓÚ³éÏóµÄ²ã´ÎÉϹ¤×÷¡£Ò»µ©Éè¼ÆµÄ²¿·ÝÍê³ÉÁË£¬ËûÃǾͿÉÒÔ½«Ëü½»¸øÁíÒ»¸öÍÅ¶Ó (»òÉõÖÁÊÇÁíÒ»¼Ò¹«Ë¾) È¥ "½¨Ôì"¡£ÒòΪ designer ³¯×Å´ó·½Ïò˼¿¼£¬ËùÒÔËûÃÇÄܹ»±ÜÃâÒòΪ²ßÂÔ·½Ãæ²»¶ÏµÄ¸ü¸Ä¶øµ¼ÖÂÈí¼þµÄʧÐò¡£Programmer ¾Í¿ÉÒÔÒÀÑ­Éè¼ÆºÃµÄ·½Ïò (Èç¹ûÓÐ×ñÑ­Éè¼Æ) д³öºÃµÄϵͳ¡£

 Planned design ·½·¨´ÓÆß¡ðÄê´ú³öÏÖ£¬¶øÇҺܶàÈ˶¼ÓùýËüÁË¡£ÔÚºÜ¶à·½ÃæËü±È code and fix ½¥½øÊ½Éè¼ÆÒªÀ´µÄºÃ£¬µ«ÊÇËüÒ²ÓÐһЩȱµã´æÔÚ¡£µÚÒ»¸öȱµãÊǵ±ÄãÔÚ׫д³ÌÐò´úÂëʱ£¬Äã²»¿ÉÄÜͬʱ°ÑËùÓбØÐë´¦ÀíµÄÎÊÌâ¶¼ÏëÇå³þ¡£ËùÒÔ½«Î޿ɱÜÃâµÄÓöµ½Ò»Ð©ÈÃÈ˶ÔÔ­ÏÈÉè¼Æ²úÉúÖÊÒɵÄÎÊÌâ¡£¿ÉÊÇÈç¹û designer ÔÚÍê³É¹¤×÷Ö®ºó¾Í×ªÒÆµ½ÆäËüÏîÄ¿£¬ÄÇÔõô°ì£¿Programmer ¿ªÊ¼Ç¨¾ÍÉè¼ÆÀ´Ð´³ÌÐò£¬ÓÚÊÇÈí¼þ¿ªÊ¼Ç÷ÓÚ»ìÂÒ¡£¾ÍËãÕÒµ½ designer£¬»¨Ê±¼äÕûÀíÉè¼Æ£¬±ä¸üÉè¼ÆÍ¼£¬È»ºóÐ޸ijÌÐò´úÂë¡£µ«ÊDZØÐëÃæÁÙ¸ü¶ÌµÄʱ³ÌÒÔ¼°¸ü´óµÄѹÁ¦À´ÐÞ¸ÄÎÊÌ⣬ÓÖÊÇ»ìÂҵĿª¶Ë¡£

 ´ËÍ⣬ͨ³£»¹ÓÐÈí¼þ¿ª·¢ÎÄ»¯·½ÃæµÄÎÊÌâ¡£Designer ÒòΪר¾«µÄ¼¼ÊõºÍ·á¸»µÄ¾­Ñé¶ø³ÉΪһλ designer¡£È»¶ø£¬ËûÃÇæÓÚ´ÓÊÂÉè¼Æ¶øÃ»ÓÐʱ¼äд³ÌÐò´úÂë¡£µ«ÊÇ£¬¿ª·¢Èí¼þµÄ¹¤¾ß·¢Õ¹Ñ¸ËÙ£¬µ±Äã²»ÔÙ׫д³ÌÐò´úÂëʱ£¬Äã²»Ö»ÊÇ´íʧÁ˼¼Êõ³±Á÷Ëù·¢ÉúµÄ¸Ä±ä£¬Í¬Ê±Ò²Ê§È¥Á˶ÔÓÚÄÇЩʵ¼Ê׫д³ÌÐò´úÂëµÄÈ˵Ä×ð¾´¡£

 ½¨ÔìÕß (builder[Òë×¢3]) ºÍÉè¼ÆÕßÖ®¼äÕâÖÖ΢ÃîµÄ¹ØÏµÔÚ½¨Öþ½çÒ²¿´µÃµ½£¬Ö»ÊÇÔÚÈí¼þ½ç¸ü¼Ó͹ÏÔ¶øÒÑ¡£Ö®ËùÒÔ»áÈç´ËÇ¿ÁÒÊÇÒòΪһ¸ö¹Ø¼üÐԵIJîÒì¡£ÔÚ½¨Öþ½ç£¬Éè¼ÆÊ¦ºÍ¹¤³ÌʦµÄ¼¼ÊõÓÐÇå³þµÄ·ÖÒ°£»ÔÚÈí¼þ½ç¾Í±È½Ï·Ö²»Çå³þÁË[Òë×¢2]¡£ÈκÎÔڸ߶È×¢ÖØ design µÄ»·¾³¹¤×÷µÄ programmer ¶¼±ØÐë¾ß±¸Á¼ºÃµÄ¼¼Êõ£¬ËûµÄÄÜÁ¦×ã¹»¶Ô designer µÄÉè¼ÆÌá³öÖÊÒÉ£¬ÓÈÆäÊǵ± designer ¶ÔÓÚеķ¢Õ¹¹¤¾ß»òƽ̨ԽÀ´Ô½²»ÊìϤµÄ×´¿öÏ¡£

 ÏÖÔÚÕâЩÎÊÌâÒ²Ðí¿ÉÒÔ»ñµÃ½â¾ö¡£Ò²ÐíÎÒÃÇ¿ÉÒÔ´¦ÀíÈËÓëÈËÖ®¼äµÄ»¥¶¯ÎÊÌâ¡£Ò²ÐíÎÒÃÇ¿ÉÒÔ¼ÓÇ¿ designer µÄ¼¼ÊõÀ´´¦Àí¾ø´ó²¿·ÝµÄÎÊÌ⣬²¢ÇÒ¶©³öÒ»¸öÒÀÕÕ×¼ÔòÈ¥×ö¾Í×ã¹»¸Ä±äÉè¼ÆÍ¼µÄÁ÷³Ì¡£µ«ÊÇÈÔÈ»ÓÐÁíÍâÒ»¸öÎÊÌ⣺±ä¸üÐèÇó¡£±ä¸üÐèÇóÊÇÈí¼þÏîÄ¿ÖÐ×îÈÃÎҸе½Í·Í´µÄÎÊÌâÁË¡£

 ´¦Àí±ä¸üÐèÇóµÄ·½Ê½Ö®Ò»ÊÇ×öÓе¯ÐÔµÄÉè¼Æ£¬ÓÚÊǵ±ÐèÇóÓÐËù¸ü¸Ä£¬Äã¾Í¿ÉÒÔÇáÒ׵ıä¸üÉè¼Æ¡£È»¶ø£¬ÕâÊÇÐèÒªÏȼûÖ®Ã÷È¥²Â²â½«À´Äã¿ÉÄÜ»á×öÔõÑùµÄ±ä¸ü¡£Ò»ÏîÔ¤Áô´¦ÀíÒ×±äÐÔÖʵÄÉè¼Æ¿ÉÄܶÔÓÚ½«À´µÄÐèÇó±ä¸üÓÐËù°ïÖú£¬µ«ÊǶÔÓÚÒâÍâµÄ±ä»¯È´Ã»ÓаïÖú (ÉõÖÁÓк¦)¡£ËùÒÔÄã±ØÐë¶ÔÓÚÐèÇóÓÐ×ã¹»µÄÁ˽âÒÔ¸ôÀëÒ×±äµÄ²¿·Ý¡£ÕÕÎҵĹ۲죬ÕâÊǷdz£À§Äѵġ£

 ²¿·ÝÓйØÐèÇóµÄÎÊÌâÓ¦¸Ã¹é¾ÌÓÚ¶ÔÐèÇóµÄÁ˽ⲻ¹»Çå³þ£¬ËùÒÔÓÐÈËרעÓÚÑо¿ÐèÇó´¦Àí£¬Ï£ÍûµÃµ½ÊÊÇеÄÐèÇóÒÔ±ÜÃâºóÀ´¶ÔÉè¼ÆµÄÐ޸ġ£µ«ÊǼ´Ê¹³¯Õâ¸ö·½ÏòÈ¥×öÒ»ÑùÎÞ·¨¶ÔÖ¢ÏÂÒ©¡£ºÜ¶àÎÞ·¨Ô¤Áϵıä¸üÆðÒòÓÚ˲ϢÍò±äµÄÉ̳¡£¬ÄãÖ»Óиü¼ÓСÐÄ´¦ÀíÐèÇóÎÊÌâÀ´Ó¦¸¶ÎÞ·¨±ÜÃâµÄÇé¿ö¡£

 Õâô˵À´£¬planned design ÌýÆðÀ´ÏñÊDz»¿ÉÄܵÄÈÎÎñ¡£ÕâÖÖ×ö·¨µ±È»ÊÇÒ»ÖֺܴóµÄÌôÕ½¡£µ«ÊÇ£¬¸úÑݽøÊ½Éè¼Æ (evolutionary design) ÆÕ±éÒÔ code and fix ·½Ê½Êµ×÷±È½ÏÆðÀ´£¬ÎÒ²»¾õµÃ planned design »á±È½Ï²î¡£ÊÂʵÉÏ£¬ÎÒÒ²±È½Ïϲ»¶ planned design¡£ÒòΪÎÒÁ˽â planned design µÄȱµã£¬¶øÇÒÕýÔÚѰÕÒ¸üºÃµÄ·½·¨¡£

 

The Enabling Practices of XP

 

XP ÒòΪÐí¶àÔ­Òò¶ø±¸ÊÜÕùÒ飬ÆäÖÐÖ®Ò»¾ÍÊÇËüÖ÷ÕÅÑݽøÊ½Éè¼Æ (evolutionary design) ¶ø²»ÊÇ planned design¡£ÎÒÃÇÒ²ÖªµÀ£¬ÑݽøÊ½Éè¼Æ¿ÉÄÜÒòÎªÌØ¶¨µÄÉè¼Æ»òÊÇÈí¼þ¿ª·¢Ç÷ÓÚ»ìÂÒ¶øÐв»Í¨¡£

 ÏëÁ˽âÕâЩÕùÂ۵ĺËÐÄ£¬¾ÍÊÇÈí¼þÑз¢Ò춯ÇúÏß¡£ÇúÏߵı仯˵Ã÷£¬Ëæ×ÅÏîÄ¿µÄ½øÐУ¬±ä¸üËùÐèÒªµÄ³É±¾³ÊÏÖÖ¸ÊýµÄÔö¼Ó¡£ÕâÑùµÄÇúÏß³£ÒÔÒ»¾ä»°À´±íʾ£ºÔÚ·ÖÎö½×¶Î»¨Ò»¿éÇ®Ëù×÷µÄ±ä¸ü£¬·¢ÐÐÖ®ºóÒª»¨ÊýǧԪÀ´²¹¾È¡£·í´ÌµÄÊǴ󲿷ֵļƻ­ÈÔȻûÓзÖÎö¹ý³Ì¶øÒԷDZê×¼µÄ·½Ê½½øÐУ¬µ«ÊÇÕâÖֳɱ¾ÉϵÄÖ¸Êý¹ØÏµ»¹ÊÇ´æÔÚ×Å¡£ÕâÖÖÖ¸ÊýÇúÏßÒâζ×ÅÑݽøÊ½Éè¼Æ¿ÉÄÜÐв»Í¨£¬ËüͬʱҲ˵Ã÷×ÅΪʲô planned design ҪСÐÄÒíÒíµØ¹æ»®£¬ÒòΪÈκεĴíÎó»¹ÊÇ»áÃæ¶ÔͬÑùµÄÎÊÌâ¡£

 XP µÄ»ù±¾¼ÙÉèÊÇËü¿ÉÒÔ½«ÕâÖÖÖ¸ÊýÇúÏßÀ­Æ½£¬ÕâÑùÑݽøÊ½Éè¼Æ¾ÍÐеÃͨÁË¡£XP ʹÇúÏ߸üƽ»º²¢ÄÜÔËÓÃÕâÖÖÓÅÊÆ¡£ÕâÊÇÒòΪ XP ʵ×÷¼¼ÇÉÖ®¼äµÄñîºÏЧ¹û£º»»¾ä»°Ëµ£¬²»Ê¹ÓÃÄÇЩÄܹ»À­Æ½Èí¼þ¿ª·¢ÇúÏßµÄʵ×÷¼¼ÇÉÀ´¹¤×÷£¬ÕâÌõÇúÏßÒ²²»»áÇ÷Ïòƽ»º¡£ÕâÒ²ÊÇÕùÂÛµÄÀ´Ô´£¬ÒòΪÆÀÂÛ¼Ò²»Á˽âÕâÆä¼äµÄ¹ØÏµ¡£Í¨³£ÕâЩÅúÆÀÊǸù¾ÝÆÀÂÛ¼Ò×ÔÉíµÄ¾­Ñ飬ËûÃDz¢Ã»ÓÐʵÐÐÄÇЩÓÐЧµÄʵ×÷¼¼ÇÉ£¬µ±ËûÃÇ¿´µ½½á¹û²»ÈçÔ¤ÆÚ£¬¶ÔÓÚ XP µÄÓ¡ÏóÒ²¾ÍÊÇÕâÑùÁË¡£

 ÕâЩÓÐЧµÄʵ×÷¼¼ÇÉÓм¸¸ö²¿·Ý£¬Ö÷ÒªÊÇ Testing ºÍ Continuous Integration¡£Èç¹ûûÓÐ testing Ìṩ±£ÕÏ£¬ÆäËüµÄ XP ʵ×÷¼¼Çɶ¼²»¿ÉÐС£Continuous Integration ¿ÉÒÔ±£³ÖÍŶӳÉÔ±ÐÅϢͬ²½£¬ËùÒÔµ±ÄãÓиıäµÄ²¿·Ý£¬²»±Øµ£ÐÄÓëÆäËü³ÉÔ±×ÊÁÏÕûºÏ»áÓÐÎÊÌ⡣ͬʱÔËÓÃÕâЩʵ×÷¼¼ÇÉÄܹ»´ó´óÓ°Ï쿪·¢ÇúÏß¡£ÕâÈÃÎÒÔÙ´ÎÏëÆðÔÚThoughtWorks µ¼Èë testing ºÍ continuous integration Ö®ºó£¬Ã÷ÏԵĸÄÉÆÁËÑз¢³É¹û¡£¸ÄÉÆµÄ³Ì¶ÈºÃµ½ÁîÈË»³ÒÉÊDz»ÊÇÏñ XP ËùÖ÷Õŵ쬱ØÐëÒªÓõ½ËùÓеÄʵ×÷¼¼ÇɲÅÄÜ´ó·ù¸ÄÉÆÐ§ÂÊ¡£[Òë×¢4]

 Refactoring ¾ßÓÐÀàËÆµÄ³ÉЧ¡£ÄÇÐ©Ôø¾­²ÉÓà XP ½¨ÒéµÄÔ­ÔòÀ´¶Ô³ÌÐò´úÂë½øÐÐrefactoring µÄÈË·¢ÏÖ£¬Õâô×öÒª±ÈÎÞÕ·¨»òÊÇÌØÊⷽʽµÄ restructuring Ã÷ÏԵĸüÓÐЧÂÊ¡£ÄÇÒ²Ôø¾­ÊÇ Kent Ö¸µ¼ÎÒÊʵ±µÄ refactor µÃµ½µÄÄÑÍü¾­Ñ飬ҲÒòΪÕâôһ´Î¾Þ´óµÄת±ä´ÙʹÎÒÒÔÕâ¸öÖ÷ÌâдÁËÒ»±¾Êé¡£

 Jim Highsmith дÁËһƪºÜ°ôµÄÎÄÕ "summary of XP"£¬Ëû°Ñ planned design ºÍ refactoring ·ÅÔÚÌì³ÓµÄÁ½¶Ë¡£´ó²¿·Ý´«Í³µÄ×ö·¨¼ÙÉè¹¹Ïë²»±ä£¬ËùÒÔ planned design Õ¼ÓÅÊÆ¡£¶øµ±ÄãµÄ³É±¾Ô½À´Ô½²»ÔÊÐí±ä¸ü£¬Äã¾ÍÔ½ÇãÏòÓÚ²ÉÓà refactoring¡£Planned design ²¢²»ÊÇÍêÈ«Ïûʧ£¬Ö»Êǽ«ÕâÁ½ÖÖ×ö·¨»¥Ïà´îÅäÔËÓÃÈ¡µÃƽºâ¡£¶ÔÎÒÀ´Ëµ£¬ÔÚÉè¼Æ½øÐÐ refactoring ֮ǰ£¬×ܾõµÃÕâ¸öÉè¼Æ²»¹»½¡È«¡£

 Continuous integration¡¢testing ºÍ refactoring ÕâЩÓÐЧµÄʵ×÷·½·¨Èà evolutionary design ¿´ËƺÜÓеÀÀí¡£µ«ÊÇÎÒÃÇÉÐδÕÒ³öÆä¼äµÄƽºâµã¡£ÎÒÏàÐÅ£¬²»ÂÛÍâ½ç¶Ô XP ´æÓÐʲôӡÏó£¬XP ²»½ö½öÊÇ testing¡¢coding ºÍ refactoring¡£ÔÚ coding ֮ǰ»¹ÓÐ design µÄ±ØÒª¡£²¿·ÝµÄ design ÔÚ coding ֮ǰ׼±¸£¬´ó²¿·ÝµÄ design Ôò·¢ÉúÔÚʵ×÷ÿһÏîÏêÁеŦÄÜ֮ǰ¡£×ÜÖ®£¬ÔÚ up-front design ºÍ refactoring Ö®¼ä¿ÉÒÔÕÒµ½ÐÂµÄÆ½ºâ¡£

 

The Value of Simplicity

 

XP ´óÉù¼²ºôµÄÁ½¸ö¿ÚºÅÊÇ "Do The Simplest Thing that Could Possibly Work"(Ö»×ö×î¼òµ¥¿ÉÒÔÕý³£ÔË×÷µÄÉè¼Æ) ºÍ "You Aren't Going to Need It"(¾ÍÊÇ YAGNI - Ä㽫²»»áÐèÒªËü)¡£Á½Ïî¶¼ÊÇXPʵÎñÖмòµ¥Éè¼ÆµÄ±íÏÖÐÎʽ¡£

 YAGNI Ò»´Êʱ³£±»ÌÖÂÛ£¬ËüµÄÒâ˼ÊÇÏÖÔÚ²»ÒªÎªÁ˽«À´¿ÉÄÜÓõ½µÄ¹¦ÄܼÓÈëÈκγÌÐò´úÂë¡£±íÃæÉÏÌýÆðÀ´ºÃÏóºÜ¼òµ¥£¬ÎÊÌâÔò³öÔÚÏñ framework¡¢ÖØÓÃ×é¼þ¡¢ºÍµ¯ÐÔ»¯Éè¼Æ£¬ÕâЩ¶«Î÷±¾À´¾ÍºÜ¸´ÔÓ¡£ÄãÊÂÏȸ¶³ö¶îÍâµÄ³É±¾È¥´òÔìËüÃÇ£¬Ï£ÍûÉÔºó½«ÕâЩ»¨·Ñ¶¼×¬»ØÀ´¡£Õâ¸öÊÂÏȵ¯ÐÔÉè¼ÆµÄÏë·¨±»ÈÏΪÊÇÈí¼þÉè¼ÆÓÐЧÂʵĹؼü²¿·Ý¡£

 µ«XPµÄ½¨ÒéÊÇ£¬ÔÚ´¦ÀíµÚÒ»¸öÎÊÌâʱ²»ÒªÒòΪ¿ÉÄÜÐèҪijÏÄÜ£¬¾Í½¨Ôì³öµ¯ÐÔµÄ×é¼þ×é¼°¿ò¼Ü³öÀ´¡£ÈÃÕûÌå½á¹¹Ëæ×ÅÐèÒª³É³¤¡£¼ÙÈçÎÒ½ñÌìÏëÒªÒ»¸ö¿ÉÒÔ´¦Àí¼Ó·¨µ«ÊDz»Óó˷¨µÄ Money Àà±ð£¬ÎÒ¾ÍÖ»ÔÚ Money Àà±ðÖн¨Ôì¼Ó·¨µÄ¹¦ÄÜ¡£¾ÍËãÎÒÈ·¶¨ÏÂÒ»¸ö½×¶ÎÒ²ÐèÒª³Ë·¨µÄÔËË㣬¶øÇÒÎÒÖªµÀºÜ¼òµ¥£¬Ò²»¨²»Á˶àÉÙʱ¼ä£¬ÎÒ»¹ÊÇ»áÁôµ½ÏÂÒ»½×¶ÎÔÙÈ¥×öËü¡£

 ÆäÖÐÒ»¸öÀíÓÉÊÇÐ§Òæ¡£Èç¹ûÎÒÒª»¨Ê±¼äÔÚÃ÷Ìì²ÅÐèÒªµÄ¹¦ÄÜ£¬ÄǾͱíʾÎÒûÓн«¾«Éñ·ÅÔÚÕâ¸ö½×¶ÎÓ¦¸ÃÍê³ÉµÄÊÂÇéÉÏ¡£·¢±í¼Æ»­ÏêÁÐĿǰҪÍê³ÉµÄÊÂÏÏÖÔÚ×öÒÔºó²ÅÐèÒªµÄÊÂÇéÎ¥±³¿ª·¢ÈËÔ±ºÍ¹Ë¿ÍÖ®¼äµÄЭÒé¡£ÕâÖÖ×ö·¨ÓÐÈÃÏֽ׶εÄÄ¿±êÎÞ·¨´ï³ÉµÄ¿ÉÄÜ¡£¶øÇÒÕâ¸ö½×¶ÎµÄ stroies[Òë×¢5] ÊÇ·ñ¾ßÓзçÏÕ£¬»òÊÇÐè²»ÐèÒª×ö¶îÍâµÄ¹¤×÷£¬¶¼ÊÇÓɹ˿ÍÀ´¾ö¶¨µÄ - »¹ÊÇ¿ÉÄܲ»°üÀ¨³Ë·¨¹¦ÄÜ¡£

 ÕâÖÖ¾­¼ÃÐ§ÒæÉϵÄÏÞÖÆÊÇÒòΪÎÒÃÇÓпÉÄܳö´í¡£¾ÍËãÊÇÎÒÃÇÒѾ­È·¶¨Õâ¸ö¹¦ÄÜÓ¦¸ÃÈçºÎÔË×÷£¬¶¼ÓпÉÄܳö´í - ÓÈÆäÊÇÕâʱºòÎÒÃÇ»¹Ã»ÓÐÈ¡µÃÏêϸÐèÇó¡£Ìáǰ×öÒ»¼þ´íÎóµÄÊÂÇé±ÈÌáǰ×öÒ»¼þ¶ÔµÄÊÂÇé¸üÀË·Ñʱ¼ä¡£¶øÇÒXPר¼ÒÃÇͨ³£ÏàÐÅÎÒÃDZȽÏÓпÉÄÜ»á×ö´í¶ø²»ÊÇ×ö¶Ô(ÎÒÐÄÓÐÆÝÆÝ)¡£

 µÚ¶þ¸öÖ§³Ö simple design µÄÀíÓÉÊǸ´ÔÓµÄÉè¼ÆÎ¥·´¹âÏßÐнøµÄÔ­Àí¡£¸´ÔÓµÄÉè¼Æ±È¼òµ¥µÄÉè¼Æ»¹ÒªÁîÈËÄѶ®¡£ËùÒÔËæ×Ž¥ÔöµÄϵͳ¸´ÔÓ¶È£¬¸ü¼ÓÄÑÒÔ¶Ôϵͳ×öÈκÎÐ޸ġ£Èç´Ë£¬Èôϵͳ±ØÐë¼ÓÈë¸ü¸´ÔÓµÄÉè¼ÆÊ±£¬³É±¾ÊƱØÔö¼Ó¡£

 ÏÖÔںܶàÈË·¢ÏÖÕâÑùµÄ½¨ÒéÊÇÎÞÒâÒåµÄ£¬ÆäʵËûÃÇÄÇÑùÏëÊǶԵġ£ÒòΪÄãËùÏëÏóÒ»°ãµÄÑз¢²¢Ã»Óб» XP ÓÐЧµÄ¼¼ÇÉËùÈ¡´ú¡£È»¶ø£¬µ±¹æ»®Ê½Éè¼ÆºÍ½¥½øÊ½Éè¼ÆÖ®¼äµÄƽºâµãÓÐÁ˱仯 (Ò²Ö»Óе±ÕâÑùµÄ±ä»¯·¢Éúʱ)£¬YAGNI ¾Í»á±ä³ÉºÃµÄ¼¼ÇÉ¡£

 ËùÒÔ½áÂÛÊÇ£¬³ý·Çµ½ÁËÍùºóµÄ½×¶ÎÓÐËùÐèÒª£¬·ñÔòÄã²»»áÀ˷Ѿ«ÉñÈ¥Ôö¼ÓÐµĹ¦ÄÜ¡£¼´Ê¹²»»á¶à»¨³É±¾£¬ÄãÒ²²»»áÕâÑù×ö£¬ÒòΪ¾ÍËãÏÖÔÚ¼ÓÈëÕâЩ¹¦Äܲ¢²»Ôö¼Ó³É±¾£¬µ«ÊÇÈ´»áÔö¼Ó½«À´×öÐÞ¸ÄʱµÄ³É±¾¡£×ÜÖ®£¬Äã¿ÉÒÔÔÚÌ×Óà XP ʱÃ÷ÖǵÄ×ñÊØÕâÑùµÄ·½·¨£¬»òÊDzÉȡһÖÖÄܽµµÍ³É±¾µÄÀàËÆµÄ·½·¨¡£

 

What on Earth is Simplicity Anyway

 

Òò´Ë£¬ÎÒÃÇÏ£Íû³ÌÐò´úÂëÄܹ»Ô½¼òµ¥Ô½ºÃ£¬ÕâÌýÆðÀ´Ã»Ê²Ã´ºÃÕùÂ۵ģ¬±Ï¾¹ÓÐË­ÏëÒª¸´ÔÓÄØ£¿µ«ÎÊÌâÀ´ÁË£¬¾¿¾¹ "ʲô²Å½Ð¼òµ¥ÄØ£¿"

 ÔÚ XPE Ò»ÊéÖУ¬Kent ¶Ô¼òµ¥ÏµÍ³¶©ÁËËĸöÆÀÁ¿±ê×¼£¬ÒÀÐòÊÇ (×îÖØÒªÅÅ×îÇ°Ãæ)£º

  •  Í¨¹ýËùÓвâÊÔ¡£

  • ³ÊÏÖËùÓеÄÒâͼ¡£

  • ±ÜÃâÖØ¸´¡£

  • ×îÉÙÊýÁ¿µÄÀà±ð»ò·½·¨¡£

  Í¨¹ýËùÓвâÊÔÊÇÒ»ÏîºÜÆÕͨµÄÆÀÁ¿±ê×¼£¬±ÜÃâÖØ¸´Ò²ºÜÃ÷È·£¬¾¡¹ÜÓÐЩÑз¢ÈËÔ±ÐèÒª±ðÈ˵ÄÖ¸µã²ÅÄÜ×öµ½¡£±È½ÏÂé·³µÄÊÇ "³ÊÏÖËùÓеÄÒâͼ"ÕâÒ»ÏÕâµ½µ×Ö¸µÄÊÇÊ²Ã´ÄØ£¿

  Õâ¾ä»°µÄ±¾Òâ¾ÍÊǼòµ¥Ã÷Á˵ijÌÐò´úÂë¡£XP ¶Ô³ÌÐò´úÂëµÄÒ×¶ÁÐÔÓкܸߵıê×¼¡£ËäÈ»ÔÚ XP µ±ÖУ¬"ÇÉÃîµÄ³ÌÐò´úÂë (clever code)" Õâ¸ö×ÖÑÛ¾­³£±»ÀÄÓ㬲»¹ýÒâͼÇå³þµÄ³ÌÐò´úÂ룬¶ÔÆäËûÈËÀ´ËµÕæµÄÊÇÒ»ÖÖÇÉÃî¡£Josh Kerievsky ÔÚ XP 2000 ÂÛÎÄÖоÙÁËÒ»¸öºÜºÃµÄÀý×Ó£¬¼ìÊÓÔÚ XP ÁìÓò¿ÉÄÜÊÇ´ó¼Ò×îÊìÖªµÄ JUnit µÄ³ÌÐò´úÂë¡£JUnit ʹÓà decorators ÔÚ test cases ÖмÓÈë·Ç±ØÒªµÄ¹¦ÄÜ£¬ÏñÊÇͬ²½»úÖÆ¼°Åú´ÎÉ趨µÈ£¬½«ÕâЩ³ÌÐò´úÂë³é³ö³ÉΪ decorator£¬µÄÈ·ÈÃÒ»°ãµÄ³ÌÐò´úÂë¿´ÆðÀ´Çå³þÐí¶à¡£

  µ«ÊÇÄã±ØÐëÞÑÐÄ×ÔÎÊ£¬ÕâÑù×öÖ®ºóµÄ³ÌÐò´úÂë¹»¼òµ¥Âð£¿ÎÒ¾õµÃÊÇ£¬ÒòΪÎÒÁ˽â Decorator Õâ¸ö patterns¡£µ«ÊǶÔÓÚ²»Á˽âµÄÈËÀ´Ëµ»¹ÊÇÏ൱¸´Ôӵġ£ÀàËÆµÄÇé¿ö£¬JUnit ʹÓà pluggable method£¬Ò»Öִ󲿷ֵÄÈ˸տªÊ¼½Ó´¥Ê±¶¼²»»á¾õµÃ¼òµ¥µÄ¼¼ÇÉ¡£ËùÒÔ£¬Ò²ÐíÎÒÃÇ¿ÉÒÔ˵ JUnit ¶ÔÓо­ÑéµÄÈËÀ´ËµÊDZȽϼòµ¥µÄ£¬ÐÂÊÖ·´¶ø»á¾õµÃËüºÜ¸´ÔÓ¡£

  XP µÄ "Once and Only Once" ÒÔ¼° Pragmatic Programmer(ÊéÃû) µÄ DRY(Don't Repeat Yourself) ¶¼×¨×¢ÔÚÈ¥³ýÖØ¸´µÄ³ÌÐò´úÂë¡£ÕâЩÁ¼ºÃµÄ½¨Òé¶¼ÓкÜÏÔÖø¶øÇÒ¾ªÈ˵ÄЧ¹û¡£Ö»ÒªÒÀÕÕÕâ¸ö·½Ê½£¬ÏîÄ¿¾Í¿ÉÒÔһ·˳ÀûµÄÔË×÷¡£µ«ÊÇËüÒ²²»Äܽâ¾öËùÓÐÎÊÌ⣬¼òµ¥»¯»¹ÊDz»ÈÝÒ×´ï³É¡£

  ×î½üÎÒ²ÎÓëÒ»¸ö¿ÉÄÜÊǹý¶ÈÉè¼ÆµÄÏîÄ¿£¬ÏµÍ³¾­¹ý refactor Ö®ºóÈ¥³ý²¿·Ýµ¯ÐÔµÄÉè¼Æ¡£µ«ÊǾÍÏñÆäÖÐһλ¿ª·¢ÕßËù˵µÄ "ÖØ¹¹¹ý¶ÈÉè¼ÆµÄϵͳҪ±ÈÖØ¹¹Ã»ÓÐÉè¼ÆµÄÒªÀ´µÄÈÝÒ×¶àÁË" ×öÒ»¸ö±ÈÄãËùÐèÒª¼òµ¥Ò»µãµÄÉè¼ÆÊÇ×îºÃµÄ£¬µ«ÊÇ£¬ÉÔ΢¸´ÔÓÒ»µãµãÒ²²»ÊÇʲôÑÏÖØµÄÊÂÇé¡£

 ÎÒÌý¹ý×îºÃµÄ½¨ÒéÀ´×Ô Bob ´óÊå (Robert Martin)¡£ËûµÄ½¨ÒéÊDz»ÒªÌ«ÔÚÒâʲôÊÇ×î¼òµ¥µÄÉè¼Æ¡£±Ï¾¹ºóÀ´Äã¿ÉÒÔ£¬Ó¦¸Ã£¬Ò²»áÔÙÖØ¹¹¡£Ô¸ÒâÔÚ×îºóÖØ¹¹£¬±ÈÖªµÀÈçºÎ×ö¼òµ¥µÄÉè¼ÆÖØÒªµÃ¶à¡£

 

Does Refactoring Violate YAGNI?

 

Õâ¸öÖ÷Ìâ×î½ü³öÏÖÔÚ XP ÌÖÂÛÇøÉÏ£¬µ±ÎÒÃÇÉóÊÓÉè¼ÆÔÚ XP °çÑݵĽÇɫʱ£¬ÎÒ¾õµÃºÜÖµµÃÌá³öÀ´ÌÖÂÛ¡£

 »ù±¾ÉÏÕâ¸öÎÊÌâÆðÒòÓÚÖØ¹¹ÐèÒªºÄ·Ñʱ¼äȴûÓÐÔö¼ÓÐµĹ¦ÄÜ¡£¶ø YAGNI µÄ¹ÛµãÊǼÙÉèÄãΪÁËÑÛǰµÄÐèÒª×öÉè¼Æ¶ø²»ÊÇδÀ´£¬ÕâÑùËãÊÇ»¥ÏàµÖ´¥Âð£¿

 YAGNI µÄ¹ÛµãÊDz»ÒªÔö¼ÓһЩÏֽ׶β»ÐèÒªµÄ¸´ÔÓ¹¦ÄÜ£¬ÕâÒ²ÊǼòµ¥Éè¼ÆÕâÏî¼¼ÇɵIJ¿·Ý¾«Éñ¡£Öع¹Ò²ÊÇΪÁËÂú×㾡¿ÉÄܱ£³ÖϵͳµÄ¼òµ¥ÐÔÕâ¸öÐèÒª£¬ËùÒÔµ±Äã¾õµÃ¿ÉÒÔÈÃϵͳ±äµÃ¸ü¼òµ¥µÄʱºò£¬¾Í½øÐÐÖØ¹¹¡£

 ¼òµ¥Éè¼Æ²»µ«ÀûÓÃÁË XP µÄʵÎñ¼¼ÇÉ£¬±¾ÉíÒ²ÊÇÆäÖÐÒ»ÏîÓÐÓõÄʵÎñ¼¼ÇÉ¡£Î¨ÓаéËæ×ŲâÊÔ£¬³ÖÐøÕûºÏ£¬¼°Öع¹µÄÔËÓ㬲ÅÄÜÓÐЧµØ×ö³ö¼òµ¥Éè¼Æ¡£Í¬Ê±£¬ÈÃÑз¢Ò춯ÇúÏß±£³Öƽ»ºµÄ»ù´¡Ò²¾ÍÊDZ£³ÖÉè¼ÆµÄ¼òµ¥¡£Èκβ»±ØÒªµÄ¸´ÔÓ¶¼»áÈÃϵͳ±äµÃÄÑÓÚµ÷Õû£¬³ý·ÇÕâ¸ö¸´ÔÓÐÔÊÇÄãΪÁËËùÔ¤²âµÄµ¯ÐÔ¶ø¼ÓÈëµÄ¡£²»¹ý£¬ÈËÃǵÄÔ¤²âͨ³£¶¼²»Ì«×¼È·£¬ËùÒÔ×îºÃ»¹ÊÇŬÁ¦µØ±£³Ö¼òµ¥ÐÔ¡£

 ²»¹ÜÔõÑù£¬ÈËÃDz»Ì«¿ÉÄܵÚÒ»´Î¾ÍÄܹ»»ñµÃ×î¼òµ¥µÄ¶«Î÷£¬Òò´ËÄãÐèÒªÖØ¹¹À´°ïÖúÄã¸ü½Ó½üÕâ¸öÄ¿±ê¡£

 

Patterns and XP

 

JUnit µÄÀý×ÓÈÃÎÒ²»µÃ²»Ïëµ½ patterns¡£XP ºÍ patterns Ö®¼äµÄ¹ØÏµºÜ΢ÃҲ³£³£±»ÎÊÆð¡£Joshua Kerievsky ÈÏΪ patterns ÔÚ XP ±»¹ý·ÖÇáÊÓ£¬¶øÇÒËûËùÌá³öµÄÀíÓÉÒ²Ï൱ÁîÈËÐÅ·þ£¬ÎÒ²»ÏëÔÙÖØÌá¡£²»¹ýÖµµÃÒ»ÌáµÄÊÇ£¬ºÜ¶àÈ˶¼ÈÏΪ patterns ËÆºõÓë XP ÊÇÓгåÍ»µÄ¡£

  ÕùÂ۵ı¾ÖÊÔÚÓÚ patterns ³£±»¹ý¶ÈÀÄÓá£ÊÀÉÏÓÐÌ«¶à´«ÆæÐ﵀ programmer£¬µÚÒ»´Î¶Áµ½ËÄÈ˰ïÒÔ 32 ÐгÌÐò´úÂë²ûÊö 16 ÖÖ patterns ÕâÑùµÄÊÂÇ黹¼ÇÒäÓÌÐÂ[Òë×¢6]¡£ÎÒ»¹¼ÇµÃÓÐÒ»ÍíÓë Kent ºÈ×Å´¼¾ÆÒ»ÆðÌÖÂÛһƪÎÄÕ "Not Design patterns: 23 cheap tricks (²»ÒªÓÃÉè¼ÆÄ£Ê½£­23 ¸ö¼òµ¥µÄ¾÷ÇÏ)"¡£ÎÒÃÇÈÏΪÄDz»¹ýÊÇÒÔ if Ìõ¼þʽÀ´È¡´ú strategy Õâ¸ö pattern °ÕÁË¡£ÕâÑùµÄЦ»°ÓиöÖØµã£¬patterns ±»ÀÄÓÃÁË¡£µ«²¢²»±íʾ patterns ÊDz»×ãÈ¡µÄ£¬ÎÊÌâÔÚÓÚÄãÒªÔõôÔËÓÃËü¡£

 ÆäÖÐÒ»ÏîÂÛµãÊǼòµ¥Éè¼ÆµÄÁ¦Á¿×ÔÈ»»á½«ÏîÄ¿µ¼Ïò patterns¡£ºÜ¶àÖØ¹¹µÄÀý×ÓÃ÷È·µØÕâô×ö£¬»òÕßÉõÖÁ²»ÓÃÖØ¹¹£¬ÄãÖ»Òª×ñ´Ó¼òµ¥Éè¼ÆµÄ¹æÔò¾Í»á·¢ÏÖ patterns£¬¼´Ê¹Ä㻹²»ÖªµÀ patterns ÊÇʲô¡£ÕâÑùµÄ˵·¨Ò²ÐíÊÇÕæµÄ£¬²»¹ýËüÕæµÄÊÇ×îºÃµÄ·½Ê½Â𣿵±È»Èç¹ûÄãÏȶÔÓÚ patterns Óиö´óÂÔµÄÁ˽⣬»òÕßÊÖ±ßÓÐÒ»±¾Êé¿ÉÒԲο¼£¬»á±È×Ô¼º·¢Ã÷Ð嵀 patterns ÒªºÃЩ¡£µ±ÎÒ¾õµÃÒ»¸ö pattern ¿ì¸¡ÏÖµÄʱºò£¬Îұض¨»áÈ¥·­·­ GOF µÄÊé¡£¶ÔÎÒÀ´Ëµ£¬ÓÐЧµÄÉè¼Æ¸æËßÎÒÃÇ pattern ÖµµÃ¸¶³ö´ú¼Ûȥѧϰ£­ÄǾÍÊÇËüÌØÓеļ¼Êõ¡£Í¬ÑùµØ¾ÍÏñ Joshua Ëù½¨ÒéµÄ£¬ÎÒÃÇÐèÒª¸üÊìϤÓÚÈçºÎÖð²½µØÔËÓà patterns¡£¾ÍÕâÒ»µã¶øÑÔ£¬XP Ö»ÊÇÓëÒ»°ãʹÓà patterns µÄ·½Ê½²»Í¬¶øÒÑ£¬²¢Ã»ÓÐĨɷËüµÄ¼ÛÖµ¡£

µ«ÊÇ´ÓÌÖÂÛÇøÒ»Ð©ÎÄÕ¿´À´£¬ÎÒ¾õµÃºÜ¶àÈËÃ÷ÏÔµØÈÏΪ XP ²¢²»¹ÄÀøÊ¹Óà patterns£¬¾¡¹Ü XP ´ó²¿·ÖµÄÌᳫÕßÒ²¶¼ÊÇ֮ǰ patterns Ô˶¯µÄÁìµ¼Õß¡£ÒòΪËûÃÇ¿´µ½Á˲»Í¬ÓÚ patterns µÄ¹ÛµãÂ𣿻òÊÇËûÃÇÒѾ­½« patterns ÈÚÈë˼¿¼¶ø²»±ØÔÙÈ¥Àí½âËü£¿ÎÒ²»ÖªµÀÆäËüÈ˵Ĵð°¸ÊÇʲô£¬µ«ÊǶÔÎÒÀ´Ëµ£¬patterns ÈÔÈ»ÊǷdz£ÖØÒªµÄ¡£XP Ò²ÐíÊÇ¿ª·¢µÄÒ»ÖÖÁ÷³Ì£¬µ« patterns ¿ÉÊÇÉè¼ÆÖªÊ¶µÄ¹Ç¸É£¬²»¹ÜÊÇÄÄÖÖÁ÷³ÌÕâЩ֪ʶ¶¼ÊǺÜÓÐÓõġ£²»Í¬µÄÁ÷³ÌʹÓà patterns µÄ·½Ê½Ò²¾Í²»Í¬£¬XP Ç¿µ÷µÈµ½ÐèҪʱ²ÅʹÓà patterns ÒÔ¼°Í¸¹ý¼òµ¥µÄʵ×÷Öð²½µ¼Èë patterns¡£ËùÒÔ patterns ÈÔÈ»ÊÇÒ»ÖÖ±ØÐë»ñµÃµÄ¹Ø¼ü֪ʶ¡£

 ÎÒ¶ÔÓÚ²ÉÓà XP µÄÈËʹÓà patterns µÄ½¨Ò飺

  • »¨µãʱ¼äѧϰ patterns¡£

  • ÁôÒâʹÓà patterns µÄʱ»ú (µ«ÊDZðÌ«Ôç)¡£

  • ÁôÒâÈçºÎÏÈÒÔ×î¼òµ¥µÄ·½Ê½Ê¹Óà patterns£¬È»ºóÔÙÂýÂýÔö¼Ó¸´ÔÓ¶È¡£

  • Èç¹ûÓÃÁËÒ»ÖÖ pattern È´¾õµÃûÓжà´ó°ïÖú£­²»ÓÃÅ£¬ÔٴΰÑËüÈ¥µô¡£

 ÎÒÈÏΪXPÓ¦¸ÃÒª¸ü¼ÓÇ¿µ÷ѧϰ patterns¡£ÎÒ²»È·¶¨ËüÒªÔõôºÍ XP µÄʵÎñ¼¼ÇÉ´îÅ䣬²»¹ýÏàÐÅ Kent »áÏë³ö°ì·¨À´µÄ¡£

 

Growing an Architecture

 

Èí¼þ¼Ü¹¹ÊÇÖ¸Ê²Ã´ÄØ£¿¶ÔÎÒÀ´Ëµ£¬¼Ü¹¹Õâ¸ö×ÖÑÛ´ú±íϵͳºËÐÄ×é¼þµÄ¸ÅÄҲ¾ÍÊÇÄÑÒԸıäµÄ²¿·Ý£¬Ê£ÏµĶ¼±ØÐ뽨ÔìÔÚÕâ»ù´¡ÉÏ¡£

  ÄÇôµ±ÄãʹÓÃÑݽøÊ½Éè¼ÆÊ±£¬¼Ü¹¹ÓÖ°çÑÝ×ÅʲôÑùµÄ½ÇɫĨ£¿XP µÄÅúÆÀÕßÔÙÒ»´ÎµØÉù³Æ XP ºöÊӼܹ¹£¬ÒòΪ XP ʹÓõķ½·¨ÊǾ¡¿ìµØÐ´³ÌÐò£¬È»ºóÏàÐÅÖØ¹¹»á½â¾öËùÓÐÉè¼ÆµÄÎÊÌâ¡£ºÜÓÐȤµØ£¬ËûÃÇ˵µÃû´í£¬ÕâÓпÉÄÜÊÇ XP µÄȱµã¡£ÎÞÒɵأ¬×î»ý¼«µÄ XP ר¼Ò£­Ïñ Kent Beck, Ron Jeffries, ¼° Bob Martin£­¾¡ÆäËùÄܵرÜÃâÔ¤ÏȽṹÐÔµÄÉè¼Æ¡£ÔÚÄãÖªµÀÕæµÄÒªÓõ½Êý¾Ý¿â֮ǰ£¬²»Òª¼ÓÈëÊý¾Ý¿â£¬ÏÈÓõµ°¸À´´úÌæ£¬ÔÚÖ®ºóµÄ½×¶ÎÔÙÓÃÖØ¹¹¼ÓÈëÊý¾Ý¿â¡£

  ÎÒ³£±»ÈÏΪÊÇÒ»¸öµ¨Ð¡µÄ XP ר¼Ò£¬ÕâµãÎÒ²»Í¬Òâ¡£ÎÒÈÏΪһ¸ö¸ÅÀ¨ÐԵijõʼ¼Ü¹¹ÓÐËüµÄÓô¦ÔÚ¡£ÏñÊÇÒ»¿ªÊ¼ÒªÔõô½«Ó¦Ó÷ֲ㣬ÈçºÎÓëÊý¾Ý¿â»¥¶¯ (Èç¹ûÄãÐèÒªµÄ»°)£¬ÒªÊ¹ÓÃÄÄÖÖ·½Ê½È¥´¦ÀíÍøÕ¾·þÎñÆ÷¡£

  »ù±¾ÉÏ£¬ÎÒÈÏΪÕâЩ¾ÍÊǽüÄêÀ´ÎÒÃÇËùÑо¿µÄ patterns¡£ÓÈÆäµ±Äã¶Ô patterns µÄÈÏʶԽÉÄã¾Í»áÔ½ÊìϤҪÔõÃ´È¥ÉÆÓÃËüÃÇ¡£²»¹ý£¬¹Ø¼üÐԵIJîÒìÊÇÔÚÓÚÕâЩ³õÆÚ¼Ü¹¹µÄ¾ö¶¨ÊÇ¿ÉÒÔ¸ü¸ÄµÄ£¬Ö»ÒªÍŶÓÈÏΪËûÃÇÔçÆÚµÄÅжÏÓÐÎóʱ£¬¾ÍÓ¦¸ÃÒªÓÐÓÂÆøÈ¥ÐÞÕýËüÃÇ¡£ÓÐÈ˸úÎÒ½²ÁËÒ»¸öÏîÄ¿µÄ¹ÊÊ£¬¾ÍÔÚÏîÄ¿¿ìÒª·¢±íʱ£¬¾ö¶¨Á˲»ÔÙÐèÒª EJB£¬²¢ÇÒÒª½«ËüÃÇ´ÓϵͳÖÐÒÆ³ý¡£ÕâÊÇÒ»¸öÏ൱´ó¹æÄ£µÄÖØ¹¹£¬²»¹ý×îºó»¹ÊÇÍê³ÉÁË¡£ÕâЩÓÐЧµÄʵÎñ¼¼Çɲ»½öÈÃÊÂÇé±äµÃ¿ÉÄÜ£¬¶øÇÒºÜÖµµÃÈ¥×ö¡£

  Èç¹ûÒÔ²»Í¬µÄ·½Ê½À´×öÕâ¼þÊÂÄØ£¿Èç¹ûÄã¾ö¶¨²»²ÉÓà EJB£¬½«À´»áÄÑÒÔ¼ÓÈëÂð£¿ÄãÊÇ·ñÒªÔÚÊÔ¹ý¸÷ÖÖ·½Ê½È´·¢ÏÖÒÀȻǷȱʲô£¬È»ºó²ÅʹÓà EJB£¿ÕâÊÇÒ»¸öÇ£ÉæºÜ¶àÒòËØµÄÎÊÌâ¡£²»Ê¹Óø´ÔÓµÄ×é¼þµ±È»¿ÉÒÔÔö¼ÓϵͳµÄ¼òµ¥¶È£¬¶øÇÒ¿ÉÒÔÈÃÊÂÇé½øÕ¹±È½Ï¿ì£¬µ«ÓÐʱºò´ÓϵͳÖгéµôij¸ö²¿·Ý»á±È¼ÓÈëËüÒªÈÝÒ×¶àÁË¡£

  ËùÒÔÎÒ½¨Òé´ÓÆÀ¹À¼Ü¹¹¿ÉÄܵÄÑù×Ó¿ªÊ¼¡£¼ÙÈçÄã¿´µ½½«»áÓжà¸öʹÓÃÕßʹÓõ½´óÁ¿µÄ×ÊÁÏ£¬Ò»¿ªÊ¼¾ÍÖ±½ÓʹÓÃÊý¾Ý¿â¡£ÈôÄã¿´µ½ºÜ¸´ÔÓµÄÉÌÒµÂß¼­£¬¾ÍÌ×Óà domain model¡£Äã»á»³ÒÉÊÇ·ñÆ«Àë¼òµ¥µÄÌØÐÔ£¬Õ⵱Ȼ²»ÊÇ YAGNI µÄ¾«Éñ¡£ËùÒÔÄãÒªÓÐËù×¼±¸£¬ÔÚ·¢ÏÖËùʹÓõĽṹûÓаïÖúʱ¾¡¿ì¼ò»¯ÄãµÄ½á¹¹¡£

 

UML and XP

 

ÔÚÎÒͶÉíÓÚ XP ÁìÓòÖ®ºó£¬ÓÉÓÚÎÒÓë UML µÄ¹ØÏµÈÃÎÒÓöµ½Ò»¸ö»ÓÖ®²»È¥×î´óµÄÎÊÌ⣺ÕâÁ½Õß²»ÊDz»¼æÈÝÂð£¿

  µ±È»ÓÐЩ²»¼æÈÝ¡£XP ÏÔÈ»²»ÖØÊÓ diagram¡£ËäÈ»Ì¨ÃæÉÏ´ó¼Ò¶Ô "ºÃÓþÍÓÃ" Óй²Ê¶£¬µ«ÊÇʵ¼ÊÉÏÈ´ÊÇ "ʵ¼ÊÉϲÉÓà XP µÄÈ˲»»­À¶Í¼"¡£ÕâÖÖÓ¡ÏóÒòΪÈç Kent ÕâЩÈ˲»Ï°¹ß×÷ͼµÄÏÖÏó¶øÇ¿»¯ÁË¡£ÊÂʵÉÏÎÒÒ²´ÓÀ´Ã»¿´¹ý Kent Ö÷¶¯Ê¹Óù̶¨µÄ±ê¼Ç·¨»­ÏÂÈí¼þÀ¶Í¼¡£

  ÎÒ¾õµÃÕâÖÖÇéÐÎÀ´×ÔÁ½¸öÒòËØ£¬ÆäÒ»ÊÇÓÐÈ˾õµÃÈí¼þÀ¶Í¼ÓÐÓ㬶øÓÐÈ˲»¾õµÃÓÐÓá£ÄѾÍÄÑÔÚ¾õµÃÀ¶Í¼ÓÐÓõÄÈ˲»ÊÇÕæÕý±ØÐ붯ÊÖ×öµÄÈË£¬¶ø±ØÐ붯ÊÖ×öµÄÈËÈ´²»¾õµÃÓÐÆä±ØÒªÐÔ¡£ÊÂʵÉÏÎÒÃÇÓ¦¸Ã½ÓÊÜÓÐÈËϲ»¶Ó㬶øÓÐÈ˲»Ï²»¶Óá£

  ÁíÒ»ÖÖÇéÐÎÊÇÈí¼þÀ¶Í¼³£ÒýÈ˽øÈë·±ÖØµÄÁ÷³ÌÖУ¬ÕâЩÁ÷³ÌºÄʱ·ÑÁ¦È´²»¼ûµÃÓÐÓã¬ÉõÖÁ»¹»á²úÉú»µ´¦¡£ÎÒÈÏΪӦ¸Ã½Ìµ¼ÈËÃÇÈçºÎʹÓÃÀ¶Í¼È´²»ÂäÈëÕâÑùµÄÏÝÚ壬¶ø²»ÊÇÏñÄÇЩÌᳫÕß½ö½öÏû¼«µÄ˵ "±ØÒªÊ±²ÅÓÃ"¡£

  ËùÒÔ£¬ÎÒ¶ÔÓÚÓÐЧʹÓÃÀ¶Í¼µÄ½¨ÒéÊÇ£º

  Ê×ÏȱðÍüÁËÄã»­ÕâЩͼµÄÄ¿µÄ£¬Ö÷ÒªµÄ¼ÛÖµÔÚÓÚ¹µÍ¨¡£ÓÐЧµÄ¹µÍ¨Òâζ×ÅÑ¡ÔñÖØÒªµÄ²¿·Ý¶øºöÂÔ²»ÖØÒªµÄ²¿·Ý¡£ÕâÑùµÄÑ¡ÔñÒ²ÊÇÓÐЧÔËÓà UML µÄ¹Ø¼ü¡£²»±Ø°ÑÈ«²¿µÄ class ¶¼»­³öÀ´£¬»­³öÖØÒªµÄ¾ÍºÃ¡£¶ÔÓÚÿ¸ö class Ò²Ö»ÏÔʾ¹Ø¼üµÄ attribute ºÍ operation£¬¶ø²»ÊÇÈ«²¿ÏÔʾ³öÀ´¡£Ò²²»ÒªÎªËùÓÐµÄ use case ºÍ²½Öè»­Ñ­Ðòͼ... ³ý·ÇÄãÒѾ­ÓÐÍêÕûµÄÏëÏó¡£ÓÐÒ»¸öʹÓÃÀ¶Í¼µÄͨ²¡¾ÍÊÇÈËÃÇͨ³£Ï£ÍûÏêϸÍêÕûµÄ°Ñͼ±íÏÖ³öÀ´¡£Æäʵ³ÌÐò´úÂë¾ÍÊÇÌṩÍêÕûÐÅÏ¢µÄ×î¼ÑÀ´Ô´£¬Í¬Ê±³ÌÐò´úÂë±¾ÉíÒ²ÊDZ£³ÖÐÅϢͬ²½×î¼òµ¥µÄ·½Ê½¡£ÒòΪͼÐεľÞϸÃÒÒžÍÊÇһĿÁËÈ»µÄµÐÈË¡£

  À¶Í¼µÄÓÃ;ÊÇÔÚ¿ªÊ¼×«Ð´³ÌÐò´úÂë֮ǰ̽ÌÖÉè¼ÆÄÚÈÝ¡£Ó¡ÏóÖÐ×ÜÊǾõµÃÕâÑùµÄ¶¯×÷ÔÚ XP ÊDz»ºÏ·¨µÄ£¬µ«²¢²»ÊÇÕâÑù¡£ºÜ¶àÈ˶¼ËµÈç¹ûÄãÓöµ½¼¬ÊÖµÄÎÊÌ⣬¾ÍÖµµÃÏÈ×öЩÉè¼Æ¡£µ«Êǵ±Äã½øÐÐÉè¼ÆÊ±£º

  • ±£³Ö¼ò¶Ì¡£

  • ²»Òª×öµÃÌ«Ïêϸ(Ö»ÌôÖØÒªµÄ×ö)¡£

  • °Ñ½á¹ûµ±×÷ÊDzÝͼ£¬¶ø²»ÊǶ¨°¸¡£

 ×îºóÒ»µãÖµµÃÉîÈë̽ÌÖ¡£µ±Äã×öÔ¤ÏÈʽÉè¼Æ£¬Î޿ɱÜÃâµÄ»á·¢ÏÖһЩ´íÎ󣬶øÇÒÊÇÔÚ׫д³ÌÐò´úÂëµÄʱºò²Å·¢ÏÖ¡£Èç¹ûÄãÊÊʱ±ä¸üÉè¼Æ£¬Ëü¾Í²»ÊÇÎÊÌâ¡£Âé·³µÄÊÇÈç¹ûÄãÈ϶¨Éè¼ÆÒѾ­¶¨°¸£¬Ã»ÓÐ´Ó coding ¹ý³Ìѧµ½¾­Ñé¶ø¸ú×ÅÏÈǰµÄÉè¼Æ½«´í¾Í´í¡£

  ±ä¸üÉè¼Æ²»´ú±íÒ»¶¨Òª¸ü¸ÄÀ¶Í¼¡£»­ÕâЩÀ¶Í¼À´°ïÖúÄãÁ˽âÉè¼Æ£¬È»ºó¾Í°ÑͼÈÓ¿ª£¬Õâô×öÊǷdz£ºÏÀíµÄ¡£ÕâЩͼÄܹ»°ïÉÏæ¾ÍÓÐËüµÄ¼ÛÖµÁË¡£ËüÃDz»±ØÓÀÔ¶´æÔÚ£¬×îÓÐÓÃµÄ UML ͼÐÎÒ²²»»áÊÇÊÕ²ØÆ·¡£

  ²»ÉÙʵÐÐ XP µÄÈËʹÓà CRC ¿¨£¬ÕâÓë UML ²¢²»³åÍ»¡£ÎÒ³£³£½»»¥ÔËÓà CRC ¿¨ºÍ UML£¬ÎÒÒ²×ÜÊÇÒÀÕÕÊÖÉϵŤ×÷Ñ¡Ôñ×îÓÐÓõļ¼ÇÉ¡£UML ͼÐεÄÁíÒ»¸öÓÃ;ÊdzÖÐøÐÞ¶©µÄÎļþ¡£ËüÒ»°ãµÄÐÎʽ£¬¾ÍÊÇÔÚ case tool Öп´µ½µÄÄ£ÐÍ¡£×î³õµÄÏë·¨ÊÇÁô×ÅÕâÑùµÄ×ÊÁÏÓÐÖúÓÚ½¨¹¹ÏµÍ³¡£ÊÂʵÉÏÈ´³£³£Ã»Ê²Ã´Óá£

  • ±£³ÖͼÐεĸüÐÂÌ«»¨Ê±¼ä£¬×îºó³£ÎÞ·¨Óë³ÌÐò´úÂëͬ²½¡£

  • ËüÃÇÒþº¬ÔÚ CASE tool »ò thick binder£¬ÈÃÈ˺öÂÔËü¡£

 ËùÒÔҪϣÍûÕâÖÖ³ÖÐøÐÞ¶©µÄÎļþÓÐÓ㬾ʹÓÕâЩ¿´µ½µÄÎÊÌâÏÂÊÖ£º

  • Ö»ÓÃһЩ¸ÄÆðÀ´²»ÖÁÓÚÈÃÈ˾õµÃÍ´¿àµÄͼ¡£

  • °Ñͼ·ÅÔÚÏÔÑ۵ĵط½¡£ÎÒϲ»¶»­ÔÚǽÉÏ£¬¹ÄÀø´ó¼ÒÒ»Æð¶¯ÊÖÐ޸ġ£

  • ¼ìÌÖÕâЩͼÊDz»ÊÇÓÐÈËÔÚÓã¬Ã»ÓõľͲÁµô¡£

ʹÓà UML µÄ×îºóÒ»¸öÎÊÌâÊÇÎļþµÄ½»½Ó£¬ÏñÊDz»Í¬ÍŶӵĽÓÊÖ¡£XP µÄÏë·¨ÊÇÎļþ¾ÍÏñ˵¹ÊÊ£¬ËùÒÔÎļþµÄ¼ÛÖµÓɹ˿ÍÀ´¾ö¶¨¡£ÓÚÊÇ UML ÓÖÅÉÉÏÓ󡣬ËùÌṩµÄͼÐοÉÒÔ°ïÖú¹µÍ¨¡£±ðÍüÁ˳ÌÐò´úÂë±¾Éí¾ÍÔ̺¬ÁËËùÓÐÏêϸµÄÐÅÏ¢£¬Í¼ÐεÄ×÷ÓÃÖ»ÊÇÌṩ¸Å¹ÛÒÔ¼°±êÊ¾ÖØÒªµÄ²¿·Ý¡£

 

On Metaphor

 

ºÃ°É£¬ÎÒÒ²Ðí¸Ã̹³Ð - ÎÒһֱûÓÐץס metaphor µÄ¾«Éñ¡£ËüÓÐÓ㬶øÇÒÔÚ C3 ÏîÄ¿ÖÐÔËÓõúܺ㬵«ÊDz¢²»±íʾÎÒÖªµÀÔõôÓÃËü£¬¸ü²»ÓÃ˵Ҫ½âÊÍÔõôÓÃÁË¡£

  XP ʵÎñ¼¼ÇÉÖÐµÄ Metaphor Êǽ¨Á¢ÔÚ Ward Cunningham's ΪϵͳÃüÃûµÄ×ö·¨ÉÏ¡£ÖصãÊÇÏë³öÒ»¸öÖÚËùÖÜÖªµÄ´Ê»ã£¬ÒÔÕâÑùÒ»¸ö×ÖÀ´±ÈÓ÷Õû¸ö·¶³ë¡£Õâ¸ö´ú±íϵͳµÄÃû×Ö»áÌ×ÓÃÔÚ class ºÍ method µÄÃüÃûÉÏ¡£

  ÎÒÒÔ²»Í¬ÁìÓòµÄ¹ÛÄîÐÔÄ£ÐÍ£¬ÀûÓà UML ºÍËüµÄǰÉíÓëÁìÓòר¼ÒÒ»Æð½¨Á¢ÁËÒ»¸öÃüÃûϵͳ¡£ÎÒ·¢ÏÖÄã±ØÐëºÜСÐÄ£¬ÄãÒª±£³Ö×¼òµÄ×¢ÊÍ£¬¶øÇÒÒªµ±ÐıðÈü¼ÊõÐÔµÄÎÊÌâ²»Öª²»¾õµÄÓ°ÏìÕâ¸öÄ£ÐÍ¡£µ«ÊÇÒ»µ©ÄãÍê³ÉÕâ¸ö¹¤×÷£¬Äã¾Í¿ÉÒÔΪ¸÷ÖÖÁìÓò½¨Á¢Ò»×é´Ê»ã£¬ÕâЩ´Ê»ãÊÇ´ó¼Ò¶¼ÄÜÁ˽ⲢÇÒ¿ÉÓÃÀ´ÓëÑз¢ÈËÔ±¹µÍ¨µÄ¡£ÕâÖÖÄ£ÐÍÎÞ·¨Óë class Éè¼ÆÍêÃÀµÄÎǺϣ¬µ«ÊÇ×ã¹»¸øÕû¸öÁìÓòÒ»¸öͨÓõĴúÃû´Ê¡£

  Ä¿Ç°ÎÒÕÒ²»µ½ÈκÎÀíÓÉ˵Ã÷ΪºÎÕâÑùµÄÒ»¸ö×Ö»ãÎÞ·¨³ÉΪһ¸ö±ÈÓ÷£¬¾ÍÏñ C3 Õâ¸ö³É¹¦µÄÀý×Ó£»ÎÒÒ²²»¾õµÃÒÔϵͳΪÖ÷ÕÒµ½ÔÚ¸ÃרҵÁìÓòµÄÒ»¸ö´Ê»ãÓÐʲô»µ´¦¡£Í¬Ê±ÎÒÒ²²»»á·ÅÆú¿ÉÒÔÔË×÷×ÔÈçµÄΪϵͳÃüÃûµÄ¼¼ÇÉ¡£

  ÈËÃdz£ÅúÆÀ XP ÄËÊÇ»ùÓÚ¾õµÃÒ»¸öϵͳʵÔÚÊÇÖÁÉÙÐèÒªÒ»¸ö´ó¸ÅµÄÉè¼Æ¡£XP ר¼ÒÔòÒÔ "¾ÍÊÇ metaphor °¡£¡" À´ÏìÓ¦¡£µ«ÊÇÎÒ»¹ÊÇûÓп´µ½Ò»¸ö¶ÔÓÚ metaphor ÁîÈËÐÅ·þµÄ½âÊÍ¡£ÕâÊÇ XP µÄȱº¶£¬±ØÐëÓÉ XP ר¼ÒÀ´Àí³öÍ·Ð÷¡£

 

Do you wanna be an Architect when you grow up?

 

½ü¼¸ÄêÀ´ "software architect (Èí¼þÉè¼ÆÊ¦)" Ô½À´Ô½ÈÈÃÅ£¬ÕâÊÇÒ»¸ö¾ÍÎÒ¸öÈ˶øÑÔÄÑÒÔ½ÓÊܵÄÃû´Ê¡£ÎÒ̫̫Êǽṹ¹¤³Ìʦ£¬¹¤³ÌʦºÍ½¨Öþʦ֮¼äµÄ¹ØÏµÊÇ... ÓÐȤµÄ¡£ÎÒ×îϲ»¶µÄÒ»¾ä»°ÊÇ£º½¨Öþʦ¶ÔÈýÖÖ B ÊǺõ쬵ÆÅÝ¡¢¹àľ´Ô¡¢ºÍÄñ¡£ÒòΪ½¨Öþʦ»­³öÕâЩÃÀÀöµÄͼ»­£¬µ«È´Òª¹¤³Ìʦ±£Ö¤ÄÜ×ö³öÀ´¡£½áÂÛÊÇÎÒ±ÜÃâ software architect Ò»´Ê£¬±Ï¾¹Èç¹ûÁ¬ÎÒµÄ̫̫¶¼²»ÄÜ×ðÖØÎÒµÄרҵ£¬ÎÒÓÖÔõôÄÜ¶ÔÆäËûÈËÓÐËùÆÚÍûÄØ£¿

 ¶ÔÈí¼þÀ´Ëµ£¬architect Ò»´Ê¿ÉÒÔ´ú±íºÜ¶àÊÂÇé¡£(Èí¼þ½çºÜ¶à´Ê¶¼¿ÉÒÔ´ú±íºÜ¶àÊ¡£) Õâͨ³£·ûºÏÒ»¾ä»°£ºÎÒ²»½öÊÇÒ»¸ö³ÌÐòÔ±£¬ÎÒ»¹ÊÇÒ»¸öÉè¼ÆÊ¦[Òë×¢2]¡£»¹¿ÉÒÔ½øÒ»²½½âÒë³É£ºÎÒÏÖÔÚÊÇÒ»¸öÉè¼ÆÊ¦ - ÎÒ¶ÔÓÚÍê³ÉËùÓгÌÐòÀ´ËµÌ«ÖØÒªÁË¡£È»ºóÕâ¸öÎÊÌâ¾Í±ä³É£¬µ±ÄãÒªÕ¹ÏÖ¼¼ÊõÁìµ¼µÄʱºò£¬ÄãÊDz»ÊǸðÑ×Ô¼ºÓë·³ËöµÄ³ÌÐò׫д·ÖÇå³þ£¿

 Õâ¸öÎÊÌâÒýÆðÖÚ¶àµÄ²»Âú¡£ÎÒ¿´µ½ÈËÃǶÔÓÚÔÙÒ²ÎÞ·¨µ£ÈÎÉè¼Æ½ÇÉ«ÕâÑùµÄÏë·¨¸Ðµ½ÉúÆø¡£ÎÒ×î³£Ìýµ½£ºÔÚ XP ûÓÐÉè¼ÆÊ¦µÄ»ÓÈ÷¿Õ¼ä¡£

 ¾ÍÉè¼Æ±¾ÉíµÄ½ÇÉ«À´Ëµ£¬ÎÒ²»¾õµÃ XP ²»ÖØÊÓ¾­Ñé»òºÃµÄÉè¼Æ¡£ÊÂʵÉ϶àλ XP µÄÌᳫÕß - Kent Back¡¢Bob Martin¡¢µ±È»»¹ÓÐ Ward Cunningham - ¶¼ÊÇÎÒ´Ó¶øÑ§Ï°Éè¼ÆµÄ¶ÔÏó¡£È»¶øÕâÒ²´ú±í×ÅËûÃǵĽÇÉ«´Ó´ó¼Ò¼ÈÓеÄÓ¡ÏóÖпªÊ¼×ª±ä³ÉΪ¼¼ÊõÁìµ¼Õß¡£

 ÎÒ½«ÒÔһλ ThoughtWorks µÄ¼¼ÊõÁìµ¼Õß Dave Rice ΪÀý¡£Dave ²ÎÓëÁ˺ܶà¸öÑз¢ÖÜÆÚ£¬²¢ÇÒ·ÇÕýʽµÄÖ¸µ¼Ò»¸ö 50 È˵ÄÏîÄ¿¡£Ëûµ£ÈÎÖ¸µ¼µÄ½ÇÉ«Òâζ×ÅÒª»¨ºÜ³¤µÄʱ¼äÓë³ÌÐòԱΪÎé¡£µ±³ÌÐòÔ±ÐèÒª°ïÖú£¬Ëû¾Í½éÈ룬·ñÔò¾ÍÁôÒâ×Å¿´Ë­ÐèҪЭÖú¡£ËûµÄ×ùλÓÐÒ»¸öÃ÷ÏÔµÄÌØÕ÷£¬µ£ÈÎһ볤ÆÚµÄ˼¿¼¹¤×÷Õߣ¬Ëû¿ÉÒÔÔÚÈκÎÐÎʽµÄ°ì¹«»·¾³ÊÊÓ¦Á¼ºÃ¡£ËûÔø¾­Óë·¢Ðв¿¾­Àí Cara ¹²Ïí°ì¹«ÊÒÒ»¶Îʱ¼ä¡£¶øÔÚ×îºó¼¸¸öÔ£¬Ëû¸üÊǰᵽ¹¤³ÌʦÃǹ¤×÷µÄ¿ª·Åʽ¿Õ¼ä (¾ÍÏñ XP С×éϲ»¶µÄ¿ª·Åʽ "Õ½¶·¿Õ¼ä")¡£Õâô×ö¶ÔËûºÜÖØÒª£¬Ëû¿ÉÒÔÖªµÀÊÂÇéµÄ½øÕ¹£¬²¢ÊÊʱÉì³öÔ®ÊÖ¡£

 ÖªµÀ XP µÄÈ˾ÍÄܹ»Á˽âÎÒÃèÊöµÄÊÇ XP "½ÌÁ·" µÄÇå³þ½ÇÉ«¡£µÄÈ·£¬ÔÚ XP ÍæµÄÎÄ×ÖÓÎÏ·ÖÐÌáµ½Áìµ¼¼¼Êõ¾ÍÊÇÔÚÃè»æ "½ÌÁ·" Õâ¸ö½ÇÉ«¡£ÆäÒâÒåÊǺÜÇå³þµÄ£ºÔÚ XP ¼¼ÊõµÄÁìµ¼ÌØÖÊÊÇ͸¹ý½Ìµ¼³ÌÐòÔ±ºÍ°ïÖúËûÃÇ×ö¾ö¶¨¶ø³ÊÏÖ¡£ÕâÊÇÒ»ÖÖÐèÒªÁ¼ºÃÈ˼ʹÜÀíºÍ¼¼Êõ²¢Öصļ¼ÇÉ¡£Jack Bolles ÔÚ XP2000 ˵£º¹Âµ¥µÄ´óʦÓеã»ú»áÁË£¬ºÏ×÷ºÍ½Ìµ¼Êdzɹ¦µÄ¹Ø¼ü¡£

 ÔÚÑÐÌÖ»áµÄÍí²Í»áÉÏ£¬ÎÒºÍ Dave ÔÚ̸»°Ê±¶Ô XP ÓÐÁËЩ¶ÔÁ¢µÄÒâ¼û¡£µ±ÎÒÃÇÌÖÂÛµ½ÒÔǰµÄ¾­Ñ飬ÎÒÃǵķ½·¨ÓÐÏ൱µÄÀàËÆ¡£ÎÒÃǶ¼Æ«ºÃ adaptive£¬iterative development£¬Ò²ÈÏΪ²âÊÔÊÇÖØÒªµÄ¡£ËùÒÔÎÒÃǶ¼¶ÔËû·´¶ÔµÄÁ¢³¡¸Ðµ½ÒÉ»ó¡£È»¶øËûÌáµ½ "×îºóÎÒÒªµÄÊdzÌÐòÔ±ÕÕ×ÅÉè¼ÆÃ¦ÓÚÖØ¹¹"¡£ÊÂÇéÒ»ÏÂ×ÓÃ÷ÀÊÆðÀ´¡£ºóÀ´ Dave ÓÖ¶ÔÎÒ˵ "Èç¹ûÎÒ²»ÐÅÈÎÎҵijÌÐòÔ±£¬ÎҺαØÒªÓÃËûÃÇÄØ£¿"£¬¹ÛÄîÉϵĸôºÒ¾Í¸ü¼ÓÇå³þÁË¡£ÔÚ XP ÀïÍ·£¬Óо­ÑéµÄÑз¢ÈËÔ±ËùÄÜ×öµÄ×îÖØÒªµÄÒ»¼þʾÍÊǾ¡Á¿½«ËùÓм¼Êõ´«¼Ì¸øÐÂÊÖ¡£²»Í¬ÓÚÒ»¸ö¾ö¶¨ËùÓÐÖØÒªÊÂÇéµÄ½¨Öþʦ£¬ÄãÓÐÒ»¸öÄܹ»½Ìµ¼Ñз¢ÈËÔ±ÈçºÎ×öÖØ´ó¾ö¶¨µÄ½ÌÁ·¡£¾ÍÏñ Ward Cunningham Ö¸³ö£¬Õâô×ö²»Ö»ÊÇÔö½øÁËÐÂÊÖµÄÄÜÁ¦£¬¶ÔÏîÄ¿µÄºÃ´¦¸ü´óÓÚÒ»¸ö¹ÂÁ¢ÎÞÔ®µÄ³¬ÈËËùÄÜ×öµÄ¡£[ Òë×¢7]

 

Things that are difficult to refactor in

 

ÎÒÃÇÄÜÓà refactoring À´´¦ÀíËùÓÐÉè¼Æ·½ÃæµÄ¾ö¶¨Â𣿻òÕߣ¬ÓÐЩÎÊÌâÌ«ÆÕ±é¶øÇÒÄÑÒÔÔÚ½«À´¼ÓÈëÉè¼ÆÖУ¿´Ëʱ£¬XP µÄÕýͳ×ö·¨ÊÇËùÓÐÐèÇ󶼿ÉÒÔÇáÒ×µÄÔÚÐèÒªµÄʱºòÔö¼Ó£¬ËùÒÔ YAGNI ×ÜÊÇÄܹ»ÊÊÓá£ÎÒ²ÂÊDz»ÊÇÓÐÀýÍ⣿ÓÐÒ»¸ö²»´íµÄ£¬±»ÌÖÂÛµ½µÄÀý×ÓÊÇÈí¼þµÄ¹ú¼Ê»¯¡£ÕâÊDz»ÊÇÒ»ÖÖÏÖÔÚÓ¦¸ÃÁ¢¼´½øÐУ¬·ñÔòÒÔºóÔÙ¼ÓÈëʱ»á¾õµÃÍ´¿àµÄÊÂÇ飿

ÎÒÄÜÇáÒ×µÄÏëÏóһЩÊÂÇé¾ÍÊÇÕâÖÖÇéÐΡ£ÊÂʵÉÏÎÒÃÇÈÔÈ»ÕÆÎÕÌ«ÉÙµÄÐÅÏ¢¡£Èç¹ûÄã±ØÐëÂ½Ðø¼ÓÈëһЩ¹¦ÄÜ£¬Èç¹ú¼Ê»¯£¬¶øÄãÖªµÀÄÇÐèÒª¶àÉÙ¹¤·ò¡£Äã±È½Ï²»ÈÝÒ×Òâʶµ½ÔÚÄãÕæÕýÐèÒªËû֮ǰ£¬ÄãÒª»¨¶àÉÙʱ¼ä¼ÓÈëËü£¬²¢ÇÒÒª³¤Ê±¼äµÄά»¤Ëü¡£ÄãÒ²±È½Ï²»ÈÝÒײì¾õµ½Ò²ÐíÄã¿ÉÄÜ×ö´íÁË£¬ËùÒÔµ½Í·À´»¹ÊÇÐèÒª×öЩ refactoring¡£

ÓÐÒ»²¿·ÝÄܹ»Îª YAGNI ±ç»¤µÄÀíÓÉÊÇÓÐЩԤÏÈ×öµÄ¹¦ÄÜ¿ÉÄÜ×îºó²¢²»ÐèÒª£¬»òÕßËü²¢²»ÈçÔ¤ÆÚµÄ½á¹û¡£²»×öÕâЩËùʡϵÄÁ¦Æø±ÈÓà refactoring À´¸ü¸Ä³ÉΪ·ûºÏÐèÒªËùÓõÄÁ¦ÆøÒªÉÙ¡£

 ÁíÍâÒ»¸öÒªÏëµÄÎÊÌâÊÇÄãÊÇ·ñÕæµÄÖªµÀÔõô×ö¡£Èç¹ûÄãÓкܶà´Î×öÈí¼þ¹ú¼Ê»¯µÄ¾­Ñ飬Äã»áÖªµÀ¸ÃÓÃʲôģʽÀ´×÷¡£ÄÇÑùµÄÇéÐÎÏÂÄãÓ¦¸Ã»á°ÑËü×÷ºÃ¡£ÕâʱÄãËù¼ÓÈëµÄÔ¤ÁôµÄ½á¹¹¿ÉÄÜ»á±ÈÄãÍ·Ò»´Î´¦ÀíÕâÖÖÎÊÌâÒªºÃ¡£ËùÒÔÎÒµÄÏë·¨ÊÇ£¬Èç¹ûÄãÖªµÀÔõô×ö£¬Äã¾ÍÒª¿¼ÂÇÏÖÔÚ×öºÍ½«À´×ö£¬Á½ÖÖÇéÐÎÖ®¼ä²»Í¬µÄ³É±¾¡£·´¹ýÀ´Ëµ£¬Èç¹ûÄãûÓд¦Àí¹ýÄÇÑùµÄÎÊÌ⣬²»½öÊÇÄãÎÞ·¨ÕýÈ·ÅжÏÐèÒªµÄ³É±¾£¬ÄãÒ²±È½Ï²»¿ÉÄܰÑÊÂÇé×÷ºÃ¡£ÕâÖÖÇéÐΣ¬Äã¾ÍҪѡÔñ½«À´ÔÙ×ö¡£Èç¹ûÄ㻹ÊÇÖ´Òâ×öÁË£¬¶øÇÒ³¢µ½¿à¹û£¬¿ÉÄÜ»á±È²»×öµÄÇé¿ö¸üÔã¡£µ±ÄãµÄ×éÔ±¸üÓо­Ñ飬Äã¶ÔÏà¹ØÁìÓòÓиü¶àÈÏʶ£¬Äã¶ÔÐèÇóÒ²»á¸üÁ˽⡣ͨ³£µ½ÕâʱÄã»ØÍ·¿´²Å»á·¢ÏÖÊÂÇéÓжà¼òµ¥¡£ÌáÔç¼ÓÈëµÄÉè¼Æ±ÈÄãÏëÏóÖÐÒªÄѶàÁË¡£

 Õâ¸öÎÊÌâÒ²¸ú stories µÄ˳ÐòÃÜÇÐÏà¹Ø¡£ÔÚ Planning XP Ò»ÊéÖУ¬Kent ºÍÎÒ¹«¿ªµÄÖ¸³öÎÒÃÇµÄÆç¼û¡£Kent Æ«ÏòÓÚÖ»ÈÃÉÌÒµ¼ÛÖµÕâÒ»¸öÒòËØÓ°Ïì stories µÄ˳Ðò¡£ÔÚ¶ÌÔݵÄÒâ¼û²»ºÏÖ®ºó Ron Jeffries ҲͬÒâÕâÖÖÏë·¨¡£ÎÒÈÔ±£³Ö»³ÒÉ¡£ÎÒÏàÐÅÔÚÉÌÒµ¼ÛÖµºÍ¼¼Êõ·çÏÕÖ®¼äÄÜÕÒµ½Æ½ºâµã¡£»ùÓÚÕâÑùµÄÀíÓÉÈÃÎÒÌáÔçΪÈí¼þ¹ú¼Ê»¯×ö×¼±¸ÒÔ½µµÍ·çÏÕ¡£µ«ÊÇÕâÖÖ×ö·¨Ò²Ö»Óе±µÚÒ»½×¶Î·¢ÐоÍÐèÒª½«Èí¼þ¹ú¼Ê»¯²ÅÄܳÉÁ¢¡£¾¡¿ì´ïµ½Ò»¸ö½×¶ÎµÄ·¢ÐÐÊǷdz£ÖØÒªµÄ¡£ÈκÎÔ­À´²»ÐèÒª¶øºóÀ´±ØÐëÔö¼ÓµÄ¸´ÔÓÐÔ¶¼ÖµµÃÔÚµÚÒ»½×¶Î·¢ÐÐÖ®ºó²Å¿ªÊ¼¡£·¢ÐÐÖ®ºóÔË×÷ÖеijÌÐòÓÐÇ¿´óµÄÁ¦Á¿£¬Ëüץס¹Ë¿ÍµÄ×¢Ò⣬Ôö¼ÓÐÅÈθв¢ÇÒÊÇÒ»¸öѧϰµÄºÃ»ú»á¡£¾ÍËãÊÇÔÚ³õ´Î·¢ÐÐÖ®ºó»áÓиü¶àµÄÊÂÇéÒª×ö£¬»¹ÊÇÒª¾¡ËùÓÐŬÁ¦½«µÚÒ»½×¶ÎÈÕÆÚÍùÇ°ÍÆ¡£

 

So is Design Dead?

 

ûʲôԭÒò£¬Ö»ÊÇÉè¼ÆµÄ±¾ÖÊÒѾ­¸Ä±ä¡£XP µÄÉè¼Æ×·ÇóÒÔϵļ¼ÇÉ£º

  • ³ÖÐø±£³ÖÇåˬµÄ³ÌÐò´úÂ룬Խ¼òµ¥Ô½ºÃ¡£

  • ÖØ¹¹µÄ¼¼ÇÉ£¬ËùÒÔµ±Äã¾õµÃ±ØÒªµÄʱºò¶¼¿ÉÒÔÓÐÐÅÐĵ͝ÊÖ¡£

  • ¾ßÓÐ patterns µÄ֪ʶ£º²»Ö»ÊÇÕÕËüµÄ½â·¨£¬¸üÒª¸Ð¾õºÎʱ¿ÉÒÔÓ¦Ó㬻òÊÇÈçºÎµ¼Èë patterns¡£

  • ÖªµÀÈçºÎ½«Éè¼ÆËµ¸ø±ØÒªµÄÈËÁ˽â[Òë×¢8]£¬ÓóÌÐò´úÂë¡¢»òÊÇͼÐΡ¢»òÉÏÊöËùÓеŤ¾ß£º½»Ì¸¡£

 ÒÔÉÏÌô³öÀ´µÄ¼¼ÇÉ¿´À´¶¼Í¦ÏÅÈË£¬µ«ÊÇÒª³ÉΪһ¸öÓÅÐãµÄÉè¼ÆÊ¦±¾À´¾ÍºÜÄÑ¡£XP Ò²²»ÊÇÒªÈÃËü±äµÃ¼òµ¥£¬ÖÁÉÙÎҾͲ»¾õµÃ¡£µ«ÊÇÎÒÏë XP ÈÃÎÒÃǶÔÓÐЧÂʵÄÉè¼ÆÓÐȫеĿ´·¨£¬ÒòΪËüÈý¥½øÊ½Éè¼ÆÌýÆðÀ´ÊÇ¿ÉÐеķ½Ê½¡£¶øÇÒÎÒÒ²ºÜÖ§³ÖÑݽø - ·ñÔòË­ÖªµÀÎÒ»á±ä³ÉÊ²Ã´ÄØ£¿

 

Acknowledgements[Òë×¢9]

 

¹ýÈ¥ÕâЩÄêÎҴӺܶàºÃÅóÓÑÉíÉÏ͵ѧµ½²»ÉٺõÄÏë·¨£¬ºÜ¶à¶¼ÒѾ­¼Ç²»ÆðÀ´¡£µ«ÊÇÎÒ¼ÇµÃ´Ó Joshua Kerievski ÄÇÀï͵µ½µÄºÃ¶«Î÷¡£ÎÒÒ²¼ÇµÃ Fred George ºÍ Ron Jeffries ¸øÎҺܺõĽ¨Òé¡£ÎÒµ±È»Ò²²»ÄÜÍü¼Ç Ward ºÍ Kent ²»¶ÏÓкõÄÏë·¨¡£

 ÎÒÒ²¸ÐÐ»Ôø¾­Ìá³öÎÊÌâºÍÖ¸³ö´ò×Ö´íÎóµÄÅóÓÑ¡£Í¬Ê±¸Ðл Craig Jones ÌáÐÑÎҺü¸¸ö©µôµÄ ¡°a¡±¡£

 

Revision History

 ÒÔÏÂÊÇÕâÆªÎÄÕÂÖØ´óµÄÐ޸ļǼ£º

       2001 Äê 2 Ô£º¶Ô growing an architecture¡¢the role of an architect¡¢ºÍ where things that are difficult to add with refactoring µÈ¶ÎÂä×öÐ޸ġ£

       2000 Äê 7 Ô£ºÔ­Ê¼ÎļþÔÚ XP 2000 ·¢±í£¬²¢¿¯ÔØÓÚ MartinFowler.com ÍøÒ³¡£

  

[Òë×¢1] Ò»ÖÖÔÚ×ÅÊÖ½øÐгÌÐò´úÂëµÄ׫д֮ǰ£¬¾ÍÏȰ´Õռȶ¨µÄ³ÌÐò·ÖÎö¡¢Éè¼Æ¡¢ÖÆÍ¼¡¢×«Ð´ÎļþµÈµÈºÄʱ·ÑÁ¦µÄ¹¤×÷·½Ê½¡£

 [Òë×¢2] ÔŲ́ÍåÄã¾õµÃ ¡°³ÌÐòÉè¼ÆÊ¦¡±¡¢¡°Èí¼þÉè¼ÆÊ¦¡± ºÍ ¡°Èí¼þ¹¤³Ìʦ¡± ÓÐʲô²»Í¬Âð£¿ÏàÐŴ󲿷ֵÄÈ˾õµÃ¶¼ÊÇͬһÖÖ½ÇÉ«¡£µ«ÊÇ´ÓÓ¢ÎÄ×ÖÒâ¾Í±È½ÏÈÝÒ×Çø±ð ¡°programmer¡±¡¢¡±designer¡±¡¢¡±architect¡±µÈµÈ²»Í¬µÄ½ÇÉ«¡£ÕâÑùµÄÓïÑÔÎÄ»¯²îÒìÐÔ£¬Ò²ÊÇÎÒÔÚÄÚÎÄÖÐÁôϲ»ÉÙÔ­ÎĵÄÔ­Òò¡£ÔÚ²¿·Ý×Ö¾äÖУ¬ÁôÏÂÔ­ÎIJ¢²»Ó°ÏìÔĶÁµÄ˳³©£¬µ«ÊÇ¿ÉÒÔ±ÜÃâÎÄÒâÒòΪ·­ÒëËùÔì³ÉµÄÄ£ºý»òŤÇú¡£

 [Òë×¢3] ÔÚ½¨ÖþÒµÓ¦¸ÃÊdzƺô ¡°Ê©¹¤ÈËÔ±¡± ±È½Ï˳¶ú£¬¶øÔÚÈí¼þÒµÓ¦¸ÃÊÇ ¡°programmer¡± ±È½ÏÇ¡µ±¡£µ«ÊÇÕâÁ½Õß¶¼ÊÇ ¡°builder¡±¡£

 [Òë×¢4] ¹ØÓÚÕâÒ»µã£¬ÒëÕßÒ²Ìṩһ¸öʵ¼ÊµÄ¾­Ñ飬Ҳ¾ÍÊÇ·­ÒëÕâÆªÎÄÕµĹý³Ì¡£ÎÒºÍһλÅóÓÑÒ»Æð·­ÒëÕâÆªÎÄÕ£¬¶øÇÒÒòΪ¶¼ÏÈ¿´¹ý XP Distilled Ò»ÎÄ£¬ËùÒÔ¾ö¶¨²ÉÓà XP 12 ¸öÓÐЧµÄʵÎñ¼¼ÇÉÆäÖÐµÄ Continuous Integration¡¢Pair Programming¡¢Small Releases¡¢Refactoring¡¢Coding Standards¡¢Collective Code Ownership µÈµÈ¼¼ÇÉ¡£ÒòΪ XP Distilled Ò»Îĵľ­ÑéÎÒÃÇÊ×ÏȶÔÓÚ²¿·Ý·­ÒëÃû´ÊÌá³ö±Ë´ËµÄͳһ°æ±¾£¬Õâ¾ÍÊÇÒ»ÖÖ Coding Standards¡£ÎÒÃÇͬʱ¶¼¶ÔÕâÆªÎÄÕ½øÐз­Ò룬²»Í¬µÄÈ˽øÐÐͬһÏ×÷½ø¶È¾Í²»»áÏàͬ£¬Ã¿·­Ò뼸¸ö¶ÎÂä¾Í½«½ø¶È¼Ä¸ø¶Ô·½£¬Õâ¾ÍÊÇ Small Releases¡£µ±ÎÒÊÕµ½ÅóÓѼÄÀ´µÄ²¿·Ý£¬ÎҾͶÔÕÕÁ½·½µÄ²îÒ콫ÎÄÕÂÕë¶ÔÒëÒâµÄÕýÈ·ÐԺʹǾäµÄͨ³©×ö³õ²½µÄÕûÀíºÍÐÞÕý£¬Õâ¾ÍÊÇ Continuous Integration¡£ÎÒÕûÀí¹ýµÄ²¿·ÝÔټĻظøÅóÓѽøÐмì²é£¬Èç¹û·¢ÏÖ²»Í׵IJ¿·Ý£¬¾Í½øÐÐÌÖÂÛ»òÐ޸ģ¬Õâ¾ÍÊÇ Refactoring¡£´ÓÍ·µ½Î²µÄ¹ý³ÌÖУ¬ÎÒÃǶ¼ÊÕµ½±Ë´ËµÄ·­Òë°æ±¾£¬Ò²ÓµÓÐÕûÀí¹ýµÄ°æ±¾£¬¶ÔÓÚÿ¸ö²¿·ÝÒ²¶¼Çå³þÁ˽⣬·ûºÏ Collective Code Ownership µÄ¾«Éñ¡£×îºó£¬ÒòΪÎÒÃǸպÃÊÇÁ½¸öÈË£¬²»ÇÉÓÖ¿ÉÒÔ¹ÚÉÏÁíÒ»¸ö¼¼ÇÉPair Programming¡£ËùÒÔ£¬ÎÒÃÇʹÓÃÁË XP Ò»°ëµÄ·½·¨£¬¶ÔÓÚ¹¤×÷ÉÏÓаïÖúµÄ·½·¨¡£µ«²¢²»ÊǷǵÃÿһÏî¼¼Çɶ¼ÀûÓõ½¡£ÎÒÏ룬¸üÖØÒªµÄÒ»µãÊÇ£¬XP ²¢²»ÊÇÖ»ÄÜÓÃÔÚÈí¼þÑз¢£¬ÎÒÃǵķ­Òë¹ý³Ì²»Ò²½èÀ´ÓÃÁË£¡

 [Òë×¢5] Story ÊÇÒ»ÖÖÀàËÆ use case µÄÃèÊö¡£

 [Òë×¢6] °´ÕÕÔ­ÎĵÄÒâ˼¾ÍÊÇÒÔ 32 ÐеijÌÐò´úÂë¶øÄܹ»±íÏÖ³ö 16 ÖÖ patterns£¡ÕâÑùµÄ´«ÆæÐÔ¹¦Á¦ÊµÔÚ²»ÊǾ­Ñé¼°¼ûʶdz±¡µÄÒëÕßËùÄÜÏëÏó£¬ËùÒÔÎÒÃÇÖ»Äܰ´ÕÕÔ­ÎÄ·­Ò룬¶øÎÞ·¨¶ÔÕâ¾ä»°Ìá³ö×óÖ¤¡£Èç¹û¶ÁÕß¼û¹ý×÷ÕßÌáµ½µÄÀý×Ó£¬ºÜ¸ÐлÄúÌṩÏà¹Ø×ÊÁϸøÎÒ¡£

 [Òë×¢7] ÕâÒ»µãÒ²ÊÇÒëÕß¶ÔÓŲ́ÍåÈí¼þ»·¾³·Ç³£ÓÇÐĵÄÎÊÌ⣬´ó¼Ò¶¼ÄÜÌå»áÖйúÈ˵ÄÒ»ÖÖ²»ÖªµÀÄܲ»ÄÜ˵ÊÇÖØ´óȱµãµÄÃñ×åϰÐÔ ¡°²ØË½¡±¡£ÎÒÔÚ²»Í¬µÄ»ú»á´ÓÎÄÕÂÖÐÒÔ¼°ÅóÓѵĿÚÖÐÌýµ½Ò»ÖÖÏë·¨£¬ÒªÌáÉýÍŶӵÄÕûÀíЧÂÊ£¬Ò»ÖÖ×î¼òµ¥µÄ·½·¨¾ÍÊǽ«¼¼ÊõÂäºóµÄ³ÉÔ±½ÌÓýÌáÉýµ½Óë¼¼ÊõÁìÏȵijÉÔ±ÏàͬµÄˮƽ¡£ÕâÑùµÄÏ뷨ʵÔÚÊÇÒ»Öַdz£ÓÐÓöøÇÒÉî¿ÌµÄÌåÈÏ£¬¸üÊÇÒ»ÖÖ¸Ð̾¡£ÔŲ́ÍåÄܹ»ÔÚ¿ÚÍ·ÉÏͬÒâÕâÖÖ×ö·¨£¬¶øÊµ¼ÊÉϸüÄܹ»½ø¶øÊµ¼ùÕâÖÖ¾«ÉñµÄÈËÓжàÉÙ£¿£¿ÓÐЩÈ˶¼µ£ÐÄ×Ô¼ºµÄ¼¼Êõ±»ÈË¿ú͸֮ºó£¬¸öÈ˵ØÎ»¿Ö½«Ô⵽ȡ´ú£¬¸üÔâµÄÊÇ¿ÉÄÜÓÐÀϰåÕæµÄ»á ¡°½ÆÍÃËÀ×ß¹·Å롱 µÄÔÚեȡ¾­ÑéµÄ´«³ÐÖ®ºó£¬½«Óй±Ï×È´³É±¾¸ßµÄ³ÉÔ±ÒÔ¸÷ÖÖ·½Ê½±Æ×ߣ¬ÕâʵÔÚÊÇÈÃÈËÓÇÐÄÓÖ»ÒÐĵÄÏÖÏó°¡£¡ÒëÕßÏàÐÅ£¬ÔÙÀ§Äѵļ¼ÊõÖ»ÒªÊÇÄãÄÜÁ˽⣬¾ÍÒѾ­´æÔÚÁ˾ºÕù¶ÔÊÖ£¬Èç¹û²»Äܽ«Éí±ß³ÉÔ±µÄ¼¼ÊõˮƽͬʱѸËÙÌáÉý£¬Ö»ÓеÈ×ű»¿ìËÙ³¬Ô½£¬¸ü¿ÉÄܱ»ÌÔÌ­¡£ÒëÕßҲʵ¼ù×Å XP Õâ·½ÃæµÄ¾«Éñ£¬ËäÈ»ÒëÕßËùÓµÓеļ¼Êõ֪ʶ·Ç³£´Ödz£¬µ«ÊÇֻҪͬÊÂÅóÓÑÐèÒªÎÒµÄЭÖú£¬ÎÒ×ÜÊÇÖªÎÞ²»ÑÔ£¬ÑÔÎÞ²»¾¡¡£ÒëÕßÒªÏòÁ÷ÐÇÐíÔ¸£¬Ï£ÍûÄܹ»ÕÒµ½Ô½À´Ô½¶àµÄͬÀà¡£

 [Òë×¢8] ÓÐЧµÄ¹µÍ¨Ò²ÊÇÒëÕß³£ÔâÓöµÄÎÊÌâÖ®Ò»£¬ÓÐЩÈËÎÞ·¨ÒÔ²»Í¬µÄ·½Ê½ÎªÊÂÇéÏÂÅú×¢£¬ÓÐЩÈ˶ÔÓÚÃÅÍ⺺»¹ÊÇÂú¿ÚרҵÊõÓÓÐЩÈ˲»Äܹ۲ì¹ËÂǵ½ÌýÕßÊDz»ÊÇÒѾ­Á˽âËù²ûÊöµÄ¾«Ëè¡£ÕâЩ¶¼²»ÊÇÓÐЧµÄ¹µÍ¨¡£ÎÒÃÇËÆºõ»¹²»¹»ÖØÊÓÈ˼ʹµÍ¨ÕâÃÅѧÎÊ£¬ÈçºÎÒÔ¶Ô·½Äܶ®µÄ·½Ê½Ëµ¸ø¶Ô·½Ìý£¬ÕæÊDz