1.¿ªÆª
5Ô·ݵÄʱºòͻȻ½Óµ½ code.oa.com¡¾ÌÚѶÄÚ²¿µÄÒ»¸ö´úÂë¹ÜÀíÆ½Ì¨¡¿
µÄ summer µÄ֪ͨ£¬ ˵¹ãµãͨµÄcodereview ²ÎÓë¶ÈÔÚ¹«Ë¾¸÷²¿ÃÅÖбíÏÖ³öÉ«£¬¶øÎÒÃÇС×飨¹ãµãͨ¹ã¸æ¶¨ÏòС×飩µÄ
codereview ×ۺϱíÏÖÔÚÈ«¹«Ë¾µÄС×éÖÐÅÅÃûµÚÒ»¡£ÕâÈÃÎÒÓеãÒâÍ⣬ÓеãÎÞÐIJåÁøµÄ¸Ð¾õ¡£ summer
Ï£ÍûÎÒÄÜддÎÒÃÇС×é×ö code review µÄһЩÐĵÃÌåÑ飬 »ØÏëÎÒѧϰʹÓà codereview
µÄ¾Àú£¬ ÎÒ×îÏÈÏëµ½µÄÒ»¾ä»°ÊÇÎÒ¼¸Äêǰ¿´µ½µÄ¹ØÓÚ codereview µÄÒ»¾äÆÀÊö£º
The biggest thing that makes Google¡¯s
code so good is simple: code review.That¡¯s not specific
to Google ¨C it¡¯s widely recognized as a good idea,
and a lot of people do it. But I¡¯ve never seen another
large company where it was such a universal. At Google,
no code, for any product, for any project, gets checked
in until it gets a positive review.
http://scientopia.org/blog s/goodmath/2011/07
/06/things-everyone-should-do-code-review/
ÕâÊÇÒ»¶ÎÈÃÎÒ¼ÇÒäÉî¿ÌµÄ»°£¬ Ò»¸öGoogle ¹¤³ÌʦдµÄ£¬ ÎÒժ¼ÏÂÀ´×ö×÷ΪÎÄÕµĿªÊ¼£¬±í´ïÎÒÔÚÌÚѶÕâЩÄêºÍһЩ³öÉ«µÄ¹¤³ÌʦºÏ×÷µÄ¹ý³ÌÖÐÒ»ÆðѧϰºÍʵ¼ù
CodeReview Ö®ºó£¬ ¶ÔCodeReview ÎÄ»¯µÄÒ»ÖÖÓÉÖÔµÄÈÏͬºÍ×ð¾´¡£

