|
¢º µé¾î°¡´Â ±Û °´Ã¼ÁöÇâ Æз¯´ÙÀÓ(object-oriented paradigm)ÀÌ ÁÙ ¼ö ÀÖ´Â °¡Àå Å« ÀÌÁ¡Àº ¹«¾ùÀϱî? ±×°ÍÀº ¾Æ¸¶µµ ´ÙÇü¼º(polymorphism)À» ÅëÇÑ Àç»ç¿ë¼º(reusablility)ÀÏ °ÍÀÌ´Ù. »õ·Î¿î ÇÁ·Î±×·¥À» ¸¸µé·Á°í Çϴµ¥ ÀÌ¹Ì ÀÌÀü¿¡ ³»°¡ ¸¸µé·Á°í ÇÏ´Â ÇÁ·Î±×·¥ÀÇ ±â´É ÀϺο¡ ´ëÇÑ ÄÚµå(code)°¡ ¸¸µé¾îÁ® ÀÖ´Ù¸é, ÀÌ ¾ó¸¶³ª ÇູÇÑ ÀÏÀΰ¡? °´Ã¼ÁöÇâ Æз¯´ÙÀÓÀ» Àû¿ëÇÑ ½Ã½ºÅÛ Áß¿¡¼ ´ÙÇü¼ºÀ» °¡Àå ½±°Ô ´À³¥ ¼ö ÀÖ´Â °ÍÀÌ °´Ã¼ÁöÇâ ¾ð¾î¿¡¼ Á¦°øÇÏ´Â ¡°»ó¼Ó(inheritance)¡±ÀÏ °ÍÀÌ´Ù. (ÀÌ ±ÛÀ» °´Ã¼ÁöÇâ Æз¯´ÙÀÓ¿¡ ´ëÇÑ °ÍÀÌ ¾Æ´Ï¹Ç·Î ´ÙÇü¼º¿¡ ´ëÇÑ ±¸Ã¼ÀûÀÎ ¼³¸í°ú ¿¹´Â °ü·Ã ¼ÀûÀ» Âü°í) ±×·¯³ª, ÀÌ·¯ÇÑ ´ÙÇü¼ºÀº ÇÁ·Î±×·¥ ¾ð¾î¿¡ À־ ÄÚµåÀÇ Àç»ç¿ë, ±×·¡ÇÈ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º(Graphic User Interface, GUI)¿¡¼´Â ¸ÞŸÆ÷(metaphor)ÀÇ Àç»ç¿ë, ºÐ»ê ½Ã½ºÅÛ(distributed system)¿¡¼´Â ÀνºÅϽº(instance)ÀÇ Àç»ç¿ë µîÀÇ ´Ù¾çÇÑ Àç»ç¿ëÀ» Á¦°øÇÏÁö¸¸, Á¤ÀÛ ½Ã½ºÅÛ µðÀÚÀÎ Ãø¸é¿¡¼ÀÇ Àç»ç¿ë¼ºÀ» Á¦°øÇÏ´Â ±¸Ã¼ÀûÀÎ ¹æ¹ýÀº ¾ø´Â °Í °°´Ù. ÇϳªÀÇ ½Ã½ºÅÛÀ» ±¸ÃàÇϴµ¥ ÀÖ¾î¼ °´Ã¼ ÁöÇâ Æз¯´ÙÀÓÀÌ °¡Áö°í ÀÖ´Â ´ÙÇü¼ºÀ» ÀÌ¿ëÇÏÁö ¾Ê°í ½Ã½ºÅÛ µðÀÚÀÎ Ãø¸é¿¡¼ Àç»ç¿ë¼ºÀ» ¾òÀ» ¼ö ÀÖ´Â ¹æ¹ýÀ¸·Î ¡°µðÀÚÀÎ ÆÐÅÏ(Design patterns)¡±ÀÌ ÀÖ´Ù. ÀÌ ±Û¿¡¼ ¾ÕÀ¸·Î ¾Ë¾Æº¸·Á°í ÇÏ´Â µðÀÚÀÎ ÆÐÅÏÀº ½Ã½ºÅÛ ±¸Ãà°úÁ¤¿¡¼ ÄÚµå ¼öÁØ¿¡¼ÀÇ Àç»ç¿ë¼ºÀ» °¡´ÉÇÏ°Ô ÇØ ÁÖÁö´Â ¾ÊÁö¸¸ ±× º¸´Ù ´õ Áß¿äÇÑ ½Ã½ºÅÛ µðÀÚÀνÃÀÇ ¡°µðÀÚÀÎ Àç»ç¿ë¼º¡±À» Á¦°øÇÏ¿© ÁØ´Ù. ¡°µðÀÚÀÎ Àç»ç¿ë¼º¡±À» Á¦°øÇÏ´Â µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇÑ Á߿伺À» ÀνÄÇÏ°í °´Ã¼ÁöÇâ ´º½º·¹ÅÍÀÇ ÇÑ ¼½¼ÇÀ¸·Î ¡°µðÀÚÀÎ ÆÐÅÏ¡±¿¡ ´ëÇÑ
ºÎºÐÀ» ÇÒ¾Ö ÇÏ¿´´Ù. ¡°µðÀÚÀÎ ÆÐÅÏ¡±À» µé¾î º» µ¶ÀÚµµ ÀÖÀ» °ÍÀÌ°í ±× À̸§ÀÌ »ý¼ÒÇÏ°Ô µé¸®´Â µ¶ÀÚµµ ÀÖÀ»
°ÍÀÌ´Ù. ÀÌ ¹ø¿¡´Â ¿ì¼± ±× ù¹ø°·Î µðÀÚÀÎ ÆÐÅÏÀÌ ¹«¾ùÀΰ¡¿¡ ´ëÇؼ ¾Ë¾Æº¸°í ¾ÕÀ¸·Î ¾î¶»°Ô À̾߱⸦ Àü°³ÇØ ³ª°¥ Áö¿¡ ´ëÇؼ
À̾߱âÇÑ´Ù. º»°ÝÀûÀÎ ½ÃÀÛÀº ´ÙÀ½ È£ºÎÅÍ Çϵµ·Ï ÇÒ ¿¹Á¤ÀÌ´Ù. ¢º µðÀÚÀÎ ÆÐÅÏÀ̶õ? ¿©·¯ »ç¶÷µéÀÌ ¸»ÇÏ´Â µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇÑ Á¤ÀǸ¦ Á¾ÇÕÇØ º¸¸é µðÀÚÀÎ ÆÐÅÏÀ̶õ ÇÑ ¸¶µð·Î ¡°¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾îÀÇ °æÇ衱 À̶ó°í Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. À§ÀÇ Á¤ÀÇÀÇ Àǹ̸¦ ºê¶óÀ̾ð ÈÄÆ®(Brian Foote)[2]´Â ¿µ¾ÇÇÏ°í °ÔÀ¸¸¥ °ÇÃà°¡¿¡ ´ëÇÑ Àç¹ÌÀÖ´Â À̾߱⸦ ÅëÇؼ Àß ¼³¸íÇÏ°í ÀÖ´Ù. ¾î´Â ÇÑ °ÇÃà°¡°¡ ´ëÇÐ °Ç¹°°ú ±× ÁÖº¯ÀÇ Àεµ¿¡ ´ëÇÑ ¼³°è¸¦ ¸Â°Ô µÇ¾ú´Ù. ±×·¯³ª ±× °ÇÃà°¡´Â ´ëÇÐ °Ç¹°¸¸À» ¼³°èÇØ ³õ°í ±× °Ç¹° ÁÖº¯ÀÇ Àεµ¿¡ ´ëÇÑ ¼³°è´Â ÇÏÁö ¾Ê°í ÀÖ¾ú´Ù. ±×·¡¼ °Ç¹°Àº Áö¾îÁ³Áö¸¸ »ç¶÷ÀÌ ´Ù´Ò ¼ö ÀÖ´Â Àεµ´Â ¾ÆÁ÷ ¾ø¾ú´Ù. ½Ã°£ÀÌ Áö³ª¼ ´«ÀÌ ³»¸®´Â °Ü¿ïÀÌ µÇ¾ú´Ù. »ç¶÷µéÀº °Ç¹° ÁÖÀ§¿¡ Àεµ°¡ ¾ø¾ú±â ¶§¹®¿¡ °¢ÀÚ°¡ ÆíÇÑ ´ë·Î °Ç¹°ÁÖÀ§¸¦ °É¾î ´Ù³æ´Ù. °Ü¿ïÀÌ µÇ±â Àü±îÁö Àεµ¸¦ ¸¸µéÁö ¾Ê°í °ÔÀ¸¸§(?)À» ÇÇ¿ì´ø °ÇÃà°¡´Â »çÁø±â¸¦ °¡Áö°í »ç¶÷µéÀÌ ´« À§¿¡ ¸¸µé¾î ³õÀº °Ç¹°°ú °Ç¹° »çÀÌÀÇ ¹ßÀÚ±¹ÀÇ ¸ð¾çÀ» Âï±â ½ÃÀÛÇß´Ù. ±ä °Ü¿ïÀÌ Áö³ª°í º½ÀÌ µÇ¾î¼ °ÇÃà°¡´Â °Ü¿ï ³» Âï¾î µÎ¾ú´ø ¹ßÀÚ±¹ÀÇ »çÁøÀ» ¹ÙÅÁÀ¸·Î Àεµ¸¦ ¸¸µé±â ½ÃÀÛÇß´Ù. µðÀÚÀÎ ÆÐÅÏÀº ÀÌ¿Í °°Àº ¼ºÁúÀ» °¡Áö°í ÀÖ´Ù. µðÀÚÀÎ ÆÐÅÏ ÀÛ°¡(writer)´Â ½Ã½ºÅÛÀÌ ¾î¶»°Ô µ¿ÀÛÇÒ °¡¿¡ ´ëÇÑ ¼º±ÞÇÏ°í °ËÁõµÇÁö ¾ÊÀº ÃßÃøÀ» ¹ÙÅÁÀ¸·Î ½Ã½ºÅÛ¿¡ ´ëÇÑ ¼³°è¸¦ Çϱ⠺¸´Ù´Â ¿µ¾ÇÇÏ°í °ÔÀ¸¸¥ °ÇÃడó·³ ´« À§ÀÇ ¹ßÀÚ±¹À» ã¾Æ¼ ¾î¶»°Ô ÀÛµ¿Çß´ÂÁö¸¦ ±â¼úÇÑ´Ù.À§ÀÇ ¿¹È¿¡¼ ´« À§ÀÇ ¹ßÀÚ±¹Àº ¿©·¯ ´Ù¸¥ ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾îÀÇ °æÇèÀ» ÀǹÌÇÏ°í ¿µ¾ÇÇÑ °ÇÃà°¡´Â »õ·Î¿î ½Ã½ºÅÛÀ» µðÀÚÀÎ ÇÏ´Â °úÁ¤¿¡¼ ±âÁ¸ÀÇ ¿©·¯ ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¿¡ ÀÇÇؼ °ËÁõµÈ µðÀÚÀÎÀ» »ç¿ëÇÏ°í ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¸¦ ³ªÅ¸³½´Ù. Áï, µðÀÚÀÎ ÆÐÅÏÀ̶õ ½Ã½ºÅÛ µðÀÚÀÎ ½Ã¿¡ ÀÚÁÖ ¹ß»ýÇÏ´Â ¹®Á¦µé¿¡ ´ëÇÑ ¡°Àç»ç¿ë °¡´ÉÇÑ ÇØ°áÃ¥¡±À̶ó°í ÀÌÇØ ÇÒ ¼ö ÀÖ´Ù. ±×·¯¸é µðÀÚÀÎ ÆÐÅÏÀÌ ÁÖ´Â ÀÌÁ¡Àº ¹«¾ùÀϱî? Å©°Ô µÎ °¡Áö·Î »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù. °æÇèÀÌ ¸¹Àº ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾îÀÇ °æ¿ì¿¡´Â
ÀÌ¹Ì ¸¹Àº ½Ã½ºÅÛ µðÀÚÀÎ °æÇèÀ» °¡Áö°í ÀÖ¾î¼ ´ëºÎºÐÀÇ ¹®Á¦¿¡ ´ëÇÑ ³ª¸§´ë·ÎÀÇ ÇعýÀ» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. °æÇèÀÌ ¸¹Àº ¼ÒÇÁÆ®¿þ¾î
¿£Áö´Ï¾îµéÀÇ ÀÌ °°Àº ÇعýµéÀ» Àß Á¤¸®Çؼ À̸§À» ºÎ¿©ÇÏ°í µðÀÚÀÎÀûÀÎ Ãß»ó¼ºÀ» ÁÖ¾î ÆÐÅÏÈ ½ÃÅ°¸é, ÀÌ °ÍµéÀÌ ÇϳªÀÇ
½Ã½ºÅÛ µðÀÚÀÎ ½ÃÀÇ °øÅë ¾ð¾î ¿ªÇÒÀ» ÇÏ°Ô µÇ¾î, °æÇè ¸¹Àº À̵éÀÌ ÀÌ °øÅëÀÇ ¾ð¾î¸¦ ÀÌ¿ëÇÏ¸é ±×·¸Áö ¾ÊÀ» °æ¿ìº¸´Ù Á» ´õ È¿À²ÀûÀ¸·Î
Çùµ¿ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¶ÇÇÑ ÀÌ°ÍÀº ¾î¶² ¹®Á¦¿¡ ´ëÇؼ Ç¥Çö¸¸ ´Ù¸£°Ô µÇ¾î ÀÖ´Â °°Àº Çعý¿¡ ´ëÇÑ ¼ÒÇÁÆ® ¿£Áö´Ï¾îµé¿¡ »çÀÌÀÇ
ºÒÇÊ¿äÇÑ ³íÀïÀ» ÇÏ´Â ½Ã°£À» ÁÙ¿©ÁÙ ¼ö µµ ÀÖ´Ù. °æÇèÀÌ ¾ø´Â ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¿¡ ´ëÇؼ´Â °æÇè ¸¹Àº À̵é·ÎºÎÅÍÀÇ È¿À²ÀûÀÌ°í
À¯¿ë¼ºÀÌ ÁÁÀº µðÀÚÀο¡ ´ëÇÑ ÇعýÀ» ªÀº ½Ã°£¿¡ ÀÍÈ÷°í ¾ò¾î ÀÚ½ÅÀÌ µðÀÚÀÎ ÇÏ°í ÀÖ´Â ½Ã½ºÅÛÀÇ ¾ÈÁ¤¼º°ú ¼º´ÉÀ» ³ôÀÏ ¼ö ÀÖ´Â ÀåÁ¡ÀÌ
ÀÖ´Ù. ¢º µðÀÚÀÎ ÆÐÅÏÀÇ ¿ª»ç ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ µðÀÚÀÎ ÆÐÅÏÀÇ ¾ÆÀ̵ð¾î´Â °ÇÃà ºÐ¾ß¿¡¼ ³ª¿Ô´Ù. 1977³â°ú 1979³â¿¡ °ÇÃà°¡ÀÎ Å©¸®½ºÅäÆÛ ¾Ë·º»ê´õ(Christopher Alexander)´Â ¡°A Pattern Language:Towns, Buildings, Construction¡±¶ó´Â Á¦¸ñÀÇ Ã¥°ú ¡°The Timeless Way of Building¡±À̶ó´Â Á¦¸ñÀÇ Ã¥ µÎ ±ÇÀ» ¹ßÇ¥Çß´Ù. ÀÌ µÎ ±ÇÀÇ Ã¥ÀÌ ´ã°í ÀÖ´Â ±âº» ¾ÆÀ̵ð¾î´Â °ÇÃ๰ÀÇ ¼³°è¿¡ ºó¹øÇÏ°Ô ¹ß»ýÇÏ´Â µ¿ÀÏ ¼³°è ³»¿ëÀÌ ÀÖÀ¸¸ç µû¶ó¼, ÀÌ·± °ÍµéÀ» ÇϳªÀÇ ÆÐÅÏÀ¸·Î º¸°í ´Ù¸¥ °ÇÃ๰ ¼³°è¿¡ Àç»ç¿ëÇÏ´Â °ÍÀÌ ¿©·¯ °¡Áö ¸é¿¡¼ À̵æÀ» °¡Á® ´Ù Áشٴ °ÍÀÌ´Ù. µÎ ±ÇÀÇ Ã¥ÀÌ ´ã°í ÀÖ´Â ÀÌ·± ±âº» ¾ÆÀ̵ð¾î´Â °ÇÃà ¿µ¿ªÀ» ¹þ¾î³ ¼ÒÇÁÆ®¿þ¾î¿Í °°Àº ´Ù¸¥ ¿µ¿ª¿¡¼µµ Àû¿ëÇÒ ¼ö ÀÖ¾ú´Ù. 1987³â ¿öµå Ä¿´×Çè(Ward Cunningham)°ú ÄËÆ® º¤(Kent Beck)Àº ¾Ë·º»ê´õÀÇ ¾ÆÀ̵ð¾î¸¦ »ç¿ëÇؼ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º(User interface)¿¡ ´ëÇÑ ´Ù¼¸ °¡ÁöÀÇ ÆÐÅÏÀ» ¸¸µé¾ú´Ù. ±×¸®°í ÀÌ ³»¿ëÀº ¡°Using Pattern Languages for Object-Oriented Programs¡±¶ó´Â Á¦¸ñÀ¸·Î Á¤¸®µÇ¾î °´Ã¼ ÁöÇâ¿¡ °üÇÑ ¼¼°èÀûÀÎ ÄÁÆÛ·±½º(conference)ÀÎ OOPSLA-87(Object-Oriented Programming, Systems, Languages & Applications ? 87)¿¡ ³í¹®À¸·Î ¹ßÇ¥µÇ¾î µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇؼ Çа迡 °ø½ÄÀûÀ¸·Î ¾Ë¸®´Â °è±â°¡ µÇ¾ú´Ù. 1990³â´ë ÃÊ¿¡´Â ¿¡¸¯ °¨¸¶(Erich Gamma), ¸®Â÷µå Ç︧(Richard Helm), Á¸ ºí¸®ÀÚÀ̵å(John
Vlissides), ¶öÇÁ Á¸½¼(Ralph Johnson)ÀÌ 90³â´ë °¡Àå ¿µÇâÀ» ÁÖ¾ú´ø ÄÄÇ»ÅÍ Ã¥ÀÇ ÇÑ °¡ÁöÀÎ ¡°Design
Patterns: Elements of Reusable Object-Oriented Software¡±À̶õ Ã¥ Á¦ÀÛÀ» ½ÃÀÛ Çß´Ù. ÀÌ
Ã¥Àº 1994³â¿¡ ¹ßÇ¥µÇ¾î µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇÑ ¾ÆÀ̵ð¾î¸¦ ³Î¸® ¾Ë¸®´Â °è±â¸¦ ¸¸µé¾úÀ¸¸ç, ÀÌ Ã¥Àº Ã¥ÀÇ Á¦¸ñÀÌ ±ä ÀÌÀ¯·Î ÀÎÇؼ
'GoF(Gang of Four) book'¶ó´Â º°ÄªÀ¸·Î ºÒ¸®°í ÀÖ´Ù. ¢º ¾ÕÀ¸·ÎÀÇ À̾߱â Àü°³¡¦ ÇöÀç ¹Ì±¹³»ÀÇ ÆÐÅÏ ÄÁÆÛ·±½º(conference)ÀÎ PloP(Pattern Languages of Programs)¿Í À¯·´ÀÇ ÆÐÅÏ ÄÁÆÛ·±½ºÀÎ EuroPLoP¸¦ ÅëÇؼ °ø½ÄÀûÀ¸·Î ¹ßÇ¥µÇ¾î ¾Ë·ÁÁ® ÀÖ´Â µðÀÚÀÎ ÆÐÅÏÀÇ ¼ö´Â ¼ö ¹é°¡Áö¿¡ À̸¥´Ù. ÀÌ ¸ðµç µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇؼ ¸ðµÎ ¾Ë¾Æ º»´Ù´Â °ÍÀº °¡´ÉÇÏÁöµµ ¾Ê°í ÇÊ¿äÇÏÁöµµ ¾Ê´Ù. ¿Ö ¸ðµç µðÀÚÀÎ ÆÐÅÏÀ» ÀÍÈ÷´Â °ÍÀÌ ÇÊ¿äÇÏÁö ¾ÊÀºÁö´Â ¾ÕÀ¸·Î µðÀÚÀÎ ÆÐÅÏÀ» Çϳª¾¿ ¼Ò°³ÇÏ¸é¼ À̾߱âÇÒ °ÍÀÌ´Ù. ±×¸®°í, ±× °ÍÀº ÇÊÀÚ°¡ ±¸Áö À̾߱â ÇÏÁö ¾Ê¾Æµµ µðÀÚÀÎ ÆÐÅÏÀ» ÀÍÇô °¡¸é¼ ÀÚ¿¬½º·´°Ô ¾Ë°Ô µÉ °ÍÀ̶ó »ý°¢ÀÌ µç´Ù. µû¶ó¼, °´Ã¼ÁöÇâ ´º½º·¹ÅÍÀÇ µðÀÚÀÎ ÆÐÅÏ ¼½¼Ç¿¡¼ ´Ù·ç·Á´Â °ÍÀº °¡Àå ±âº»ÀûÀ̶ó°í ÀÎÁ¤µÇ°í ÀÖ´Â Gang of Four[1]¿¡ ³ª¿Í ÀÖ´Â °ÍµéÀ» Áß½ÉÀ¸·Î µðÀÚÀÎ ÆÐÅÏÀÌ °®°í ÀÖ´Â Àǹ̸¦ »ý°¢ÇØ º¼ ¿¹Á¤ÀÌ´Ù. ¡°°øÂ¥´Â ¾ø´Ù!!¡± ´ëºÎºÐÀÇ °ÍÀÌ ±×·¸µíÀÌ °øÂ¥´Â ¾ø´Ù. µðÀÚÀÎ ÆÐÅϵµ ¿ì¸®°¡ ±â´ëÇÏ´Â ¸¶¹ýÀÇ ºÀÀ» ¿ì¸®µéÀÇ ¼Õ¿¡ Áã¾î ÁÖÁö´Â ¾Ê´Â´Ù. µðÀÚÀÎ ÆÐÅϵµ ¾î¶² Àǹ̿¡¼± ¿ì¸®°¡ °´Ã¼ ÁöÇâÀûÀÎ ½Ã½ºÅÛÀ» µðÀÚÀÎ Çϴµ¥ ÀÖ¾î¼ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ÇϳªÀÇ µµ±¸·Î º¼ ¼ö ÀÖ´Ù. µû¶ó¼, ¿ì¸®°¡ µðÀÚÀÎ ÆÐÅÏÀ» ½Ã½ºÅÛ µðÀÚÀÎ ½Ã¿¡ È¿À²ÀûÀ¸·Î »ç¿ëÇϱâ À§Çؼ´Â ²ÙÁØÇÑ °øºÎ¿Í ¹è¿î °ÍÀ» Àû¿ëÇØ º¸·Á´Â ³ë·ÂÀÌ ÇÊ¿äÇϸç Á¾±¹¿¡ °¡¼´Â »õ·Î¿î µðÀÚÀÎ ÆÐÅÏÀ» ã¾Æ ³»¾î Á¤¸®ÇÒ ¼ö ÀÖ´Â ´É·Âµµ ±æ·¯¾ß ÇÒ °ÍÀÌ´Ù. Áö±Ý±îÁö µðÀÚÀÎ ÆÐÅÏÀÌ ¹«¾ùÀÎÁö¸¦ °£´ÜÈ÷ ¼³¸íÇÏ¿© º¸¾Ò´Ù. ÇÏÁö¸¸, À§ÀÇ ¸î ÀÚ ¾È µÇ´Â ±ÛÀÇ ³»¿ëÀ» ÅëÇؼ´Â µðÀÚÀÎ ÆÐÅÏ¿¡
´ëÇÑ °¨À» Àâ±â ¾î·Á¿ï °ÍÀÌ´Ù. ¾Æ¹«¸® ¼ö¹Ú ¸ÀÀ» À̾߱â ÇØ Áصé, ÇÑ ¿©¸§ÀÇ ¼ö¹Ú ¸ÀÀ» º¸Áö ¾Ê°í ¾î¶»°Ô ¾Ë ¼ö
Àְڴ°¡? ´ÙÀ½ È£¿¡¼´Â À§¿¡¼ À̾߱âÇÑ µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇÑ ÀϹÝÀûÀÎ À̾߱⸦ ±¸Ã¼ÀûÀÎ ÆÐÅÏÀ» ÅëÇØ È®ÀÎÇØ º¼ ¼ö ÀÖÀ»
°ÍÀÌ´Ù. ¢º ÀÌ ±ÛÀ» Àд ºÐµé¿¡°Ô¡¦ ÇÊÀÚµµ ÇöÀç µðÀÚÀÎ ÆÐÅÏÀ» °øºÎÇÏ¸ç °øºÎÇÑ °ÍÀ» ¿¬±¸½Ç¿¡¼ ÁøÇàÇÏ°í ÀÖ´Â ½Ã½ºÅÛ¿¡ Àû¿ëÇØ º¸·Á´Â ³ë·Â°ú ÇöÀç
µðÀÚÀÎ ÇÏ°í ÀÖ´Â ½Ã½ºÅÛ¿¡¼ »ç¿ëµÇ¾î Áö°í ÀÖ´Â ÆÐÅÏÀ» ã¾Æº¸·Á´Â ½Ãµµ¸¦ ÇÏ°í ÀÖ½À´Ï´Ù. µû¶ó¼, ¾ÆÁ÷ ÇÊÀÚµµ ºÎÁ·ÇÑ Á¡ÀÌ ¸¹Àº
°¡¿îµ¥¿¡ ÀÌ ±ÛÀ» ¾²°í ÀÖ´Â »óȲÀ̶ó ±ÛÀÇ ³»¿ë °¡¿îµ¥´Â À߸øµÈ Á¡ÀÌ ¸¹ÀÌ ÀÖÀ¸¸®¶ó »ý°¢ÇÕ´Ï´Ù. ±ÛÀÇ ³»¿ë °¡¿îµ¥¿¡ ¾ÕµÚ°¡ ¸ÂÁö ¾Ê´Â
ºÎºÐÀ̳ª À߸øµÈ ºÎºÐÀÌ ¾øµµ·Ï ÃÖ´ëÇÑ ³ë·ÂÀ» ±â¿ïÀÌ°ÚÁö¸¸, Ȥ½Ã¶óµµ ±×·± °ÍµéÀÌ ¹ß°ßµÇ¸é ¼½¿¾øÀÌ ¾Ë·Á Áֱ⠹ٶø´Ï´Ù. ÀÌ ±ÛÀº Àú¿Í
ÀÌ ±ÛÀ» Àд ¿©·¯ºÐµéÀÌ ÇÔ²² ¾²´Â °ÍÀ̶ó°í »ý°¢À» ÇÕ´Ï´Ù. ¢º ÄÚµù ±ÔÄ¢(Coding rules) ÀÌ °÷¿¡¼´Â µðÀÚÀÎ ÆÐÅÏ¿¡¼ ´ÙÀ½ È£ºÎÅÍ »ç¿ëÇÒ ÀÚ¹Ù¾ð¾îÀÇ ÄÚµù ±ÔÄ¢¿¡ ´ëÇؼ ¼³¸íÇÑ´Ù. ¿Ö ÀÚ¹Ù ¾ð¾î¸¦ »ç¿ëÇÏ´ÂÁö´Â ´ÙÀ½ È£ÀÇ ±ÛÀ» ÂüÁ¶Ç϶ó. °³ÀÎÀûÀ¸·Î »ç¿ëÇÏ°í ÀÖ¾ú´ø ³ª¸§´ë·ÎÀÇ ÄÚµù ±ÔÄ¢µµ ÀÖ°í, ¿¬±¸½Ç¿¡¼ ÆÀ ÇÁ·ÎÁ§Æ®¸¦ ÇÏ¸é¼ µû¶ú´ø ÄÚµù ±ÔÄ¢µµ ÀÖ¾úÁö¸¸, ¿©±â¼´Â
Doug LeaÀÇ ÄÚµù ±ÔÄ¢À» µû¸¥´Ù[3]. Ưº°È÷ Doug Lea°¡ »ç¿ëÇÏ°í ÀÖ´Â ÄÚµù±ÔÄ¢À» µû¸£´Â ÀÌÀ¯´Â ¾ø´Ù.
Nigel Warren°ú Philip BishopÀÌ ¾´ Ã¥¿¡¼ Doug LeaÀÇ ÄÚµù ±ÔÄ¢À» µû¶ó ÀÚ¹Ù Äڵ带 »ç¿ëÇÏ°í Àִµ¥,
°³ÀÎÀûÀ¸·Î º¼ ¶§ Doug LeaÀÇ ÄÚµù ±ÔÄ¢Àº ÀüüÀûÀ¸·Î ¸íÈ®ÇÏ¿© ÄÚµåÀÇ ÀǹÌÀü´ÞÀÌ Àß Àü´ÞµÈ´Ù°í »ý°¢Ç߱⠶§¹®ÀÌ´Ù[4]. ´ÙÀ½Àº
Doug LeaÀÇ ÄÚµù ±ÔÄ¢À¸·Î Nigel Warren°ú Philip BishopÀÌ ¾´ Ã¥¿¡¼ Á¤¸®ÇØ ³õÀº °ÍÀ» ÀûÀº °ÍÀÌ´Ù.
Packages Interface Class À̸§ ¶Ç´Â Interface¿Í ±¸ºÐ Áþ±â À§Çؼ Abstract class ¶Ç´Â Interface¿Í ±¸ºÐ Áþ±â À§Çؼ Exception class Constants Instance and class variables(fields) Local variables Methods ¿¹) public class CodingConventionsImpl
private int intField_;
public void mehodThatThrowsException()
public void methodWithLocalVariable(int[]
array) {
Âü°í ¹®Çå [1] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,
[2] Pattern languages of Program Design 3, edited by Robert
Martin, [3] Doug Lea, Concurrent Programming in Java, Addison-Wesley , 1997 [4] Nigel Warren, Philip Bishop, Java in Practice, Design Styles and
Idioms for |
oonewsletter - 2000/1/24 |