clean
code£¬¹ËÃû˼Òå¾ÍÊÇÕû½àµÄ´úÂ룬»òÕß˵ÇåÎú¡¢Æ¯ÁÁµÄ´úÂ룬ÏàÐÅ´ó¶àÊý¹¤³Ìʦ¶¼Ï£Íû×Ô¼ºÄÜд³öÕâÑùµÄ´úÂë¡£
Ò²ÐíÕâÊǸöǧÈËÇ§ÃæµÄ»°Ì⣬ÿ¸ö¹¤³Ìʦ¶¼ÓÐ×Ô¼ºµÄÀí½â¡£±ÈÈçÎÒ£¬´ÓÒ»¸öÌìÌì±»Âî´úÂëдµÃÀõÄÈË£¬Öð½¥Ñ§Ï°³É³¤£¬µ½ÏÖÔÚÒ²ÄÜдµÄ³ö¡°ÈËÄ£ÈËÑù¡±µÄ´úÂëÀ´ÁË¡£ÕâÆÚ¼äËãÊÇ»ýÀÛÁËÒ»µã¾ÑéÐĵã¬ÏëºÍ´ó¼Ò·ÖÏí£¬Å×שÒýÓñ¡£
±¾ÎÄÖ÷ÒªÕë¶ÔÃæÏò¶ÔÏó±à³ÌµÄclean codeÀ´²ûÊö£¬ÃæÏò¹ý³Ì´úÂëµÄ˼·»á±È½Ï²»Í¬£¬²»ÔÚ±¾ÎĵÄÌÖÂÛ·¶³ë¡£
´úÂëÕû½àµÄ´óǰÌá
´úÂë´ó²¿·ÖʱºòÊÇÓÃÀ´Î¬»¤µÄ£¬¶ø²»ÊÇÓÃÀ´ÊµÏÖ¹¦ÄܵÄ
Õâ¸öÔÔòÊÊÓÃÓڴ󲿷ֵŤ³Ì¡£ÎÒÃǵĴúÂ룬һ·½ÃæÊDZàÒëºÃÈûúÆ÷Ö´ÐУ¬Íê³É¹¦ÄÜÐèÇó£»ÁíÒ»·½Ã棬ÊÇд¸øÉí±ßµÄ¶ÓÓѺÍ×Ô¼º¿´µÄ£¬ÐèÒª³¤ÆÚά»¤£¬¶øÇҴ󲿷ÖÏîÄ¿¶¼²»Êdz¯ÉúϦËÀµÄ¶ÌÃü¹í¡£
´ó²¿·ÖÇé¿öÏ£¬Èç¹û²»ÄÜд³öÇåÎúºÃ¿´µÄ´úÂ룬¿ÉÄÜ×Ô¼ºÒ»Ê±Ë¬¿ì£¬ºóÐøÎ¬»¤¸¶³öµÄ´ú¼ÛºÍ³É±¾½«Ô¶¸ßÓÚÄãµÄÏëÏó¡£
¶ÔÇåÎúºÃ¿´´úÂëµÄ×·Çó¾«Éñ£¬±ÈËùÓеļ¼Çɶ¼ÒªÖØÒª¡£
ÓÅÐãµÄ´úÂë´ó²¿·ÖÊÇ¿ÉÒÔ×ÔÃèÊöµÄ£¬ºÃÓÚÎĵµºÍ×¢ÊÍ
µ±Äã·¿´ºÜ¶à¿ªÔ´´úÂëʱ£¬»á·¢ÏÖ×¢ÊÍÉõÖÁ±ÈÎÒÃÇ×Ô¼ºÐ´µÄÏîÄ¿¶¼ÉÙ£¬µ«ÊÇÈ´ÄÜ¿´µÄºÜÊæ·þ¡£µ±¶ÁÍêÔ´Âëʱ£¬ºÜ¶à¹¦ÄÜÉè¼Æ¾Í¶¼ÇåÎúÃ÷ÁËÁË¡£Í¨¹ý×ÐϸÕå×õķ½·¨ÃüÃû¡¢ÇåÎúµÄÁ÷³Ì¿ØÖÆ£¬´úÂë±¾Éí¾Í¿ÉÒÔÄóöÀ´µ±×÷ÎĵµÊ¹Ó㬶øÇÒËüÓÀÔ¶²»»á¹ýÆÚ¡£
Ïà·´£¬×¢ÊͲ»ÄÜÈÃдµÄÀõĴúÂë±äµÄ¸üºÃ¡£Èç¹û±ðÈËÖ»ÄÜÒÀ¿¿×¢ÊͶÁ¶®ÄãµÄ´úÂëµÄʱºò£¬ÄãÒ»¶¨Òª·´Ë¼´úÂë³öÏÖÁËʲôÎÊÌ⣨µ±È»£¬ÕâÀï²»ÊÇ˵´ó¼Ò²»ÒªÐ´×¢ÊÍÁË£©¡£
˵ϱȽÏÊʺÏдעÊ͵ÄÁ½ÖÖ³¡¾°£º
public interface£¬Ïò±ðÈËÃ÷È··¢²¼Ä㹦ÄܵÄÓïÒ壬ÊäÈëÊä³ö£¬ÇÒ²»ÐèÒª¹Ø×¢ÊµÏÖ¡£
¹¦ÄÜÈÝÒ×ÓÐÆçÒåµÄµã£¬»òÕßÉæ¼°±È½ÏÉî²ãרҵ֪ʶµÄʱºò¡£±ÈÈ磬Èç¹ûÄãдһ¸ö¿Í»§¶Ë£¬¸÷ÖÖconfig²ÎÊýµÄº¬ÒåµÈ¡£
Éè¼ÆÄ£Ê½Ö»ÊÇÊֶΣ¬´úÂëÇåÎú²ÅÊÇÄ¿µÄ
֮ǰ¼û¹ýһЩËùν¡°¸ßÊÖ¡±µÄ´úÂë¶¼±È½Ï³éÏ󣬸÷ÖÖ¹¤³§¡¢¸÷Öּ̳С£ÏëÕÒµ½Ò»¸öʵÏÖ×ÜÊÇҪɽ·ʮ°ËÍ䣬һ¸ö¹¤³ÌÀï´ó²¿·ÖµÄÀàÊdzéÏóÀà»òÕß½Ó¿Ú£¬ÕÒ²»µ½Ò»Á½¾äʵÏֵĴúÂ룬Õû¸ö¶ÁÆð´úÂëÀ´ºÜ²»Ë³³©¡£ÎÒ¸úËûÁÄÆðÀ´µÄʱºò£¬ËûµÄÖ÷ÒªÁ¢³¡ÊÇ£º±£ÁôºÏÊʵÄÀ©Õ¹µã£¬¿Ë·þµôËùÓеÄÓ²±àÂë¡£
ÆäʵÔÚÎÒ¿´À´£¬Ò²ÐíËûµÄ´úÂë±»¡°¹ý¶ÈÉè¼Æ¡±ÁË¡£Ê×ÏȱØÐëÒª³ÐÈϵÄÊÇ£¬ÔÚͬһ¸ö¹«Ë¾¹¤×÷µÄͬÊ£¬Ë®Æ½ÊDzβÆëµÄ¡£ÎÞÂÛÄãÓÃÁËÈçºÎ¸ß´óÉϵÄÉè¼Æ£¬Èç¹û´ó¶àÊýÈ˶¼²»ÄÜÀí½âÄãµÄ´úÂë»òÕß¶ÁÆðÀ´ºÜ·Ñ¾¢µÄ»°£¬ÆäʵÕâÊÇÒ»¸öʧ°ÜµÄÉè¼Æ¡£
µ±ÄãµÄϵͳÄڴ󲿷ֳéÏóÖ»ÓÐÒ»¸öʵÏÖµÄʱºò£¬ÒªºÃºÃ˼¿¼Ò»Ï£¬ÊDz»ÊÇÉè¼ÆÓеã¹ý¶ÈÁË£¬ÇåÎúÓÀÔ¶ÊǵÚÒ»×¼Ôò¡£
´úÂëÕû½àµÄ³£¼ûÊÖ¶Î
¼ÇסÔÔòºó£¬ÎÒÃÇ¿ªÊ¼½øÈëʵ¼ù»·½Ú£¬ÏÈÀ´¿´ÏÂÓÐÄÄЩ´Ù³Éclean codeµÄ³£¼ûÊֶΡ£
code review
ºÜ¶à´ó¹«Ë¾»áÓÃgitµÄpull request»úÖÆÀ´×öcode review¡£ÎÒÃÇÖØµãÓ¦¸Ãreviewʲô£¿ÊÇ´úÂëµÄ¸ñʽ¡¢ÒµÎñÂß¼»¹ÊÇ´úÂë·ç¸ñ£¿ÎÒÏë˵µÄÊÇ£¬·²ÊÇÄÜͨ¹ý»úÆ÷¼ì²é³öÀ´µÄÊÂÇ飬ÎÞÐèͨ¹ýÈË¡£±ÈÈç»»ÐС¢×¢ÊÍ¡¢·½·¨³¤¶È¡¢´úÂëÖØ¸´µÈ¡£³ýÁË»ù±¾¹¦ÄÜÐèÇóµÄÂß¼ºÏÀíûÓÐbugÍ⣬ÎÒÃǸüÓ¦¸Ã¹Ø×¢´úÂëµÄÉè¼ÆÓë·ç¸ñ¡£±ÈÈ磬һ¶Î¹¦ÄÜÊDz»ÊÇÓ¦¸ÃÊôÓÚÒ»¸öÀà¡¢ÊDz»ÊÇÓкܶàÏàËÆµÄ¹¦ÄÜ¿ÉÒÔ³éÈ¡³öÀ´¸´ÓᢴúÂëÌ«¹ýÈß³¤ÄѶ®µÈµÈ¡£
ÎÒ¸öÈ˷dz£ÍƳ缯Ìåcode review£¬ÒòΪºÜ¶àʱºò£¬×éÀïÏà¶Ô¸ß¼¶µÄ¹¤³ÌʦÄܹ»Ò»ÑÛ·¢ÏÖ´úÂë´æÔڽϴóÉè¼ÆÈ±ÏÝ£¬Ìá³ö¸Ä½øÒâ¼û»òÕßÖØ¹¹·½Ê½¡£ÎÒÃÇ¿ÉÒÔÔÚÕû¸öС×éÄÚÐγÉÒ»¸öºÃµÄÎÄ»¯´«³ÐºÍ·ç¸ñͳһ£¬²¢ÇҺܴó³Ì¶ÈÉÏÅàÑøÁË´ó¼Ò¶Ôclean
codeµÄÈÈÇé¡£
ÇÚÓÚÖØ¹¹
ºÃµÄ´úÂ룬һ°ã¶¼²»ÊÇÒ»´é¶ø¾ÍµÄ¡£¼´Ê¹Ò»¿ªÊ¼Éè¼ÆµÄ´úÂë·Ç³£ÓÅÐã£¬Ëæ×ÅÒµÎñµÄ¿ìËÙµü´ú£¬Ò²¿ÉÄܱ»¸ÄµÄÃæÄ¿È«·Ç¡£
ΪÁ˱ÜÃâÖØ¹¹´øÀ´µÄ¸ºÃæÓ°Ï죨delayÐèÇó»òÕß´øÀ´bug£©£¬ÎÒÃÇÐèÒª×öºÃÒÔÏµĹ¦¿Î£º
¢Ù ÕÆÎÕһЩ³£¼ûµÄ¡°ÎÞÍ´¡±Öع¹¼¼ÇÉ£¬ÕâÔÚÏÂÎÄ»áÓоßÌå½²½â¡£
¢Ú С²½¿ìÅÜ£¬²»ÒªÆóͼһ¿Ú³Ô³É¸öÅÖ×Ó¡£¸ÄÒ»µã£¬²âÊÔÒ»µã£¬Ò»·½Ãæ¼õÉÙ´úÂëmergeµÄÍ´¿à£¬ÁíÒ»·½Ãæ¼õÉÙÉÏÏߵķçÏÕ¡£
¢Û ½¨Á¢×Ô¶¯»¯²âÊÔ»úÖÆ£¬Òª×öµ½¼´Ê¹´úÂë¸Ä»µÁË£¬Ò²Äܱ£Ö¤ÏµÍ³×îСºËÐŦÄܵĿÉÓ㬲¢ÇÒ±£Ö¤×Ô¼ºÐ޸ĵIJ¿·Ö±»²âÊÔ¸²¸Çµ½¡£
¢Ü ÊìÁ·ÕÆÎÕIDEµÄ×Ô¶¯Öع¹¹¦ÄÜ¡£ÕâЩ»áºÜ´ó³Ì¶ÈÉϼõÉÙÎÒÃǵÄÌåÁ¦ÀͶ¯£¬±ÜÃâ·¸´í¡£
¾²Ì¬¼ì²é
ÏÖÔÚÊÐÃæÉÏÓкܶà´úÂ뾲̬¼ì²éµÄ¹¤¾ß£¬Ò²ÊÇ·¢ÏÖbugºÍ·ç¸ñ²»ºÃµÄ±È½ÏÈÝÒ׵ķ½Ê½¡£¿ÉÒÔÓë·¢²¼ÏµÍ³×ö¼¯³É£¬Ç¿ÖưÑÖ÷ÒªÎÊÌâÐÞ¸´µô²Å¿ÉÒÔÉÏÏß¡£Ä¿Ç°ÃÀÍŵãÆÀ¼¼ÊõÍŶÓÄÚ²¿µÄÑз¢Á÷³ÌÖÐÒѾÆÕ±é½ÓÈëÁËSonarÖÊÁ¿¹ÜÀíÆ½Ì¨¡£
¶à¶Á¿ªÔ´´úÂëºÍÉí±ßÓÅÐãͬѧµÄ´úÂë
¸Ðл¿ªÔ´ÉçÇø£¬ÎªÎÒÃÇÌṩÁËÕâôºÃµÄѧϰ»ú»á¡£ÎÞÂÛÊÇJDKµÄÔ´Â룬»¹ÊǾµäµÄNetty¡¢Spring¡¢Jetty£¬»¹ÊÇһЩС¹¤¾ßÈçGuavaµÈ£¬¶¼ÊÇclean
codeµÄµä·¶¡£¶à¶àѧϰ£¬¶à¶à·´Ë¼ºÍ×ܽᣬ±ØÓÐÊÕÒæ¡£
´úÂëÕû½àµÄ³£¼û¼¼ÇÉ
Ç°ÃæµÄÄÚÈݶ¼ÊôÓÚÈÈÉí£¬Èôó¼ÒÓиöÕûÌåºê¹ÛµÄÈÏʶ¡£ÏÂÃæÖÕÓÚ½øÈë¸É»õ»·½ÚÁË£¬ÎÒ»á·Ö¼¸¸ö½Ç¶È½²½â±àдÕû½à´úÂëµÄ³£¼û¼¼ÇɺÍÎóÇø¡£
ͨÓü¼ÇÉ
µ¥Ò»Ö°Ôð
ÕâÊÇÕû½à´úÂëµÄ×îÖØÒªÒ²ÊÇ×î»ù±¾µÄÔÔòÁË¡£¼òµ¥À´½²£¬´óµ½Ò»¸ömodule¡¢Ò»¸öpackage£¬Ð¡µ½Ò»¸öclass¡¢Ò»¸ömethodÄËÖÁÒ»¸öÊôÐÔ£¬¶¼Ó¦¸Ã³ÐÔØÒ»¸öÃ÷È·µÄÖ°Ôð¡£Òª¶¨ÒåµÄ¶«Î÷£¬Èç¹û²»ÄÜÓÃÒ»¾ä»°ÃèÊöÇå³þÖ°Ô𣬾ͰÑËü²ðµô¡£
ÎÒÃÇÆ½Ê±Ð´´úÂëʱ£¬×îÈÝÒ×·¸µÄ´íÎóÊÇ£ºÒ»¸ö·½·¨¸ÉÁ˺ü¸¼þÊ»òÕßÒ»¸öÀà³ÐÔØÁËÐí¶à¹¦ÄÜ¡£
ÏÈÀ´ÁÄÁÄ·½·¨µÄÎÊÌâ¡£¸öÈ˷dz£Ö÷ÕŰѷ½·¨²ðϸ£¬ÕâÊǸ´ÓõĻù´¡¡£Èç¹û·½·¨¸ÉÁËÁ½¼þÊÂÇ飬ºÜÓпÉÄÜÆäÖÐÒ»¸ö¹¦ÄܵįäËûÒµÎñÓвî±ð¾Í²»ºÃÖØÓÃÁË¡£ÁíÍâÓïÒåÒ²ÊDz»Ã÷È·µÄ¡£¾³£¿´µ½Ò»¸öget()·½·¨ÀïÃæ¾¹È»ÐÞ¸ÄÁËÊý¾Ý£¬ÕâÈÃʹÓÃÄã·½·¨µÄÈËÇéºÎÒÔ¿°£¿Èç¹û²»µã½øÈ¥¿´¿´ÊµÏÖ£¬¿ÉÄܾÍÈóÌÐòÏÝÈëbug£¬ÈòâÊÔÏÝÈëÂé·³¡£
ÔÙÀ´ÁÄÁÄÀàµÄÎÊÌâ¡£ÎÒÃǾ³£»á¿´µ½¡°ÓÖ³ôÓÖ³¤¡±µÄservice/biz²ãµÄ´úÂ룬ÀïÃæÓм¸Ê®¸ö·½·¨£¬¸ÉʲôµÄ¶¼ÓУº¼ÈÓÐÔöɾ¸Ä²é£¬ÓÖÓÐÒµÎñÂß¼µÄ¾ÛºÏ¡£Ã¿´ÎÕÒµ½Ò»¸ö·½·¨¶¼·Ñ¾¢¡£²»ÊôÓÚÒ»¸öÁìÓò»òÕßÒ»¸ö²ã´ÎµÄ¹¦ÄÜ£¬¾Í²»Òª·Åµ½Ò»Æð¡£
ÎÒÃÇteamÔÚcode reviewÖУ¬×î³£±»ÅúÆÀµÄÎÊÌ⣬¾ÍÊÇÒ»¸ö·½·¨Ó¦¸Ã¹éÊôÓÚÄĸöÀà¡£
ÓÅÏȶ¨ÒåÕûÌå¿ò¼Ü
ÎÒд´úÂëµÄʱºò£¬±È½Ïϲ»¶ÏÈÈ¥¶¨ÒåÕûÌåµÄ¿ò¼Ü£¬¾ÍÊÇдºÜ¶à¿ÕʵÏÖ£¬À´°ÑÕûÌåµÄÒµÎñÁ÷³Ì´©ÆðÀ´¡£Á¼ºÃµÄ·½·¨Ç©Ãû£¬ÓÃÈë²ÎºÍ³ö²ÎÀ´¿ØÖÆÁ÷³Ì¡£ÕâÑùÄܹ»±ÜÃâÏÝÈëÒµÎñϸ½ÚÎÞ·¨×԰Ρ£ÔÚÄÔº£ÖÐÏȶ¨ÒåÇå³þÁ÷³ÌµÄ¼¸¸ö½×¶Î£¬²¢ÎªÃ¿¸ö½×¶ÎÕÒµ½ºÏÊʵķ½·¨£¯Àà¹éÊô¡£
ÕâÑù×öµÄºÃ´¦ÊÇ£¬ÔĶÁÄã´úÂëµÄÈË£¬ÎÞÂÛ¶Áµ½Ê²Ã´Éî¶È£¬¶¼¿ÉÒÔÇåÎúµØÁ˽âÿһ²ãµÄÖ°ÄÜ£¬Èç¹û²»careÏÂÒ»²ãµÄʵÏÖ£¬ÍêÈ«¿ÉÒÔÌø¹ý²»¿´£¬²¢ÇÒ·½·¨µÄÁ£¶ÈÒ²»áÇ¡µ½ºÃ´¦¡£
¼ò¶øÑÔÖ®£¬ÎұȽÏÍÆ³çд´úÂëµÄʱºò¡°¹ã¶ÈÓÅÏÈ¡±¶ø²»ÊÇ¡°Éî¶ÈÓÅÏÈ¡±£¬ÕâºÍÎÒ¶Á´úÂëµÄ·½Ê½ÊÇÒ»Öµġ£µ±È»£¬Õâ¼þÊÂÇé¸ú¸öÈ˵Ä˼άϰ¹ßÓÐÒ»¶¨µÄ¹ØÏµ£¬¿ÉÄܶԳéÏó˼άÄÜÁ¦ÒªÇó»á¸ü¸ßһЩ¡£Èç¹û¿ªÊ¼Ð´´úÂëµÄʱºòÕâЩ²»¹»ÇåÎú£¬ÆðÂëҪͨ¹ý²»¶ÏµØÖع¹£¬Ê¹´úÂë´ïµ½ÕâÑùµÄ³ÉÉ«¡£
ÇåÎúµÄÃüÃû
ÀÏÉú³£Ì¸µÄ»°Ì⣬ÕâÀï²»Õ¹¿ª½²ÁË£¬µ«ÊDZØÐëÒªmarkһϡ£ÓеÄʱºò£¬ÎÒ˼¿¼Ò»¸ö·½·¨ÃüÃûµÄʱ¼ä£¬±Èдһ¶Î´úÂëµÄʱ¼ä»¹³¤¡£ÔÒò»¹ÊÇÄǸöÂß¼£ºÃ¿µ±Äãд³öÒ»¸öÀàËÆÓÚ"temp"¡¢"a"¡¢"b"ÕâÑù±äÁ¿µÄʱºò£¬ºóÃæÃ¿Ò»¸öά»¤´úÂëµÄÈË£¬¶¼ÐèÒªÓü¸±¶µÄ¾«Á¦²ÅÄÜÀí˳¡£
²¢ÇÒÕâÒ²ÊÇ´úÂë×ÔÃèÊö×îÖØÒªµÄ»ù´¡¡£
±ÜÃâ¹ý³¤²ÎÊý
Èç¹ûÒ»¸ö·½·¨µÄ²ÎÊý³¤¶È³¬¹ý4¸ö£¬¾ÍÐèÒª¾¯ÌèÁË¡£Ò»·½Ã棬ûÓÐÈËÄܹ»¼ÇµÃÇå³þÕâЩº¯ÊýµÄÓïÒ壻ÁíÒ»·½Ã棬´úÂëµÄ¿É¶ÁÐÔ»áºÜ²î£»×îºó£¬Èç¹û²ÎÊý·Ç³£¶à£¬Òâζ×ÅÒ»¶¨Óкܶà²ÎÊý£¬Ôںܶೡ¾°Ï£¬ÊÇûÓÐÓõģ¬ÎÒÃÇÖ»Äܹ¹ÔìĬÈÏÖµµÄ·½Ê½À´´«µÝ¡£
½â¾öÕâ¸öÎÊÌâµÄ·½·¨ºÜ¼òµ¥£¬Ò»°ãÇé¿öÏÂÎÒÃǻṹÔìparamObject¡£ÓÃÒ»¸östruct»òÕßÒ»¸öclassÀ´³ÐÔØÊý¾Ý£¬Ò»°ãÕâÖÖ¶ÔÏóÊÇvalue
object£¬²»¿É±ä¶ÔÏó¡£ÕâÑù£¬Äܼ«´ó³Ì¶ÈÌá¸ß´úÂëµÄ¿É¸´ÓÃÐԺͿɶÁÐÔ¡£ÔÚ±ØÒªµÄʱºò£¬ÌṩºÏÊʵÄbuild·½·¨£¬À´¼ò»¯Éϲã´úÂëµÄ¿ª·¢³É±¾¡£
±ÜÃâ¹ý³¤·½·¨ºÍÀà
Ò»¸öÀà»òÕß·½·¨¹ý³¤µÄʱºò£¬¶ÁÕß×ÜÊǺܱÀÀ£µÄ¡£¼òµ¥µØ°Ñ·½·¨¡¢ÀàºÍÖ°Ôð²ðϸ£¬ÍùÍù»áÓÐÁ¢¸Í¼ûÓ°µÄ³ÉЧ¡£ÒÔÀàΪÀý£¬²ð·ÖµÄά¶ÈÓкܶ࣬³£¼ûµÄÊǺáÏò£¯×ÝÏò¡£ÀýÈ磬Èç¹ûÒ»¸öservice£¬´¦ÀíµÄÊǸúÒ»¸ö¿â±í¶ÔÏóÏà¹ØµÄËùÓÐÂß¼£¬ºáÏò²ð·Ö¾ÍÊǸù¾ÝÒµÎñ£¬°Ñ½¨Á¢£¯¸üУ¯Ð޸ģ¯Í¨ÖªµÈÂß¼²ðµ½²»Í¬µÄÀàÀïÈ¥£»¶ø×ÝÏò²ð·Ö£¬Ö¸µÄÊÇ
°ÑÊý¾Ý¿â²Ù×÷/MQ²Ù×÷/Cache²Ù×÷/¶ÔÏóУÑéµÈ£¬²ðµ½²»Í¬µÄ¶ÔÏóÀïÈ¥£¬ÈÃÖ÷Á÷³Ì¾¡Á¿¼òµ¥¿É¿Ø£¬ÈÃͬһ¸öÀ࣬±í´ï¾¡Á¿Í¬Ò»¸öά¶ÈµÄ¶«Î÷¡£
ÈÃÏàͬ³¤¶ÈµÄ´úÂë¶Î±íʾÏàͬÁ£¶ÈµÄÂß¼
ÕâÀïÏë±í´ïµÄÊÇ£¬¾¡Á¿¶àµØÈ¥³éÈ¡private·½·¨£¬ÈôúÂë¾ßÓÐ×ÔÃèÊöµÄÄÜÁ¦¡£¾Ù¸ö¼òµ¥µÄÀý×Ó
public void doSomeThing(Map params1,Map params2){ Do1 do1 = getDo1(params1); Do2 do2 = new Do2(); do2.setA(params2.get("a")); do2.setB(params2.get("b")); do2.setC(params2.get("c")); mergeDO(do1,do2); } private void getDo1(Map params1); private void mergeDo(do1,do2){...}; |
ÀàËÆÕâÖÖ´úÂ룬ÔÚÒµÎñ´úÂëÖÐËæ´¦¿É¼û¡£»ñÈ¡do1ÊÇÒ»¸ö·½·¨£¬mergeÊÇÒ»¸ö·½·¨£¬µ«»ñÈ¡do2µÄ´úÂëÈ´ÔÚÖ÷Á÷³ÌÀïдÁË¡£ÕâÖÖ´úÂ룬Á÷³ÌÔ½³¤£¬¶ÁÆðÀ´Ô½ÀÛ¡£ºÜ¶àÈ˶Á´úÂëµÄÂß¼£¬ÊÇ¡°¹ã¶ÈÓÅÏÈ¡±µÄ¡£ÏȶÁ¶®Ö÷Á÷³Ì£¬ÔÙÈ¥¿´Ï¸½Ú¡£ÀàËÆÕâÖÖ´úÂ룬Èç¹ûÄܹ»°Ñ¹¹Ôìdo2µÄ´úÂ룬Ìáȡһ¸öprivate
·½·¨£¬¾Í»áÊæ·þºÜ¶à¡£
ÃæÏò¶ÔÏóÉè¼Æ¼¼ÇÉ
ƶѪÓëÁìÓòÇý¶¯
²»µÃ²»³ÐÈÏ£¬SpringÒѾ³ÉΪÆóÒµ¼¶Java¿ª·¢µÄÊÂʵ±ê×¼¡£¶ø´ó²¿·Ö¹«Ë¾²ÉÓõÄÈý²ã/ËÄ²ãÆ¶ÑªÄ£ÐÍ£¬ÒѾÈÃÎÒÃǵıàÂëϰ¹ß£¬±ä³ÉÁËÃæÏòDAO¶ø²»ÊÇÃæÏò¶ÔÏó¡£
ȱÉÙÁ˱ØÒªµÄÄ£ÐͳéÏóºÍÉè¼Æ»·½Ú£¬Ê¹µÃ´úÂëÈß³¤£¬¸´Óó̶ȱȽϲÿ´Îߣ´úÂëµÄʱºò£¬´ÓmapperߣÆð£¬ºÃÏñÒѾ³ÉΪ²»³ÉÎĵĹ淶¡£
ºÃ´¦ÊÇÉÏÊÖ¼òµ¥£¬Ñ§Ï°³É±¾µÍ¡£µ«ÊÇÿ´Î¶¼²»ÄÜÖØÓã¬È»ºóÃæ¶ÔÁ½ÈýǧÐеÄÀà¿´×ÅÑÛ»¨µÄʱºò£¬ÎÒµÄÐÄÊǺÜÍ´µÄ¡£¹ØÓÚÁìÓòÇý¶¯µÄÉè¼ÆÄ£Ê½£¬±¾ÎIJ»»áÕ¹¿ªÈ¥½²¡£»Ø¹éÃæÏò¶ÔÏ󣬻¹ÊǸú´ó¼ÒshareһЩ±È½ÏºÃµÄcode¼¼ÇÉ£¬Äܹ»ÔÚÒ»¸öͨÓõĿò¼ÜÏ£¬¾¡Á¿ºÃµÄд³öƯÁÁ¿ÉÖØÓõÄcode¡£
¸öÈËÈÏΪ£¬Ò»¸öºÃµÄϵͳ£¬Ò»¶¨Àë²»¿ªÒ»Ì׺õÄÄ£ÐͶ¨Òå¡£ÊáÀíÇå³þϵͳÖеĺËÐÄÄ£ÐÍ£¬Çå³þµÄ¶¨Òåÿ¸ö·½·¨µÄÀà¹éÊô£¬ÎÞÂÛ¶ÔÓÚ´úÂëµÄ¿É¶ÁÐÔ¡¢¿É½»Á÷ÐÔ£¬»¹ÊǺͲúÆ·µÄ¹µÍ¨£¬¶¼ÊÇÓÐĪ´óºÃ´¦µÄ¡£
Ϊÿ¸ö·½·¨ÕÒµ½ºÏÊʵÄÀà¹éÊô£¬Êý¾ÝºÍÐÐΪ¾¡Á¿ÒªÔÚÒ»Æð
Èç¹ûÒ»¸öÀàµÄËùÓз½·¨£¬¶¼ÊÇÔÚ²Ù×÷ÁíÒ»¸öÀàµÄ¶ÔÏó¡£Õâʱºò¾ÍÒª×ÐϸÏëÒ»ÏëÀàµÄÉè¼ÆÊÇ·ñºÏÀíÁË¡£ÀíÂÛÉϽ²£¬ÃæÏò¶ÔÏóµÄÉè¼Æ£¬Ö÷ÕÅÊý¾ÝºÍÐÐΪÔÚÒ»Æð¡£ÕâÑù£¬¶ÔÏóÖ®¼äµÄ½á¹¹²ÅÊÇÇåÎúµÄ£¬Ò²ÄܼõÉٺܶ಻±ØÒªµÄ²ÎÊý´«µÝ¡£
²»¹ýÕâÀïÃæÓÐÒ»¸öÒªÌÖÂ۵ķ½·¨£ºservice¶ÔÏó¡£Èç¹û²Ù×÷Ò»¸ö¶ÔÏóÊý¾ÝµÄËùÓз½·¨¶¼½¨Á¢ÔÚ¶ÔÏóÄÚ²¿£¬¿ÉÄÜʹ¶ÔÏó³ÐÔØÁ˺ܶಢ²»ÊôÓÚËü±¾ÉíÖ°Äܵķ½·¨¡£
ÀýÈ磬ÎÒ¶¨ÒåÒ»¸öÀ࣬½Ð×öperson£¬¡£Õâ¸öÀàÓкܶàÐÐΪ£¬±ÈÈ磺³Ô·¹¡¢Ë¯¾õ¡¢ÉϲÞËù¡¢Éúº¢×Ó£»Ò²Óкܶà×ֶΣ¬±ÈÈ磺ÐÕÃû¡¢ÄêÁä¡¢ÐÔ¸ñ¡£
ºÜÃ÷ÏÔ£¬×ֶδӸü´ó³Ì¶ÈÉÏÀ´½²£¬ÊǶ¨ÒåºÍÃèÊöÎÒÕâ¸öÈ˵쬵«ºÜ¶àÐÐΪºÍÎÒµÄ×ֶβ¢²»Ïà¹Ø¡£ÉϲÞËùµÄʱºòÊDz»»á¹ØÐÄÎÒÊǼ¸ËêµÄ¡£Èç¹û°ÑËùÓйØÓÚÈ˵ÄÐÐΪȫ²¿ÔÚpersonÄÚ²¿³ÐÔØ£¬Õâ¸öÀàÒ»¶¨»áÅòÕ͵IJ»ÐС£
Õâʱºò¾ÍÌåÏÖÁËservice·½·¨µÄ¼ÛÖµ£¬Èç¹ûÒ»¸öÐÐΪ£¬ÎÞ·¨Ã÷È·ÊôÓÚÄĸöÁìÓò¶ÔÏó£¬Ç£Ç¿µØÈÚÈëÁìÓò¶ÔÏóÀ»áÏԵúܲ»×ÔÈ»¡£Õâʱºò£¬ÎÞ״̬µÄservice¿ÉÒÔ·¢»Ó³öËüµÄ×÷Óᣵ«Ò»¶¨Òª°ÑÎÕºÃÕâ¸ö¶È£¬»Ø¹é±¾ÖÊ£¬ÎÒÃÇÒª°ÑÊôÓÚÿ¸öÄ£Ð͵ÄÐÐΪºÏÀíµÄÈ¥»®¶¨¹éÊô¡£
¾¯Ìèstatic
static·½·¨£¬±¾ÖÊÉÏÀ´½²ÊÇÃæÏò¹ý³ÌµÄ£¬ÎÞ·¨ÇåÎúµØ·´À¡¶ÔÏóÖ®¼äµÄ¹ØÏµ¡£ËäÈ»ÓÐһЩ´úÂëʵÀý£¨×Ô¼ºÊµÏÖµ¥Àý»òÕßSpringÍйܵȣ©µÄÎÞ״̬·½·¨¿ÉÒÔÓÃstaticÀ´±íʾ£¬µ«ÕâÖÖ³éÏóÊÇdz²ã´ÎµÄ¡£Ëµ°×ÁË£¬Èç¹ûÎÒÃÇËùÓе÷ÓÃstaticµÄµØ·½£¬¶¼Ð´ÉÏimport
static£¬ÄÇôËùÓеŦÄܾÍÓÉÀà×Ô¼ºÔÚ³ÐÔØÁË¡£
ÈÃÎÒ»Ò»¸öÀàͼ£¿ÞÏÞÎÁË¡¡»²»³öÀ´¡£
¶øµ¥ÀýµÄÅòÕÍ£¬ºÜ´ó³Ì¶ÈÉÏÒ²ÊÇÆ¶ÑªÄ£ÐÍ´øÀ´µÄ¸±×÷Óá£Èç¹û¶ÔÏó±¾ÉíÓÐѪÓÐÈ⣬¾Í²»ÐèÒªÕâô¶àÎÞ״̬·½·¨¡£
staticÕæÕýÊÊÓõij¡¾°£º¹¤¾ß·½·¨£¬¶ø²»ÊÇÒµÎñ·½·¨¡£
ÇÉÓÃmethod object
method objectÊÇ´óÐÍÖØ¹¹µÄ³£Óü¼ÇÉ¡£µ±Ò»¶ÎÂß¼ÌØ±ð¸´ÔӵĴúÂ룬³ä³âן÷ÖÖ²ÎÊý´«µÝºÍÊÇ·ÇÒò¹ûÅжϵÄʱºò£¬ÎÒÊ×ÏÈÏëµ½µÄÖØ¹¹ÊÖ¶ÎÊÇÌáÈ¡method
object¡£Ëùνmethod object£¬ÊÇÒ»¸öÓÐÊý¾ÝÓÐÐÐΪµÄ¶ÔÏó¡£ÒÀÀµµÄÊý¾Ý»á³ÉΪÕâ¸ö¶ÔÏóµÄ±äÁ¿£¬ËùÓеÄÐÐΪ»á³ÉΪÕâ¸ö¶ÔÏóµÄÄÚ²¿·½·¨¡£ÀûÓóÉÔ±±äÁ¿´úÌæ²ÎÊý´«µÝ£¬»áÈôúÂë¼ò½àÇåˬºÜ¶à¡£²¢ÇÒ£¬°ÑÒ»¶Î¹ý³ÌʽµÄ´úÂëת»»³É¶ÔÏó´úÂ룬ΪºÜ¶àÃæÏò¶ÔÏó±à³Ì²Å¿ÉÒÔʹÓõļ̳У¯·â×°£¯¶à̬µÈÌṩÁË»ù´¡¡£
¾Ù¸öÀý×Ó£¬ÉÏÎÄÒýÓõĴúÂëÈç¹ûÓÃmethod object±íʾ´ó¸Å»á±ä³ÉÕâÑù
class DoMerger{ map params1; map params2; Do1 do1; Do2 do2; public DoMerger(Map params1,Map params2){ this.params1 = params1; this.params2 = parmas2; } public void invoke(){ do1 = getDo1(); do2 = getDo2(); mergeDO(do1,do2); } private Do1 getDo1(); private Do2 getDo2(); private void mergeDo(){ print(do1+do2); } } |
ÃæÏò½Ó¿Ú±à³Ì
ÃæÏò½Ó¿Ú±à³ÌÊǺܶàÄêÀ´´ó¼ÒÐγɵĹ²Ê¶ºÍ×î¼Ñʵ¼ù¡£×îÔçµÄÀíÂÛÊDZãÓÚʵÏÖµÄÌæ»»£¬µ«ÏÖÔÚ¸üÏÔ¶øÒ×¼ûµÄºÃ´¦ÊDZÜÃâpublic·½·¨µÄÅòÕÍ¡£Ò»¸ö¶ÔÍâpublishµÄ½Ó¿Ú£¬Ò»¶¨ÓÐÃ÷È·µÄÖ°Ôð¡£ÒªÅжÏÿһ¸öpublic·½·¨ÊÇ·ñÓ¦¸ÃÊôÓÚͬһ¸öinterface£¬ÊǺÜÈÝÒ׵ġ£
Õû¸ö´úÂë»ùÓÚ½Ó¿ÚÈ¥×éÖ¯£¬»áºÜ×ÔÈ»µØ±äµÃ·Ç³£ÇåÎúÒ×¶Á¡£¹Ø×¢ÊµÏÖµÄÈ˲ÅÈ¥¿´ÊµÏÖ£¬²»ÊÇÂ
ÕýȷʹÓü̳кÍ×éºÏ
ÕâÒ²ÊǸöÔÚÒµ½ç±»ÌÖÂÛ¹ýºÜ¾ÃµÄÎÊÌ⣬ҲÓкܶàÂÛµ÷¡£×îеĹ۵ãÊÇ×éºÏµÄʹÓÃÒ»°ãÇé¿öϱȼ̳иüΪÁé»î£¬ÓÈÆäÊǵ¥¼Ì³ÐµÄÌåϵÀËùÒÔÇãÏòÓÚʹÓÃ×éºÏ
£¬·ñÔò»áÈÃ×ÓÀà³ÐÔØºÜ¶à²»ÊôÓÚ×Ô¼ºµÄÖ°ÄÜ¡£
¸öÈ˶Դ˹۵ã³Ö±£ÁôÒâ¼û£¬ÔÚÎÒ¾Àú¹ýµÄ´úÂëÖУ¬ÓÐÒ»¸öС¹æÂÉ£¬ÎÒ·ÖÎöһϡ£
protected abstract ÕâÖÖÊÇ×îÖµµÃʹÓü̳е쬏¸Àà±£ÁôÀ©Õ¹µã£¬×ÓÀàÀ©Õ¹£¬Ã»Ê²Ã´ºÃ˵µÄ¡£
protected final ÕâÖÖ·½·¨£¬×ÓÀàÊÇÖ»ÄÜʹÓò»ÄÜÐÞ¸ÄʵÏֵġ£Ò»°ãÓÐÁ½ÖÖÇé¿ö£º
¢Ù ³éÏó³öÖ÷Á÷³Ì²»Äܱ»Ð޸ĵģ¬È»¶øÒ»°ãÇé¿öÏ£¬public final¸üÊʺÏÕâ¸öÖ°ÄÜ¡£Èç¹ûÖ»ÊÇÁ÷³ÌµÄÒ»²¿·Ö£¬ÐèҪ˼¿¼Õâ¸öÁ÷³ÌµÄÀà¹éÊô£¬´ó²¿·Ö±ä³Épublic×éºÏµ½ÆäËûÀàÀïÊǸüºÏÊʵġ£
¢Ú ¸¸ÀàÊdzéÏóÀàÎÞ·¨Ö±½Ó¶ÔÍâÌṩ·þÎñ£¬ÓÖ²»Ï£Íû×ÓÀàÐÞ¸ÄËüµÄÐÐΪ£¬ÕâÖÖ´ó¶àÊýÇé¿öÏÂÊôÓÚ¹¤¾ß·½·¨£¬±È½ÏÊʺÏÓÃÁíÒ»¸öÁìÓò¶ÔÏóÀ´³ÐÔØ²¢ÓÃ×éºÏµÄ·½Ê½À´Ê¹Óá£
protected ÕâÖÖÊÇÓÐÕùÒéµÄ£¬ÊǸ¸ÀàÓÐĬÈÏʵÏÖµ«×ÓÀà¿ÉÒÔÀ©Õ¹µÄ¡£·²ÊÇÓÐÀ©Õ¹¿ÉÄܵģ¬Ê¹Óü̳иüÀíÏëһЩ¡£·ñÔò£¬¶¨Òå³Éfinal²¢¿¼ÂdzÉ×éºÏ¡£
×ÛÉÏËùÊö£¬¸öÈËÈÏΪ¼Ì³Ð¸ü¶àµÄÊÇΪÀ©Õ¹Ìṩ±ãÀû£¬Îª¸´Óöø´æÔڵķ½·¨×îºÃʹÓÃ×éºÏµÄ·½Ê½¡£µ±È»£¬¸üΪ´óµÄÔÔòÊÇÃ÷ȷÿ¸ö·½·¨µÄÁìÓò»®·Ö¡£
´úÂ븴Óü¼ÇÉ
Ä£°å·½·¨
ÕâÊÇÎÒÓõÃ×î¶àµÄÉè¼ÆÄ£Ê½ÁË¡£Ã¿µ±ÓÐÁ½¸öÐÐΪÀàËÆµ«ÓÖ²»ÍêÈ«ÏàͬµÄ´úÂë¶Îʱ£¬ÎÒ×ÜÊÇ»áÏ뵽ģ°å·½·¨¡£ÌáÈ¡¹«¹²Á÷³ÌºÍ¿É¸´Óõķ½·¨µ½¸¸À࣬±£Áô²»Í¬µÄµØ·½×÷Ϊabstract·½·¨£¬Óɲ»Í¬µÄ×ÓÀàȥʵÏÖ¡£
²¢ÔÚºÏÊʵÄʱ»ú£¬pull method up£¨¸´Óã©»òÕß pull method down£¨ÌØÊâÂß¼£©¡£
×îºó£¬°Ñ²»ÊôÓÚÁ÷³ÌµÄ¡¢µ«¿É¸´Óõķ½·¨£¬ÅжÏÊDz»ÊÇÊôÓÚ»ùÀàµÄÁìÓòÖ°Ôð£¬ÔÙʹÓü̳лòÕß×éºÏµÄ·½·¨£¬ÎªÕâЩ·½·¨ÕÒµ½ºÏÊʵݲ¼ÒÖ®´¦¡£
extract method
ºÜ¶à¸´Óõļ¶±ðûÓÐÕâô´ó£¬Ò²ÐíÖ»ÊǼ¸ÐÐÏàͬµÄÂß¼±»copyÁ˺ü¸´Î£¬ºÎ²»³¢ÊÔÌáÈ¡·½·¨£¨private£©¡£ÓÖÄÜÃ÷È··½·¨ÐÐΪ£¬ÓÖÄÜ×öµ½´úÂ븴Ó㬺ÎÀÖ²»Îª£¿
ÔðÈÎÁ´
¾³£¿´µ½ÕâÑùµÄ´úÂ룬һÁ¬´®ÀàËÆµÄÐÐΪ£¬Ö»ÊÇÊý¾Ý»òÕßÐÐΪ²»Ò»Ñù¡£ÈçÒ»¶ÑУÑéÆ÷£¬Èç¹û³É¹¦ÔõôÑù¡¢Ê§°ÜÔõôÑù£»»òÕßÒ»¶Ñ¶ÔÏó¹¹½¨Æ÷£¬¸÷È¥¹¹ÔìÒ»²¿·ÖÊý¾Ý¡£Åöµ½ÕâÖÖ³¡¾°£¬ÎÒ×ÜÊÇϲ»¶¶¨ÒåÒ»¸öͨÓýӿڣ¬Èë²ÎÊÇÍêÕûµÄҪУÑ飯¹¹ÔìµÄ²ÎÊý£¬
³ö²ÎÊdzɹ¦/ʧ°ÜµÄ±êʾ»òÕßÊÇvoid¡£È»ºóÓкܶàʵÏÖÆ÷·Ö±ðʵÏÖÕâ¸ö½Ó¿Ú£¬ÔÙÓÃÒ»¸ö¼¯ºÏ°ÑÕâ¶ÑÐÐΪ´®ÆðÀ´¡£×îºó£¬±éÀúÕâ¸ö¼¯ºÏ£¬´®ÐлòÕß²¢ÐеÄÖ´ÐÐÿһ²¿·ÖµÄÂß¼¡£
ÕâÑù×öµÄºÃ´¦ÊÇ£º
¢Ù ºÜ¶àͨÓõĴúÂë¿ÉÒÔÔÚÔðÈÎÁ´Ô×Ó¶ÔÏóµÄ»ùÀàÀïʵÏÖ£»
¢Ú ´úÂëÇåÎú£¬¿ª±ÕÔÔò£¬Ã¿µ±ÓÐеÄÐÐΪ²úÉúµÄʱºò£¬Ö»ÐèÒª¶¨ÒåÐеÄʵÏÖÀಢÌí¼Óµ½¼¯ºÏÀï¼´¿É£»
¢Û Ϊ²¢ÐÐÌṩÁË»ù´¡¡£
Ϊ¼¯ºÏÏÔʽ¶¨ÒåËüµÄÐÐΪ
¼¯ºÏÊǸöÓÐÒâ˼µÄ¶«Î÷£¬±¾ÖÊÉÏËüÊǸöÈÝÆ÷£¬µ«ÓÉÓÚ·ºÐ͵ĴæÔÚ£¬Ëü±ä³ÉÁË¿ÉÒÔ³ÐÔØËùÓжÔÏóµÄÈÝÆ÷¡£ºÜ¶à·Ç¼¯ºÏµÄÀ࣬ÎÒÃÇ¿ÉÒÔ¶¨ÒåÇå³þËûÃǵı߽çºÍÐÐΪ»®·Ö£¬µ«ÊÇ×°½ø¼¯ºÏÀËüÃÇÈ´¶¼±ä³ÉÁËÒ»¸öÑù×Ó¡£²»Í£µØÓдúÂ룬¸÷ÖÖÑ»·¼¯ºÏ£¬×öһЩÏàËÆµÄ²Ù×÷¡£
ÆäʵºÜ¶àʱºò£¬¿ÉÒ԰ѶԼ¯ºÏµÄ²Ù×÷ÏÔʾµØ·â×°ÆðÀ´£¬ÈÃËü±äµÃ¸üÓÐѪÓÐÈâ¡£
ÀýÈçÒ»¸öMap£¬Ëü¿ÉÄܱíʾһ¸öÅäÖÆ¡¢Ò»¸ö»º´æµÈµÈ¡£Èç¹ûËùÓеIJÙ×÷¶¼ÊÇÖ±½Ó²Ù×÷Map£¬ÄÇôËüµÄÐÐΪ¾ÍûÓÐÈκÎÓïÒå¡£µÚÒ»£¬¶ÁÆðÀ´¾Í±ØÐëÒªÉîÈëϸ½Ú£»µÚ¶þ£¬Èç¹ûÏë´Ó»ñÈ¡ÅäÖöÁÈ¡»º´æµÄµØ·½¼Ó¸öͨÓõÄÂß¼£¬ÀýÈç´ò¸ölogʲôµÄ£¬Äã¿ÉÒÔÏëÏóÊǶàôµÄ±ÀÀ£¡£
¸öÈËÌᳫµÄ×ö·¨ÊÇ£¬¶ÔÓÚÓÐÃ÷È·ÓïÒåµÄ¼¯ºÏµÄһЩ²Ù×÷£¬ÓÈÆäÊÇÈ«¾ÖµÄ¼¯ºÏ»òÕß±»¾³£Ê¹Óõļ¯ºÏ£¬×öһЩ·â×°ºÍ³éÏó£¬Èç°ÑMap·â×°³ÉÒ»¸öCacheÀà»òÕßÒ»¸öconfigÀ࣬ÔÙÌṩGetFromCacheÕâÑùµÄ·½·¨¡£
×ܽá
±¾ÎÄ´Óclean codeµÄ¼¸¸ö´óǰÌá³ö·¢£¬È»ºóÌá³öÁËʵ¼ùclean codeµÄһЩÊֶΣ¬Öصã·ÅÔÚ´Ù³Éclean
codeµÄһЩ³£ÓñàÂëºÍÖØ¹¹¼¼ÇÉ¡£
µ±È»£¬ÕâЩֻ´ú±í±ÊÕß±¾È˵ÄÒ»µãµã¸ÐÎò¡£ºÃµÄ´úÂ룬×î×îÐèÒªµÄ£¬»¹ÊÇ´ó¼Ò²»¶Ï×·Çó׿ԽµÄ¾«Éñ¡£»¶Ó´ó¼ÒÒ»Æð̽Ë÷½»Á÷Õâ¸öÁìÓò£¬Îªclean
codeÌṩ¸ü¶àºÃµÄ˼·Óë·½·¨¡£
|