2.Rietveld
ÎÒ 2008 Äê½øÈëÌÚѶ£¬ Ö÷Òª´ôÔÚ R2²ÎÓësoso µÄ¿ª·¢£¬
´Ó 2008 ~ 2010 ÄêÎÒ¶¼ºÜ²»Ð¼ÓÚ R2 µÄÑз¢ÖÊÁ¿¹ÜÀí£¬¾õµÃ×öµÃʵÔÚºÜÔã¸â£ºÃ»ÓÐͳһµÄ±àÂë¹æ·¶¡¢Ã»ÓÐunittest£¬ÉõÖÁ¾Àú¹ýÓÐЩÈ˲»»áÓÃ
svn, ²»Ì«¶®´úÂëµÄ°æ±¾¿ØÖÆ£¬ µ±È»ÎÒ×Ô¼ºÒ²²»Ôõô¶®¿ª·¢Á÷³ÌÖеÄÖÊÁ¿¹ÜÀí£¬ ÄÇʱºòÁ¬ codereview
ÊÇʲô¶¼Ã»Ìý˵¹ý¡£2010Äê³õ£¬ ¹«Ë¾¿ªÊ¼ÔÚËÑË÷ÉϼӴóͶÈ룬 ÕÐÆ¸ÁËһЩţÈË£¬ÓÈÆäÊÇ Google
µÄһЩ¹¤³Ìʦ£¬ ¶øÕâЩÈËÒ²°Ñ Google µÄһЩ¿ª·¢ÎÄ»¯´øÈëÁË R2¡£ËäÈ» soso ×îÖÕµÄÃüÔ˲¢²»ÈçÈËËùÔ¸£¬
µ«ÊÇÔÚ 2010~2013Äê¼ä£¬ Ðí¶àsoso µÄ¹¤³ÌʦÊÇѧϰ²¢¾ÀúÁËʲôÊÇÑϽ÷¶øÇ¿´óµÄ¿ª·¢Á÷³Ì£¬Ò²¼û¹ýÎÒÃÇÔø¾É½Õ¯µÄ
Google µÄ¼¼Êõ£¬ ÒÔ¼°É½Õ¯µÄ Google µÄ¿ª·¢Á÷³Ì¡£ ¶øÖÁ½ñΪֹ£¬ÎÒÃǺͺܶàͬÊ»ØÒäÆðÀ´£¬ÎÒÃdz£µ÷٩˵ÎÒÃÇÊǼû¹ýÖíÅÜÒ²³Ô¹ýÖíÈâµÄ¡£
2010Äê4Ô´ÓGoogle À´µ½ÎÒÃDz¿ÃŵÄһλţÈËÊÇ yiwang,
×ö»úÆ÷ѧϰµÄ²©Ê¿£¬ ×öÁËÒ»´Î LDA topic modeling µÄ±¨¸æ£¬ ÁîÈËÓ¡ÏóÉî¿Ì£¬ ½Ó´¥Á˼¸´ÎÖ®ºó£¬ÎÒÖ÷¶¯ÕÒÁË
yiwang Ò»ÆðºÏ×÷£¬Ñ§Ï° LDA ²¢²ÎÓë²¢ÐÐ topic modeling µÄ¿ª·¢¡£yiwang
ÈÃÎÒ×öµÄµÚÒ»¼þʾÍÊÇÑо¿Ò»Ï Google ¿ªÔ´µÄ Rietveld code review ϵͳ£¬
²¢ÕÒһ̨»úÆ÷°Ñ Rietveld ´î½¨ÆðÀ´¡£ÓÚÊÇÒ»¶ÙÕÛÌÚÖ®ºó£¬ ÎÒÃǴÁ˹«Ë¾µÄµÚÒ»Ì×ÑϸñÒâÒåÉϵÄ
codereview ϵͳ£¬ µ±È»ÄǸöʱºòÒ²Ö»Êǹ©ÎÒÃÇС×éÄÚ×Ô¼ºÊ¹Óᣠ´î½¨ºÃ Rietveld Ö®ºó£¬
ÎÒÃÇ×öµÄµÚ¶þ¼þʾÍÊÇ°Ñ code style ¶¼Í³Ò»µ½ Google ·¢²¼µÄ C++ coding
style¡£ ×îÔçÔÚÕâÌ×ϵͳÉϽøÐÐ codereview µÄ¾ÍÊÇ4¸ö¹¤³Ìʦ yiwang, leostarzhou,
charlieyan, ºÍÎÒ¡£
ËùÓÐºÍ yiwang ºÏ×÷¹ýµÄÈËÔÚ codereview Öж¼¿à²»¿°ÑÔ£¬
ËûÊǽüºõ¿Á¿ÌµÄÑϸñÖ´ÐÐ Google C++ coding style, ÎÒÃÇÌá½»µÄµÄ code ÖжàÒ»¸ö¿Õ¸ñ£¬¶àÒ»¸ö¿ÕÐУ»»òÕßÊÇ×¢ÊÍ·ûºÅ
¡°//¡± ºóÃæÉÙÒ»¸ö¿Õ¸ñ£¬ È«¶¼±»´ò»ØÀ´Ð޸컏ü±ð˵±äÁ¿¡¢º¯ÊýÃûÃüÃû²»·ûºÏ¹æ·¶£¬ËæÒâʹÓñäÁ¿ËõдÕâЩ´óµÄ½ûÇøÁË¡£¶ÔÓÚÎÒÃÇ×î³õµÄ´úÂ룬
yiwang °¤¸öϸÖµÄÖ¸³öÎÒÃÇÎ¥·´¹æ·¶µÄµØ·½£¬ ÔÚ comment ÖÐÌùÉÏGoogle C++ ¹æ·¶µÄ¾ßÌåÒªÇóµÄ
URL anchor£¬ ÒÔ˵Ã÷ÎÒÃÇΪºÎÎ¥·´Á˹淶¡£ Ò»¿ªÊ¼ÎÒÊÇÓе㲻ÒÔΪȻµÄ£¬ À´»Ø¼¸´ÎÖ®ºóÎÒ×Ô¼ºÒ²²»ºÃÒâ˼ÁË£¬
°Ñ Google coding style ´ÓÍ·µ½Î²×Ð×ÐϸϸµÄ¿´ÉÏ3±é£¬ ÈÏÕæµÄ¼ÇסһЩϸ½Ú£¬ ÓÚÊǺܿì¾Í¿ªÊ¼ÉÏÊÖÁË¡£
×ÔÈ»£¬ ºóÐøÎÒÃǺÏ×÷µÄ¹¤³ÌʦÖð½¥¶àÁËÆðÀ´£¬ ¶ÔÓÚ codereview
µÄ±ØÒªÐÔ£¬Ðí¶àÈËÊÇÓÐÖÊÒɺÍÌôÕ½µÄ£¬ ÓÚÊÇÔÚºÍyiwangºÏ×÷µÄ¼¸ÄêÀ ÎÒ·´¸´ÌýËû˵ÁËÈý¸ö¹ÊÊ¡£
µÚÒ»¸öÊǹØÓÚËû×Ô¼ºµÄ£¬Ëû´ÓС¿ªÊ¼ coding, ¸ßÖеÄʱºòÒѾÄõ½¹¤³ÌʦµÄÈÏÖ¤£¬½øÈë
Google ֮ǰ coding ÎÞÊý£¬ ½øÈë Google Ö®ºóдµÄµÚÒ»¸ö100ÐеijÌÐò£¬ ±»ÌùµÄ
comment ³¬¹ýÁË100ÐС£ ËùÒÔ²»Òª±§Ô¹ÎÒÃǵıê×¼Ñϸñ£¬ ÑϸñµÄ±ê×¼²ÅÄܲú³öƯÁÁµÄ´úÂ룬 ÎÒÃǽñÌìÔÚÌÚѶ×öµÄ
codereview ÕæÊDz»Ëãɶ¡£
µÚ¶þ¸öÊǹØÓÚGoogle ÄÚ²¿ codereview µÄÕùÒéµÄ£¬
¾Ý˵ Google ÄÚ²¿½¨Á¢ codereview ÖÆ¶ÈµÄʱºò£¬Ò²ÊǺܶ๤³Ìʦ²»ÀÖÒ⣬ ÓÈÆäÊÇÄ곤µÄ¹¤³Ìʦ£¬
дÁ˶àÉÙÄê´úÂëÁË£¬ ±»Ò»ÈºÄêÇáµÄСƨº¢ÔÚ´úÂëÉÏÖ¸Ö¸µãµã£¬ÊµÔÚÊÇÊܲ»ÁË¡£ ×îºó˵ÊÇ Google µÄһλ¼«ÓеØÎ»µÄÈËÎï³öÀ´Ëµ»°ÁË£ºÎÒÃÇÒªÏë°Ñ¹¤³ÌÖÊÁ¿¿ØÖƺã¬
ÎÞÂÛÊÇ×ÊÀúÉîdz£¬¶¼Ò»¶¨Òª×ñÊØ¹²Í¬µÄ´úÂë¹æ·¶£¬ÓÚÊÇ codereview ÖÆ¶ÈµÃÒÔ½¨Á¢¡£
µÚÈý¸öÊǽâÊÍΪºÎÒªÓà Google C++ coding style
µÄ£¬ Google µÄ´úÂë¹æ·¶ÊÇһȺ¶¥¼âµÄ coder ÖÆ¶¨µÄ£¬ ±äÁ¿ÃûÓÃСд£¬ º¯ÊýÃûÓÃÍÕ·åʽ£¬
ÄǶ¼ÊÇÓÐÑϸñµÄÊÓ¾õÃÀѧ½²¾¿µÄ£¬ÈÃÈË¿´Á˺ÜÊæ·þµÄ£¬ÉõÖÁÊÇ×ö¹ýÊÓ¾õ¶ÔÕÕÑо¿µÄ¡£ËäÈ»ÎÒ¶Ô´Ë´æÒÉ, ÎÒ»¹ÊÇÈÏͬ
Google C++ coding style ÊÇÎÒ¼û¹ýµÄ×îºÃµÄ coding style¡£ ¶øÎÒÃÇÌÚѶµÄһλ
HR ÔÚºÍÎÒÏÐÁĵÄʱºòÒ²±íʾ¹ýͬÑùµÄ¹Ûµã :-)¡£
Coding style µÄ¹æÔòÖÆ¶¨ºÜ¶à¶¼ÊÇÏà¶ÔµÄ£¬ ¶øGoogle
style×öµÃ NB µÄµØ·½¾ÍÊÇ£¬ ËûÉ趨µÄ´ó¶àÊý¹æÔòµÄÄ¿µÄËû²¢²»ÊÇÒªÖ¤Ã÷×Ô¼ºÊÇÕýÈ·µÄ£¬ ¶øÊÇÏêϸµÄÁгö¸÷¹æÔòµÄÓÅȱµã(pros
and cons)£¬ÈÃÄã¸üÉî¿ÌµÄÀí½âÕâЩ¹æÔò¡£ÖøÃûµÄͳ¼ÆÑ§¼Ò George E.P. Box ÔÚÊý¾Ý½¨Ä£ÖÐ˵¹ýÒ»¾ä¹ãΪÁ÷´«µÄ»°£º
All models are wrong, but some are useful. Ì×ÓÃÕâ¾ä»°µ½
code review µÄ coding style ÖУ¬ ÎÒÏë˵ All coding rules
are wrong, but some are useful¡£µ±È» Google style ºÃµÄÒ»¸ö¶îÍâµÄÔÒòÊÇ
Google ÌṩÁË cpplint Õâ¸ö¹¤¾ß×Ô¶¯¼ì²éÄãµÄ code ÖÐÊÇ·ñÓÐÎ¥·´¹æ·¶µÄµØ·½£¬ ´ó²¿·ÖµÄµÍ¼¶´íÎ󶼻ᱻ¼ì²é³öÀ´¡£
3.ÍÆ¹ã CodeReview
ÎÒÃÇС×é¸Õ¿ªÊ¼°Ñ Google µÄ Rietveld ÔÚÄÚ²¿´î½¨ÆðÀ´²¢ÔÚ²¿ÃÅÄÚÍÆ¹ãʹÓÃÒÔºó£¬
·¢ÏÖÁËһЩÎÊÌ⣬ Ö÷Òª°üÀ¨£º
1.issue Ìá½»Ö®ºóÈçºÎͨ¹ý email ·¢Ë͵½¹«Ë¾µÄ outlook
ÕʺÅ
2.Rietveld ÌṩµÄÌá½» issue µÄ¹¤¾ß upload.py
¶ÔÖÐÎĵÄÖ§³Ö²»ºÃ
3.µ×²ãÓõÄÎı¾Îļþ×ö´æ´¢£¬ ·ÃÎÊÁ¿´óµÄʱºò£¬Ìá½» issue ¶àµÄʱºò£¬
ËٶȲ»ÐÐ
Ç°ÃæÁ½¸öÎÊÌâcharlieyan ºÍÎÒ¶Ô Rietveld µÄ python
Ô´´úÂë×öÁËһЩÐ޸ģ¬ ºÜ¿ì½â¾öÁË¡£ µÚ3¸öÎÊÌâÎÒÃÇÒ»Ö±½â¾öµÃ²»ºÃ¡£ ²»¹ýµ±Ê±À´ËµÖ§³ÅÎÒÃǼ¸¸öС×éµÄ¿ª·¢»¹ÊÇ
OKµÄ¡£ ËùÒÔ yiwang ¿ªÊ¼¼ÌÐøÍÆ¶¯ Rietveld ÔÚ R2 µÄʹÓᣠµ½ÁË 2011 ÄêµÄʱºòÕâÌ×¹¤¾ßÒѾÔÚ
R2 µÄ¶à¸ö²¿Ãű»Ê¹ÓÃÁË¡£ ÏÂÃæÒ»ÕÅͼÊÇÎÒÃÇÔø¾Í³¼Æ¹ýµÄ¸÷¸ö²¿Ãŵ±Ê±µÄʹÓÃÇé¿ö

2010 ÄêÎÒÃÇÔÚÍÆ¹ã codereview µÄʱºò£¬ yiwang
Ò²ÁªÏµÁËÑз¢¹ÜÀí²¿µÄͬÊ£¬ Ò²¾ÍÊÇ code.oa.com µÄά»¤ÈËÔ±£¬ µ±Ê± code.oa.com
²¢Ã»ÓÐÑϸñÒâÒåµÄ codereview ¹¦ÄÜ¡£ ËüÌṩһ¸ö´úÂë checkin Ö®ºó½øÐÐ codereview
µÄ¹¦ÄÜ£¬ ËùÒÔҲûÓз¢ËÍ codereview µÄ upload.py ½Å±¾£»Õâ¸ö¹¦ÄÜ×ÔÈ»ÊÇÓÐÓõ쬵«ÊÇʺóµÄ
review ÍùÍùÓÐȱÏÝ£¬ ºÜÄÑÌæ´úÊÂǰµÄ review¡£ÊÂʵÉϸüÖØÒªµÄÎÊÌâÊÇ£¬ ¹«Ë¾ÄÚ²¿µ±Ê±²¢Ã»ÓÐÐγÉ
codereview µÄÎÄ»¯¡£ yiwang ºÍÑз¢¹ÜÀí²¿µÄÈ˽»Á÷µÄʱºòÇ¿ÁÒµÄÍÆ¼öÁË Rietveld
ϵͳ£¬ ²»¾ÃÖ®ºócode.oa.com Ò²·ÂÕÕ Rietveld ¿ª·¢ÁËÕýʽµÄ codereview
¹¦ÄÜ£¬¶øÓÃÓÚÌá½»issue µÄ tcr.py Ò²ÕýÊÇ»ùÓÚRietveld µÄ upload.py ×öµÄÐ޸ġ£
¶øÔÚËÑËÑÄÚ²¿£¬×´¿öÔòÓÐЩ²»Í¬¡£ Google À´µÄÖì»á²Ó´øÁìµÄËÑË÷ÔÆÆ½Ì¨(ËÑË÷»ù´¡¼Ü¹¹²¿£©¶Ô
codereview ÎÄ»¯½¨Éè×öÁËÇ¿Á¦µÄÍÆ¶¯£¬ »ù´¡¼Ü¹¹²¿ÃŵöÅ£ÈË¿ªÊ¼Ê¹ÓÃÕâÌ×ϵͳ֮ºó£¬ wujie,
phong ËûÃǽӹÜÁËÕâÌ× CodeReview ϵͳ£¬ µ±Ê±ÉÏÃæÌáµ½µÄµÚÈý¸öÎÊÌ⵱ʱÒѾ³ÉΪÁËÒ»¸öÑÏÖØµÄÎÊÌ⣬
wujie£¬ phong ¿ªÊ¼¸Ä½ø Rietveld µÄÐÔÄÜÎÊÌ⣬ °Ñµ×²ãµÄÎı¾Îļþ´æ´¢Ì滻Ϊ mysql
Êý¾Ý¿â£¬ ʹÓà apache ·þÎñÆ÷Ìæ»»ÁË Rietvled »ùÓÚ Django µÄ HttpServer,
ËùÒÔRietveld µÚÈý¸öºÍÐÔÄÜÏà¹ØµÄÎÊÌâÒ²³¹µ×±»½â¾öÁË¡£ ºóÐø huanyu ÉêÇëÁË codereview.soso.oa.com
Õâ¸öÓòÃûרÃÅÌṩ codereview ·þÎñ£¬ ÓÚÊÇÖ±µ½ËÑËѺÍËѹ·ºÏ²¢£¬ ËÑËÑÄÚ²¿µÄºÃ¼¸¸ö²¿ÃŵÄÐÖµÜÃÇÒ»Ö±»ùÓÚ
Rietveld ϵͳ×ö codereview¡£

4.C++ Readability
ËÑË÷¹ã¸æ²¿ÃŵÄÇé¾³¹ã¸æÖÐÐÄÓ¦¸ÃÊÇÎÒ¾ÀúµÄ code review
ÎÄ»¯½¨Á¢µÃ×î³¹µ×ÍêÉÆµÄµØ·½¡£ µ±Ê± yiwang ÊÇÕâ¸öÖÐÐĵÄ×ܼ࣬ÎÒºÍ huan ¸÷¸ºÔðÒ»¸öС×飬
ÎÒÃÇÖÐÐÄÒª¸ºÔ𿪷¢Ò»Ì× AFC(ads for content) µÄÇé¾³¹ã¸æ²úÆ·£¬ ºÍÏÖÔÚ¹ãµãͨÓкܶàÏàËÆÖ®´¦¡£
huan, yiwang, °üÀ¨ÎÒÃÇµÄ GM paulyan ¶¼ÊÇ Google µÄ¹¤³Ìʦ£¬ ¶ø AFC
Õâ¸ö²úÆ·¼¸ºõÊÇ´ÓÁ㿪ʼ¿ª·¢£¬ ËùÒÔºÜ×ÔÈ»µÄ£¬ Ðí¶à¿ª·¢Á÷³Ì¶¼ÊÇɽկµÄ Google µÄ£¬ ËäÈ» AFC
Õâ¸ö²úÆ·×îÖÕÓÉÓÚ¸÷ÖÖÔÒò²¢Ã»ÓÐÔÚ¹«Ë¾ÄÚ²¿³É¹¦£¬ µ«ÊÇÐí¶à²ÎÓ뿪·¢µÄ¹¤³Ìʦ¶ÔÓÚÎÒÃǵ±Ê±½¨Á¢ÆðÀ´µÄ¿ª·¢Á÷³ÌÓ¦¸ÃÊÇÓ¡ÏóÉî¿ÌµÄ¡£
µ±È» codereview ÊÇÆäÖкÜÖØÒªµÄÒ»¸ö»·½Ú¡£ Huan ½è¼ø Google µÄCodeReview
Á÷³Ì£¬ ÔÚÖÐÐÄÍÆ¶¯ÁËÒ»¸ö C++ readability ÖÆ¶ÈµÄ½¨Á¢¡£ Ò»¸öÓïÑ﵀ readability
±íʾ¹¤³Ìʦ¶ÔÕâ¸öÓïÑÔºÍÏàÓ¦µÄ±àÂë¹æ·¶µÄÊìϤ£¬ Õâ¸ö C++ readability ×î³õÖ»ÊÚÓèÓÐÏÞ¼¸¸ö¸ßÖ°¼¶µÄ¹¤³Ìʦ¡£
ÿһ¸ö codereview issue ÖÁÉÙÐèÒªµÃµ½Ò»Î»¾ßÓÐ C++ readabiltiy µÄ¹¤³ÌʦµÄÈϿɣ¬
Õâ¸ö issue ²ÅÄܹ»Ìá½»µ½´úÂë¿âÖС£

¶øÃ¿Ò»¸öûÓÐ C++ readability µÄ¹¤³ÌʦҪÏë»ñµÃÕâ¸ö
readability, ÐèÒªÌá½»Ò»¸ö codereview issue ×öרÃŵÄÉêÇ룬 Õâ¸öissue
µÄ±êÌâ±ØÐë°üº¬ ¡°Apply for C++ Readability¡±, issue ÖÁÉÙ°üº¬Èý¸öÎļþ£¬
xxx.cc, xxx.h, xxx_test.cc, Èç¹ûÕâ¸ö issue ͨ¹ýÑϸñµÄ codereview
±»Í¨¹ýÁË£¬ ¾Í¿ÉÒÔÊÚÓèÕâ¸ö¹¤³Ìʦ C++ readability ¡£ ¶øÍ¨³£ÕâÖÖÉêÇëµÄ review
¹ý³Ì´ó¼Ò¶¼»áÌØ±ðµÄÈÏÕæÏ¸Ö¡£

5.ÔÚ¹ãµãͨ CodeReview

2013Äê10Ô£¬ ËÑË÷¹ã¸æÆ½Ì¨²¿²¢Èë¹ãµãͨ³ÉÁ¢ÁËSNG µÄЧ¹û¹ã¸æÆ½Ì¨²¿£¬
ÔÀ´AFC µÄϵͳÓÉÓÚÕâ¸öºÏ²¢ÊÂʵÉÏ»ù±¾·ÏÆú£¬ Ö»ÊÇÔÚ¿ª·¢¹ý³ÌÖкܶàÄ£¿é×é¼þ±»Öð²½Ç¨ÒƵ½Á˹ãµãͨµÄϵͳÉÏ¡£
ÎÒÃǸսøÈë¹ãµãͨµÄʱºò£¬ ¹ãµãͨʹÓà code.oa.com ƽ̨×ö codereview, Ò²½¨Á¢ÁËһЩ
codereview µÄÎÄ»¯£¬ µ«ÊÇÓÐºÜ¶àµØ·½ÊÇÖ´Ðв»µ½Î»µÄ¡£ coding style ËäÈ»Ò²ÍÆ³ç
Google coding style, µ«ÊÇÖ´ÐÐÉϲ»Ñϸñ£¬ ËùÒÔÕû¸ö´úÂë¿âµÄ´úÂë·ç¸ñÊǺܲ»Í³Ò»µÄ¡£
ÕâÒ²¸øÎÒÃÇµÄ codereview Ö´ÐдøÀ´ºÜ´óµÄÌôÕ½£º
¾ÉµÄ´úÂë·ç¸ñ²»Í³Ò»£¬ÎÒÃÇÈçºÎͳһ´úÂë·ç¸ñ£¬ ¾ÉµÄ´úÂëÊÇ·ñÐèÒª»ùÓÚеķç¸ñÖØÐ´£¿
Õû¸ö²úÆ·¶¼ÔÚ¸ßËٵĿª·¢µü´úÖУ¬ÀÏ´ó¶ÔÓÚ²úÆ·¹¦ÄܵĿª·¢ÑݽøÓÐÃ÷È·µÄÆÚÍû£¬
²úÆ·¾ÀíÌìÌìÔÚ¿ª·¢ÈËÔ±ºóÃæ´ß½ø¶È£¬ ÎÒÃÇÊÇ·ñÒªÖ´ÐÐÑϸñµÄ code review £¿
¹ãµãͨ×îºó»¹ÊÇÃ÷È·µÄ¹æ¶¨ coding style ͳһµ½ Google
C++ coding style£¬ ÎÒÃÇÍÅ¶ÓµÄ CodeReview Ò²ÕûÌåתս code.oa.com,
ÎÒÃÇ×Ô¼º²»ÔÙʹÓà Rietveld£¨²»¹ýÕâÌ×ϵͳ²¢Ã»Óб»·ÏÆú£¬ wujie 2014ÄêÒ»ÔµÄʱºò°ÑÕâÌ×ϵͳ´î½¨ÆðÀ´·þÎñÓÚ΢ÐÅ£¬
²¢ÉêÇëÁËÓòÃû cr.oa.com), code.oa.com µÄ CodeReview ¹¦Äܾ¹ý¼¸ÄêµÄ¸Ä½ø£¬
Ҳȷʵ±äµÃºÜºÃÓᣠ¿¼Âǵ½²úÆ·µü´úµÄ½Ú×࣬ ÎÒÃÇ¹ã¸æÖÊÁ¿ÖÐÐÄÔÚÍÆ½øµÄ¹ý³ÌÊǽ¥½øµÄ£º
ËùÓÐÐÂÌá½»µÄÎļþ±ØÐëʹÓà google style
ËùÓÐÐÂÐ޸ĵĴúÂë±ØÐëʹÓà google style
ÔÚÖ¸¶¨µÄʱ¼ä·¶Î§ÄÚ£¬ ÖØÒªÄ£¿éµÄ code ±ØÐëÖØ¹¹Îª google
style
ΪÁËÈà codereview ÎÄ»¯ÔÚ¹ãµãͨÄܸü¼Ó³¹µ×µÄ½¨Á¢ÆðÀ´¡¢Ö´Ðе½Î»£¬
¼¸Î»×ܼàºÍ¼Ü¹¹Ê¦Ò²Ñ¸ËÙÍÆ¶¯ code.oa.com ÖÐʵÏÖÁË code owner µÄ»úÖÆ£¬ ÿ¸öĿ¼ÏÂÃæÃ÷È·ÉèÖÃ
code owner, ÿ¸öchange issue ÒªÏëÌá½»£¬ ±ØÐëÓÐ code owner ͨ¹ý²Å¿ÉÒÔ¡£
¶ø¸Õ¿ªÊ¼Ö´ÐеÄʱºò£¬ ¹ã¸æÖÊÁ¿ÖÐÐÄΪÁ˱£Ö¤ code review Ö´Ðе½Î»£¬ code review
ÊǷdz£¼¯È¨µÄ£¬ ËùÓÐÏà¹ØÄ¿Â¼µÄ owner ֻдÉÏ×ܼࡣËùÒÔÖÊÁ¿ÖÐÐÄ·¢³öµÄËùÓÐ code review
issue Ö»ÓÐ×ܼàͨ¹ýÁËÖ®ºó²Å¿ÉÒÔÌá½»£¬ ÔÚÒ»¶¨µÄʱ¼äÄÚÕâȷʵӰÏ쿪·¢Ð§ÂÊ£¬ ²»¹ý¶Ô½ÌÓýËùÓпª·¢ÈËÔ±µÄ
code review ÒâʶÊǸßЧµÄ¡£ ÔÚ¾ÀúÁ˽üÈýÖܵÄÑϸñ¿ØÖÆÖ®ºó£¬ Ŀ¼µÄowner ²Å¼ÓÉÏ×鳤£¬
È»ºóÖð²½·Å¿ªµ½×éÄÚµÄһЩ¹Ç¸É³ÉÔ±¡£

¶ÔÓÚÎÒÃÇС×é¶øÑÔ£¬ ÓÐÒ»°ëÊÇ֮ǰ AFCµÄ¿ª·¢ÈËÔ±£¬ ¾Àú¹ýÑϸñµÄ
codereview ѵÁ·£» ÓÐÒ»°ëÊǹãµãͨÔÀ´µÄ¿ª·¢ÈËÔ±£¬Ã»ÓоÀú¹ýÑϸñµÄ codereview
ѵÁ·¡£ ΪÁ˽ÌÓý´ó¼ÒµÄ codereview Òâʶ£¬ÔÚС×éµÄÖÜ»áÉÏÎÒÒª·´¸´µÄÇ¿µ÷ codereview
µÄÖØÒªÐÔ£»Í¬Ê±ÎÒÃ÷È·µÄÖ¸³öÿ¸öÈ˵Ŀ¼ÆÀÊÇºÍ codereview µÄ±íÏÖÏà¹ØµÄ¡£
¶ÔÓÚ¹ã¸æÒµÎñµÄ¹¤³ÌÊä³öÖ÷Òª°üÀ¨ÏîÄ¿ÖеÄÉè¼ÆÎĵµ£¬ ´úÂëʵÏÖ£¬ ÏßÉÏA/B
testʵÑéºÍʵÑé½á¹û¸ú½ø·ÖÎö£¬ ÒÔ¼°ÈÕ³£ÔÚС×éÄڵķÖÏí(ƽ³£»ý¼«µÄÓʼþÌÖÂÛ£¬wiki ½¨É裬 ×éÄÚµÄ
techtalk ·ÖÏíµÈ)¡£ ËùÓеÄÒ»Ïß¹¤³Ìʦ£¬ ÎÞÂÛÖ°¼¶¸ßµÍ£¬×îÖØÒªµÄ¹¤³ÌÊä³öÔÔò»¹ÊÇ show
me the code, ¶ø codereview ÊÇ×îÄܹ»·´Ó¦Õâ¸ö¿Í¹ÛÊä³öµÄ¡£ ÔÚС×éÄÚ²¿£¬ ÎÒÃǾ¡Á¿ÈÃÿ¸öÈ˵Ä
codereview ²ÎÓë×´¿ö¶¼¹«¿ªÍ¸Ã÷£¬ ËùÒÔÎÒÃÇÒªÇó
ÿ¸ö codereview issue ÒªÃ÷È··¢Ë͵½ÄãµÄÏîÄ¿ºÏ×÷Õߣ¬
ÏîÄ¿ºÏ×÷Õß review Ö®ºó²ÅÔÊÐíÌá½»
ÿ¸ö issue ¶¼±ØÐëȫԱת·¢µ½Ð¡×éÄÚËùÓгÉÔ±£¬ С×éÄÚµÄÈκÎÈËÖ»ÒªÔ¸Ò⣬¶¼¿ÉÒÔÈ¥review
ÆäËûÈ˵ĴúÂë
ÓÉÓÚËùÓÐµÄ codereview issue ¶¼»á·¢Ë͵½Ð¡×éÄÚËùÓгÉÔ±£¬
ËùÒÔÎÒÊÇÄܹ»ÔÚ code.oa.com ÉÏ¿´µ½ËùÓÐÈ赀 code ²ú³öÇé¿öµÄ¡£ÎÒͨ¹ý¸ø´ó¼Ò×ö codereview
ÅжÏС×éÿ¸ö¹¤³ÌʦµÄ¹¤³ÌÊä³ö£¬ code.oa.com ÉÏ´óÖÂÊÇ¿ÉÒÔ¿´µ½Ð¡×éÄÚÿ¸öÈ˲ÎÓë codereview
µÄ³Ì¶ÈµÄ£¬ °üÀ¨Ëû·¢³öµÄ issue, Ëû¸ø×éÄÚ³ÉÔ±×öµÄ codereview comments µÈµÈ¡£
code.oa.com ÉÏÌṩÁËÒ»¸ö¹¦ÄÜ£¬ ¿ÉÒÔ dump ³öËùÓÐÈ赀 codereview issue,
ËùÒÔ¿¼ÆÀµÄʱºòÎÒ»á¼ì²éÿ¸ö³ÉÔ±ÔÚ°ëÄêÖ®ÄÚµÄ codereview Êä³ö×´¿ö£¬¼ì²é×éÄÚ³ÉÔ±Ìá½»µÄ issue
µÄÖÊÁ¿¡£
²»¹ý code.oa.com Éϲ鿴ÿ¸öÈ赀 codereview
²ÎÓë×´¿öµÄ¹¦ÄÜÏÖÔÚ»¹ÊÇÌ«Èõ£¬ Èç¹ûcode.oa.com ÄÜÌṩһ¸öͳ¼Æ·ÖÎö¹¦ÄÜ, ʹµÃÿ¸öÈË¿ÉÒÔ¿´µ½×Ô¼ºµÄһЩͳ¼ÆÖ¸±ê£¬
°üÀ¨
ÎÒÐ޸ĵÄÎļþ×ÜÊý£¬Ð޸ĺÍÌá½»µÄ´úÂë×ÜÐÐÊý
ÎÒ¸øºÏ×÷Õß×öÁ˶àÉÙ´Î codereview, ÌṩÁ˶àÉÙ´Î comments
ºÏ×÷Õ߸øÎÒ×öÁ˶àÉÙ´Î comments
Èç¹ûС×éµÄ×鳤Äܹ»¿´µ½×éÄÚ³ÉÔ±µÄÕâЩͳ¼ÆÖ¸±ê£¬ÎÞÒɶÔÓÚ¿¼ÆÀÿһ¸öС×é³ÉÔ±µÄ¹¤³ÌÊä³ö»áÌṩºÜ¶à¿Í¹Û¹«ÕýµÄÐÅÏ¢¡£
6.CodeReview ¸ÐÎò
×öÁË4ÄêµÄ CodeReview, »ù±¾ÉÏÕâ¸öÁ÷³ÌÔÚÎÒÃǵÄÍŶÓÒѾÉîÈë¹ÇË裬³ÉΪÁËС×鹤³Ì¹¤×÷ÖеÄÖÖÐÐΪϰ¹ß¡£
Èç¹ûÓÐÒ»ÌìÎÒÀ뿪ÁËÌÚѶ£¬ ÎÒÏàÐÅÎÒÔÚÌÚѶËù¾ÀúµÄÏà¶ÔÑϸñµÄ CodeReview ѵÁ·»á°ïÎÒ×öºÃÏÂÒ»¸öÏîÄ¿µÄ¹¤³ÌÖÊÁ¿¹ÜÀí¡£
ΪºÎÒª×ö CodeReview ÍøÂçÉÏÓкܶàµÄÂÛÖ¤£¬ ֮ǰºÍ yiwang ºÏ×÷µÄʱºò£¬ ÍŶÓÄÚ×ܽáµÄ¼¸µãÈçÏÂ(Ö÷Òª¶¼ÊÇ
yiwang ×ܽáµÄ):

Code Review±£Ö¤¿ª·¢ÖÊÁ¿£¬Õû¸ö¹ý³ÌÓÐÕ¿ÉÑ£¬ÎÞÐè¹Ë¼°¡°Ãæ×Ó¡±£¬Äܹ»ÐÞÕýºÜ¶àƽʱ²»×¢Òâ»òÕßÃ÷Öª¹Ê·¸µÄС벡
Code Review¸ßЧ¹µÍ¨½»Á÷£¬²»Ðèµç»°ºÍÊÓÆµ»áÒ飬Èñ±¾©ÉîÛÚÁ½µØµÄͬÊÂÃÇÒ»ÆðÐͬ¹¤×÷
Code Review°ïÖú֪ʶ´«µÝ£¬ÍŶÓÄÚϸÁ£¶ÈµÄ֪ʶ·ÖÏí£¬ ´ó¼ÒÒ»ÆðÖðÐеĵãÆÀ´úÂë±ÈÓü¼Êõ½»Á÷»áÒÔ¼°KMͶ¸å¸üϸÖÂ
Code Review±£Ö¤´úÂëµÄ¿É³ÖÐøÊ¹Ó㬴úÂë·ç¸ñ²»Ò»Öµ¼ÖÂÒ»¸öϵͳÿ´ÎÒÆ½»¸ºÔðÈ˶¼±»ÖØÐ´Ò»´Î
Code ReviewºÍÃô½Ý¿ª·¢ÏàÈÝ£¬¶ø²»ÊÇÏà³â£¬Ãô½Ý²»ÊÇÆ¬Ãæ×·Çó·¢²¼´ÎÊý£¬¶øÊDZ£Ö¤ÖÊÁ¿µÄ·¢²¼
CodeReview ÊÇÒ»ÖÖÉç½»µÄ;¾¶£¬ ¹ÄÀøÐ¡×é³ÉÔ±Ö®¼ä¶à×ö¼¼Êõ½»Á÷
CodeReview ¶ÔÐÂÈ˵ijɳ¤¼«ÆäÓÐÀû¡£ ºÜ¶àÐÂÈ˵ÚÒ»´Î×ö codereview
µÄʱºò¸Ð¾õ¶¼ÊDzҲ»È̶㬠±»ÅÄÔÎÁË£¬ ÎÒ¼û¹ýµÄ×î²ÒµÄ issue ±»ÒªÇóÐÞ¸ÄÁË20¶à´ÎÖ®ºó²Å±»ÔÊÐíÌá½»¡£È»¶øÕâÖÖ·½Ê½¶ÔÐÂÈ˵ijɳ¤·Ç³£¸ßЧ£¬Ò»¸öcoding
ÄÜÁ¦²»´íµÄ¹¤³Ìʦ£¬ ¼¸¸ö codereview issue Ö®ºó£¬ ºÜ¿ì¾ÍÄÜд³öºÏ¸ñµÄ´úÂë¡£
CodeReview Ôö¼ÓÍŶÓÄÚ´úÂëµÄ¿Éά»¤ÐÔ, ͬһ·Ý´úÂëÖÁÉÙ»áÓÐÁ½¸öÈËÊìϤ¡ª¡ª´úÂëµÄ×÷ÕߺÍÉóÔÄÕß¡£
ÈçºÎ½¨ÉèÒ»¸öÍÅ¶ÓµÄ code review ÎÄ»¯£¬ ¸úËæ Google
µÄ½Å²½£¬ Ò²ÓÐһЩ¾ßÌåµÄÒâ¼û£º
ÐèÒªÅàÑøºÏ¸ñµÄreviewer¡£ ½¨Á¢¸÷ÖÖ±à³ÌÓïÑÔµÄreadabilityÈÏÖ¤»úÖÆ£¬´ÓÒ»×é¡°ÖÖ×Ó¡±reviewer¿ªÊ¼£¬Èøü¶àͬÊ»ñµÃÈÏÖ¤³ÉΪºÏ¸ñµÄreviewers
ÐèҪϸ»¯ºÍ¹«¿ª¸÷ÖÖÓïÑÔµÄcode style¡£ ÆÀ×¢ÖпÉÒÔ¸ø³ö½¨ÒéµÄ³ö´¦µÄURL£¬Ê¹µÃ±£³Ö´úÂë·ç¸ñºÍ¿Éά»¤ÐÔÂ䵽ʵ´¦
ÐèÒª½¨Á¢Code Lab»úÖÆ¡£ °ïÖú¹¤³ÌʦÃÇÈëÃÅ¿ª·¢Á÷³ÌºÍ¹æ·¶
ÐèÒª½¨Á¢change approval»úÖÆ¡£ ¹ÄÀø×éÄÚ¸ü¶à¹¤³Ìʦ¸Ä½ø´úÂ루Ãô½Ý£©£¬µ«ÊÇÐÞ¸ÄÔÚÌύǰ³ýÁ˱ØÐëͨ¹ýreview£¬»¹ÐèÒªÏà¹ØÔðÈÎÈ˵Äapproval£»ÔÚ¼ÓËÙ¿ª·¢¹ö¶¯µÄͬʱ£¬±£Ö¤È¨Ôð·ÖÃ÷
Òýµ¼ÇáÁ¿ review¡£ÎÒÃǶ¼¾Àú¹ýÓÐЩ¹¤³Ìʦ·¢Ò»¸ö change
issue µÄʱºò£¬ ¼¸Ê®¸öÎļþÒ»²¢·¢³öÀ´£¬ Ò»¸ö issue ¿ÉÄÜÊÇÀÛ»ýÒ»ÖܵÄÐ޸ģ¬ reviewer
¿´µ½ÕâÖÖ issue ¼¸ºõ¶¼ÊDZÀÀ£µÄ£¬²»¿ÉÄܱ£Ö¤ review ÖÊÁ¿¡£ ËùÒÔºÃµÄ issue Ó¦¸ÃÊÇÇáÁ¿µÄ£¬
´óµÄ issue Ó¦¸Ã²ð·ÖΪСµÄ issue ·¢ËÍ¡£ÏÂͼÊÇ Cisco ¹«Ë¾µÄcodereview
±¨¸æÖÐÕª³öµÄ£¬ Èç¹ûÒ»¸ö issue µÄÐ޸ĴúÂëÐÐÊý³¬¹ý 400£¬ »ù±¾ÉÏ reviewer ÊDz»¿ÉÄÜÈÏÕæ
review °ïÄãÕÒ³ö bug µÄ ¡£

Ã÷È·issue ÄÜ·ñÌá½»Êǹ¤³Ìʦ×Ô¼ºµÄÔðÈΡ£¿ª·¢ÈËÔ±ÓÐʱºò±§Ô¹±ðÈË
review µÃÂý£¬ ÍÏÑÓʱ¼ä¡£ ÎÒÃÇС×éÄÚ²¿Í¨³£Ã÷È·Ö¸³ö£ºÒ»¸ö issue ÄÜ·ñÌá½»ÊÇ¿ª·¢ÈËÔ±×Ô¼ºµÄÔðÈΡ£
¿ª·¢ÈËÔ±×Ô¼ºÒª»ý¼«Íƶ¯ºÏ×÷ÈËÔ±°ïæ review issue£¬ ÍÆ¶¯ issue ±»Í¨¹ý²¢¼°Ê±Ìá½»¡£
7.½áÓï
ѧÊõ½çµÄËùÓиßÖÊÁ¿ÂÛÎͼÊÇ peer review Ö®ºó²ÅÓпÉÄÜ·¢±íµÄ¡£
д¹ý paper µÄ˶ʿ²©Ê¿¶¼ÓÐÒ»¸öÌå»á£¬ ½Óµ½µÄ¸÷ÖÖ review Òâ¼ûÓÐʱºòÁîÄã·Ç³£µÄÍ´¿à£¬ È»¶øÎÞÂÛÊÇÄã¾Ü¾øÁË
reviewer µÄÒâ¼û£¬»¹ÊǽÓÊÜÒâ¼ûÐÞ¸ÄÁËÎÄÕ£¬ Äã¶¼»á¾ÀúÒ»¸öÈÏÕæË¼¿¼µÄ¹ý³ÌÈ¥ÌáÉýÄãÎÄÕµÄÖÊÁ¿¡£
¸ßÖÊÁ¿µÄÂÛÎÄÊÇ¿ÆÑÐÈËÔ±Ñϸñ review ³öÀ´µÄ£¬ ÎÒÏàПßÖÊÁ¿µÄ code Ò²¿ÉÒÔͨ¹ý¹¤³ÌʦµÄ review
²úÉú¡£ °ÑCodeReview ´òÔì³ÉÍŶӵÄϰ¹ß£¬¶øÎÒÃÇÖ𽥻ᷢÏÖÕâÖÖϰ¹ßËùÊͷųöÀ´µÄÕýÄÜÁ¿¡£ Ï£ÍûÓÐÒ»Ìì,
ÎÒÃÇÒ²ÄÜ×öµ½£º
At Tencent, no code, for any product,
for any project, gets checked in until it gets a positive
review¡£
|