ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>棒球比分直播雪缘园:BlogJava-庄周梦蝶-随笔分类 - 棒球比分大小怎么算|ÍøÕ¾//www.355548.live/killme2008/category/30223.html生活、程序、未æ?/description>zh-cnSun, 22 May 2011 03:33:07 GMTSun, 22 May 2011 03:33:07 GMT60做基¼‹€äº§å“çš„体ä¼?/title><link>//www.355548.live/killme2008/archive/2011/05/22/350752.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Sun, 22 May 2011 02:30:00 GMT</pubDate><guid>//www.355548.live/killme2008/archive/2011/05/22/350752.html</guid><wfw:comment>//www.355548.live/killme2008/comments/350752.html</wfw:comment><comments>//www.355548.live/killme2008/archive/2011/05/22/350752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/killme2008/comments/commentRss/350752.html</wfw:commentRss><trackback:ping>//www.355548.live/killme2008/services/trackbacks/350752.html</trackback:ping><description><![CDATA[<br />      一个公司大了,æ€ÀLœ‰éƒ¨åˆ†äºø™¦åŽÕdšä¸€äº›é€šç”¨çš„东西给大家用,我这里说的基¼‹€äº§å“ž®±æ˜¯˜q™ç±»é€šç”¨æ€§è´¨çš„东西,不一定高¿U‘技åQŒä½†æ˜¯ä¸€å®šå¾ˆå¤šäh依赖你的东西来完成各¿Uå„æ ïLš„功能。做˜q™æ ·çš„东西,有些体会可以说下ã€?br /><br />    首先åQŒèƒ½é›†ä¸­å­˜å‚¨çš„,ž®×ƒ¸è¦åˆ†å¸ƒå­˜å‚¨ï¼Œæ•°æ®é›†ä¸­å­˜å‚¨æœ‰å•ç‚¹çš„危险åQŒä½†æ˜¯æ¯”之分布式存储带来的复杂度不可同日而语。况且集中式的存储也可以利用各种机制做备份,所谓单炚w£Žé™©è¿œæ²¡æœ‰æƒŒ™±¡ä¸­é‚£ä¹ˆå¤§ã€?br /><br />   其次åQŒèƒ½åˆ©ç”¨å¼€æºæ¡†æž¶çš„åQŒå°±ä¸è¦é‡å¤é€ è½®å­ã€‚程序员都喜‹Æ¢é€ è½®å­ï¼Œä½†æ˜¯é€ è½®å­çš„周期长,òq¶ä¸”不一定造的更好。在å¼ø™°ƒå¼€å‘效率的互联¾|‘时代,如果能直接利用现有框架组装出你想要的东西åQŒè¿…速占领市场,比你造的高性能、高可用、高¿U‘技的轮子更实用。这个跟做新产品开发有点类ä¼û|¼Œ˜q…速组装,高效开发,然后再想办法改进ã€?br /><br />   ½W¬ä¸‰åQŒè¦æ–‡æœ¬åQŒä¸è¦äºŒ˜q›åˆ¶ã€‚协议要文本化,配置要文本化。不要担心性能åQŒåœ¨å¯è§çš„时间里åQŒä½ åŸºæœ¬ä¸ä¼šå› äؓ文本化的问题遇到性能瓉™¢ˆã€?br /><br />   ½W¬å››åQŒè¦é€æ˜ŽåQŒä¸è¦é»‘盒。基¼‹€äº§å“ž®¤å…¶éœ€è¦å¯¹ç”¨æˆ·é€æ˜ŽåQŒä½ çš„用户不是小白用æˆøP¼Œä»–们也是½E‹åºå‘˜ï¼Œè€Œç¨‹åºå‘˜å¤©ç”Ÿå¯šw»‘盒性质的东西充满厌æÓž¼Œä»–们æ€ÀLƒ³çŸ¥é“你的东西背后在做什么,˜q™å¯¹äºŽæŸ¥æ‰ùN—®é¢˜åˆ†æžé—®é¢˜ä¹Ÿå¾ˆé‡è¦ã€‚怎么做到透明呢?设计åQŒç»Ÿè®¡ï¼Œç›‘控åQŒæ—¥å¿—ç­‰½{‰ã€?br /><br />   ½W¬äº”åQŒè¦æ‹¥æŠ±æ ‡å‡†åQŒä¸è¦å¦æžä¸€å¥—。已¾læœ‰äº†ä¹…¾lè€ƒéªŒçš„HTTP协议åQŒä½ ž®×ƒ¸è¦å†æžä¸ªSTTPåQŒæœ‰äº†AMQP协议åQŒä½ ž®×ƒ¸è¦å†æžä¸ªBMQP。被òq¿æ³›è®¤å¯çš„标准是一些业界的™å¶å°–专家制定出来的,他们早就ž®†ä½ æ²¡æœ‰è€ƒè™‘到的问题都考虑˜q›åŽ»äº†ã€‚你自己搞的那一套,随着旉™—´æŽ¨ç§»ä½ ä¼šå‘现跟业界标准越来越像,因äؓ面对的问题是一æ ïLš„。ä‹É用标准的额外好处是,你有一大堆可用的代码或者类库可以直接ä‹É用,特别是在面对跨语­a€çš„时候ã€?br /><br />    ½W¬å…­åQŒèƒ½Share nothingåQŒå°±ä¸è¦æžçŠ¶æ€å¤åˆ¶ã€‚无状态的东西是最可爱的,天然的无副作用。水òqÏx‰©å±•ä¸è¦å¤ªå®ÒŽ˜“ã€?br /><br />    ½W¬ä¸ƒåQŒè¦ž®†ä½ çš„ç³»¾lŸåšçš„越ä¸?#8220;重要”­‘Šå¥½åQŒå¦‚果太多的产品依赖你的¾pȝ»ŸåQŒé‚£ä¹ˆå½“ä½ çš„¾pȝ»Ÿæ•…障的时候,整个应用ž®±å®Œè›‹äº†ã€‚我们不要担˜q™ä¸ªè´£ä“QåQŒæˆ‘们要ž®†ç³»¾lŸåšçš„越来越“不重è¦?#8221;åQŒåˆ«äºÞZ¸‡ä¸€æ²¡äº†ä½ ä¹Ÿèƒ½é‡å¯ï¼Œä¹Ÿèƒ½ä¸€å®šæ—¶é—´å†…支撑正常的工作ã€?br /><br />    ½W¬å…«åQŒè¦ä¸“注眼前åQŒé€‚当å…Ïx³¨æœªæ¥ã€‚有˜qœè§æ˜¯å¥½äº‹ï¼Œä½†æ˜¯å¤ªå¤š˜qœè§ž®±å®¹æ˜“好高骛˜qœã€‚äؓ很小可能性设计的东西åQŒæ²¡æœ‰æœºä¼šç»åŽ†å®žé™…检验,当故障真的发生的时候,你也不可能完全信赖它。更好的办法是将¾pȝ»Ÿè®¾è®¡å¾—可介入åQŒå¯åœ¨ç´§æ€¥æƒ…况下人工åŽÖM»‹å…¥å¤„理,可介入是不够的,˜q˜è¦å®ÒŽ˜“介入ã€?br /><br />    ½W¬ä¹åQŒä¸è¦å¯¹ç”¨æˆ·æœ‰å‡è®¾ï¼Œå‡è®¾ä½ çš„用户都是smart programmeråQŒå‡è®¾ä½ çš„用户不需要位˜qç®—åQŒå‡è®¾ä½ çš„用戯‚¦åŒæ­¥ä¸è¦å¼‚步。除非你对这个领域非常熟悉åƈ实际使用˜q‡ç±»ä¼¼çš„东西åQŒå¦åˆ™è¿˜æ˜¯ä¸è¦å‡è®¾ã€?br /><br />    ½W¬ååQŒå’³å’»I¼Œä¼ég¹Žæ²¡æœ‰½W¬åäº†ï¼Œä¸€å¤§æ—©æ†‹äº†˜q™ä¹ˆ½‹‡æ— å¤´æ— è„‘çš„BlogåQŒå¤§ä¼™å°†ž®Þqœ‹çœ‹ã€?br /><br /><br /><br /><br /><br /><img src ="//www.355548.live/killme2008/aggbug/350752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/killme2008/" target="_blank">dennis</a> 2011-05-22 10:30 <a href="//www.355548.live/killme2008/archive/2011/05/22/350752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高质量èÊYä»Óž¼Œä»Žç‚¹ç‚ÒŽ»´æ»´åšèµ?/title><link>//www.355548.live/killme2008/archive/2010/12/30/341964.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Thu, 30 Dec 2010 03:01:00 GMT</pubDate><guid>//www.355548.live/killme2008/archive/2010/12/30/341964.html</guid><wfw:comment>//www.355548.live/killme2008/comments/341964.html</wfw:comment><comments>//www.355548.live/killme2008/archive/2010/12/30/341964.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>//www.355548.live/killme2008/comments/commentRss/341964.html</wfw:commentRss><trackback:ping>//www.355548.live/killme2008/services/trackbacks/341964.html</trackback:ping><description><![CDATA[<br />     写这½‹‡æ–‡ç« çš„æƒÏx³•äº§ç”Ÿåœ¨æ˜¨å¤©æ™šä¸Šè¯»ã€Šé¢å‘对象分析与设计》的时候,我渐渐发现我们这个小¾l„不知不觉地贯彻了很多非常有价值的实践¾léªŒåQŒè¿™äº›ç‚¹ç‚ÒŽ»´æ»´éƒ½å¯ÒŽˆ‘们的最¾lˆçš„产品质量产生了或大或ž®çš„影响åQŒä¿è¯æˆ‘们的¾pȝ»Ÿä¸ä¼šå‡ºçŽ°é‡å¤§çš„故障。我æƒÏxœ‰å¿…要ž®†è¿™äº?#8220;隐性知è¯?#8221;½Eå¾®æ€È»“一下,以供参考和记录ã€?br /> <br />    从过½E‹çš„˜qžç®‹å…‰è°±æ¥çœ‹åQŒæˆ‘们大概处于中间位¾|®åå·¦çš„位置åQŒæ›´åå‘一个轻量çñ”团队的敏捯‚¿‡½E‹ï¼Œä½†æ˜¯ä¹ŸåŒ…含计划驱动过½E‹ä¸­çš„因素。我们的ž®ç»„是自½Ž¡ç†çš„,没有专门的QA和SAåQŒæˆ‘们自己去惛_‡ºæœ€å¥½çš„工作æ–ÒŽ³•åQŒä½†æ˜¯åœ¨æ‰§è¡Œä¸­æˆ‘们的计划˜q˜æ˜¯ç›¸å¯¹¼‹®å®šçš„,每个季度做什么都会有一个比较明¼‹®çš„计划和里½E‹ç¢‘åQŒåƈ且对问题领域都相对熟悉;我们的过½E‹æ˜¯˜q­ä»£å¼ï¼Œä¸€èˆ¬ä¸€ä¸ªå­£åº¦è‡³ž®‘会交付一个稳定可执行的新版本åQŒæˆ‘们在文档上做的不是特别好åQŒå¾ˆå¤šéƒ½ä¾èµ–于团队成员之间的“隐性知è¯?#8221;åQ›åŒæ—¶æˆ‘们对问题的改˜q›åŸºæœ¬è¿˜æ˜¯æœ‰ä¸€ä¸ªæµ½E‹å’Œæœºåˆ¶åQŒä¼šæŒç®‹çš„è·Ÿítªé—®é¢˜åƈ改进ã€?br /> <br />    下面分阶ŒD‰|€È»“下我们的一些实è·ëŠ»éªŒã€?br /> <br /> 一、分析和设计阶段<br /> <br /> 1、在˜q™ä¸ªé˜¶æ®µåQŒæˆ‘们会明确准备做什么,界定问题的边界,对功能进行一个取舍。一般在一个版本完成之后会马上开始这个过½E‹ã€‚大安™ƒ½æƒ³ä¸€æƒÏxŽ¥ä¸‹æ¥åšä»€ä¹ˆï¼Œ¾lè¿‡å‡ è½®PK后确å®?strong>重要紧急的事情优先做,定义下一个版本的功能列表</strong>ã€?br /> <br /> 2、功能列表出来之后,我们会针å¯ÒŽ¯ä¸ªåŠŸèƒ½æå‡ºå„¿Uæ–¹æ¡ˆåšæ¯”较åQŒåœ¨æ­¤æœŸé—ß_¼Œæˆ‘们ä¼?strong>邀è¯äh›´å¤§å›¢é˜ŸèŒƒå›´å†…的专家参与方案和设计的评å®?/strong>åQŒå‰”除不切实际以及明显有¾~ºé™·çš„方案,针对一些风险点提出改进å»ø™®®å’Œé˜²èŒƒæŽªæ–½ã€?br /> <br /> 3、在设计æ–ÒŽ¡ˆå‡ºæ¥ä¹‹åŽåQŒæˆ‘们会分配功能的开发ä“Q务,æ ÒŽ®æ¯ä¸ªå¼€å‘äh员熟悉的领域åQ?strong>自主领取或者被动分配ä“QåŠ?/strong>。这个过½E‹ä¸æ˜¯ä¸€æˆä¸å˜çš„åQŒè€ƒè™‘到团队内部知识交‹¹çš„必要性,也可能让不熟悉某个领域的人去做他不熟悉的事情ã€?br /> <br /> 二、构造阶ŒD?br /> <br /> 1、整个系¾lŸå·²¾læœ‰ä¸€ä¸?strong>关键的抽象机åˆ?/strong>åQŒé’ˆå¯ÒŽˆ‘们的服务器有一个核心的pipeline机制åQŒé’ˆå¯ÒŽˆ‘们的客户端,有一个核心的发送消息流½E‹ã€‚将所有的功能模块¾l„织在这个关键机制周å›ß_¼Œå½¢æˆä¸€ä¸ªå¼ºæœ‰åŠ›çš„整体ã€?br /> <br /> 2、开发完成不<strong class="dntg">仅仅意味着功能代码的完成,˜q˜åŒ…括测试代ç ?/strong>åQšå•å…ƒæµ‹è¯•å’Œé›†æˆ‹¹‹è¯•ã€‚如果你没办法做到全面的覆盖åQŒé‚£ž®Þp¦æ±‚å¿…™å»è¦†ç›–运行的关键路径和极端场景ã€?br /> <br /> 3、单元测试我们ä‹É用JUnitåQŒé€‚当使用Mock可以½Ž€åŒ–测试。但是Mock对象如果太多åQŒä¹Ÿè®æ€¼šå¤±åŽ»‹¹‹è¯•çš„ä­hå€û|¼Œ˜q™é‡Œæœ‰ä¸€ä¸ªæƒè¡¡ã€?br /> <br /> 4、在整个构造过½E‹ä¸­åQŒæˆ‘们诏å½ÀL¯æ—¥æž„建、持¾l­é›†æˆçš„原则。ä‹É用hudson做持¾l­é›†æˆï¼Œ<strong class="dntg">时刻å…Ïx³¨‹¹‹è¯•çŠ¶å†µ</strong>åQŒæœ‰é—®é¢˜åŠæ—¶åé¦ˆ¾l™å¼€å‘者ã€?br /> <br /> 5、有一个功能强大的集成‹¹‹è¯•æ¡†æž¶åQŒæ¨¡æ‹Ÿå®žé™…环境做各种‹¹‹è¯•åQŒå®ƒçš„目的是ž®½é‡åœ¨æŽ¥˜q‘真实状况下åŽÀL‰§è¡Œç³»¾lŸåƈž®½æ—©æš´éœ²é—®é¢˜ã€?br /> <br /> 6、每个功能完成之后,立即发è“vreviewåQŒè¯·åŒäº‹å’Œä½ ä¸€èµ·å¤å®¡ä»£ç ã€‚复审代码的作用不仅是发现bugåQŒæ”¹è‰¯è®¾è®¡ï¼Œä¹Ÿæ˜¯ä¸€ä¸ªçŸ¥è¯†äº¤‹¹çš„最佳途径。我们经常能通过<strong class="dntg">代码审查</strong>发现一些设计上的缺é™øP¼Œä»¥åŠåŠŸèƒ½å®žçŽ°ä¸Šçš„BUG。我们团队应该说是非常看重代码审查的作用ã€?br /> <br /> 7ã€?strong>使用findbugs和clover½{‰å·¥å…?/strong>åQŒåˆ†æžä»£ç è´¨é‡åƈ改进ã€?br /> <br /> 8、在发布之前åQŒåšä¸€‹Æ?strong>集中的代码review</strong>åQŒæ¯ä¸ªäh介绍下自å·Þqš„功能实现代码和设计,一般我们会甌™¯·ä¸€ä¸ªä¼šè®®å®¤å’ŒæŠ•å½×ƒÈAåQŒåƈ邀请团队之外的人加入reviewã€?br /> <br /> 9、在发布之前åQŒæœ‰ä¸€ä¸ªç³»¾lŸçš„<strong class="dntg">压测‹¹ç¨‹</strong>åQŒé’ˆå¯ÒŽ¯ä¸ªç‰ˆæœ¬æ›´æ–°åŽ‹‹¹‹æ–¹æ¡ˆï¼Œòq‰™¢„留一åˆîC¸¤å‘¨çš„æ—‰™—´åšæ€§èƒ½åŽ‹æµ‹ã€‚压‹¹‹ä¸ä»…能ž®½æ—©æš´éœ²æ€§èƒ½éšæ‚£åQŒè¿˜å¯ä»¥å‘现¾pȝ»Ÿåœ¨ç‰¹ŒDŠæƒ…况下的一些BUG。压‹¹‹é™¤äº†å…³æ³¨ç³»¾lŸçš„吞吐量、GC情况之外åQŒè¿˜åº”该å…Ïx³¨¼‹¬äšg的性能指标ã€?br /> <br /> 三、发布和æ€È»“<br /> 1、发布之前,最好让使用我们¾pȝ»Ÿçš„用户ä‹É用新版本做一ä¸?strong>回归‹¹‹è¯•</strong>åQŒä¸€æ–šw¢æ˜¯æµ‹è¯•å…¼å®ÒŽ€§ï¼Œä¸€æ–šw¢ä¹Ÿå¯ä»¥åŠæ—©å‘现BUGã€?br /> <br /> 2、我们的发布‹¹ç¨‹åQšçº¿ä¸‹ã€beta、线上。每个阶ŒDµé€šå¸¸éƒ½æŒ¾l­ä¸€åˆîC¸¤å‘¨ï¼Œæ‰ä¼š˜q›è¡ŒåˆîC¸‹ä¸€é˜¶æ®µã€‚åƈ且是从相对不重要的系¾lŸï¼Œåˆ°å…³é”®ç³»¾lŸçš„™åºåº˜q›è¡Œå‘布ã€?br /> <br /> 3、发布之后,通过日志、运行时监控、用户反馈等方式攉™›†¾pȝ»Ÿ˜qè¡ŒçŠ¶å†µåQŒå‘现BUGåQŒä¿®æ­£BUGåQŒè¡¥å……测试,‹¹‹è¯•é€šè¿‡åQŒé‡æ–°å‘布ã€?br /> <br /> 4、每个版本发布后åQŒéœ€è¦æ€È»“下本‹Æ¡å‘布过½E‹ä¸­é‡åˆ°çš„所有BUG以及¾léªŒæ•™è®­åQŒåƈ提出可能的改˜q›å¾è®®ã€?br /> <br /> 5、需要一个跟ítªçº¿ä¸Šé—®é¢˜çš„BUG跟踪¾pȝ»ŸåQŒå¯ä»¥ç”¨JIRA之类的trace软äšg。跟ítªä¸ä»…是记录åQŒæœ€å¥½åˆ—å‡ø™§£å†³çš„æ—‰™—´ç‚¹ï¼Œåœ¨å“ªä¸ªç‰ˆæœ¬ç¡®å®šè§£å†»I¼Œç”šè‡³¼‹®å®šäº¤ç»™è°åŽ»è§£å†³åQŒåƈ持箋跟进ã€?br /> <br /><img src ="//www.355548.live/killme2008/aggbug/341964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/killme2008/" target="_blank">dennis</a> 2010-12-30 11:01 <a href="//www.355548.live/killme2008/archive/2010/12/30/341964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代码自我审查的一些体ä¼?/title><link>//www.355548.live/killme2008/archive/2010/05/18/321219.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Mon, 17 May 2010 16:28:00 GMT</pubDate><guid>//www.355548.live/killme2008/archive/2010/05/18/321219.html</guid><wfw:comment>//www.355548.live/killme2008/comments/321219.html</wfw:comment><comments>//www.355548.live/killme2008/archive/2010/05/18/321219.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>//www.355548.live/killme2008/comments/commentRss/321219.html</wfw:commentRss><trackback:ping>//www.355548.live/killme2008/services/trackbacks/321219.html</trackback:ping><description><![CDATA[<br /> 1、首先态度需要端正,做代码的自我审查òq¶ä¸æ˜¯å¦å®šè‡ªå·±ï¼Œè€Œæ˜¯¾l™è‡ªå·±å°†å·¥ä½œåšå¾—更好的一‹Æ¡æœºä¼šã€‚在审查˜q‡ç¨‹ä¸­è¦ž®½é‡ž®†è‡ªå·×ƒ½œä¸ÞZ¸€ä¸ªæ—è§‚者的心态去审查自己的代码,ž®½ç®¡˜q™æ¯”较困难ã€?br /> <br /> 2、代码审查离不开重构åQŒåœ¨å®¡æŸ¥˜q‡ç¨‹ä¸­å‘çŽîC“Q何坏味道都请使用重构åŽÀL”¹å–„,发现¾~ÞZ¹‹¹‹è¯•çš„地方要及时补充‹¹‹è¯•åQŒä¸è¦è®©BUG遗漏ã€?br /> <br /> 3、代码的自我审查可能不是­‘Šæ—©­‘Šå¥½åQŒéš”一ŒD‰|—¶é—´ä¹‹åŽå›žåŽÈœ‹è‡ªå·±å†™çš„东西åQŒå¯¹ä¸€äº›è®¾è®¡ä¸Šçš„选择能有更客观的评ä­håQŒåœ¨å®¡æŸ¥çš„过½E‹ä¸­å¯èƒ½éœ€è¦é‡æ–°åŽ»ç†è§£ä»£ç åQŒåœ¨æ­¤è¿‡½E‹ä¸­å¯ä»¥‹‚€æŸ¥è‡ªå·×ƒ»£ç çš„可读性,òq¶æ€è€ƒå¦‚何改善可è¯ÀL€§ï¼Œ<strong class="dntg">切记代码首先是给äºø™¯»çš?/strong>ã€?br /> <br /> 4、审查过½E‹ä¸­éœ€è¦è®°å½•ä¸‹ä¸€äº›çŠ¯ä¸‹çš„错误åQŒä»¥åŠå½“æ—¶äؓ什么会犯下˜q™æ ·çš„错误,建立自己的bug数据库,òq¶æ—¶å¸¸reviewåQŒåœ¨ä»¥åŽçš„工作中避免同样的错误ã€?br /> <br /> 5、代码的自我审查应该是一个持¾l­æ€§çš„˜q‡ç¨‹åQŒè€Œéžç‰¹å®šæ—‰™—´çš„特定行动,时常审查自己的代码,不仅能èöL析自å·Þqš„得失åQŒè¿˜èƒ½å¤Ÿ˜q›ä¸€æ­¥æé«˜è‡ªå·±åœ¨æœªæ¥å·¥ä½œä¸­çš„设计能力和预见能力ã€?br /> <br /> 6、代码的自我审查跟团队成员之间的ç›æ€º’reviewòq¶ä¸çŸ›ç›¾åQŒåœ¨ç›æ€º’review之前做一个自我审查,有助于提高review的效率,包括可读性的提高和一些一般错误的避免ã€?br /> <br /> 7、代码自我审查的一些常见注意点åQ?br /> åQ?åQ‰è‡ªè®¤äؓ¾lä¸ä¼šå‡ºé”™ï¼Œòq¶ä¸”从来没有审查˜q‡çš„代码ã€?br /> åQ?åQ‰æ³¨æ„else语句åQŒif条äšg下的子语句通常可能是个正常的流½E‹ï¼Œè€Œelse意味着异常的情冉|ˆ–者特ŒDŠçš„场景åQŒä½ å¯èƒ½ç‰¹åˆ«æ³¨æ„æ€Žä¹ˆå¤„理正常的情况,却忽略了else子句的实现细节,如该释放的锁没释放,该递减的计数没有递减åQŒè¯¥èµ‹äºˆç‰ÒŽ®Šå€¼å´æ²¡æœ‰èµ‹äºˆ½{‰ç­‰ã€?br /> åQ?åQ‰æ³¨æ„ç©ºçš„方法,没有æ–ÒŽ³•ä½“çš„æ–ÒŽ³•åQŒæ˜¯ä¸éœ€è¦å®žçŽŽÍ¼Ÿ˜q˜æ˜¯å¿˜äº†å®žçŽ°åQ?br /> åQ?åQ‰æ³¨æ„switch语句åQŒæœ‰æ²¡æœ‰å¿˜äº†breakåQŸè¿™¿Ué”™è¯¯é€šè¿‡findbugs之类的静态代码检查工具都能避免ã€?br /> åQ?åQ‰æ³¨æ„å¤§å—的注释åQŒäؓ什么这么多注释åQŸæ˜¯ä»£ç å†™çš„很糟¾p•ï¼Ÿ˜q˜æ˜¯é—留的注释?遗留的注释会误导人,要及时删除ã€?br /> åQ?åQ‰æ³¨æ„ä¸€äº›çœ‹èµäh¥“不合常理”的代码,˜q™æ ·çš„代码很多都是基于所谓性能考虑而优化过的代码,˜q™æ ·çš„优化是否还需要?是否能去除这äº?#8220;奇æ€?#8221;的代码也能实现正常的需求?<br /> åQ?åQ‰å¯¹å®¢æˆ·ç«¯çš„使用有假讄¡š„代码åQŒå‡è®„¡”¨æˆ·åªä¼šè¿™ä¹ˆç”¨åQŒå‡è®„¡”¨æˆ·åªä¼šç”¨åˆ°è¿”回对象中的某些属性,其他属性一定不会用刎ͼŸä¸è¦å¯¹å®¢æˆ·ä»£ç åšå‡è®¾åQè¿™ä¸ªå®¢æˆ·ä»£ç åŒ…括外部用户和调用˜q™ä¸ªæ¨¡å—的内部代码ã€?br /> åQ?åQ‰æ ‡æ³¨äº†FIXME、TODO之类task标签的代码,是否忘了修复BUGåQŒå®žçŽ°åŠŸèƒ½ï¼Ÿ<br /> åQ?åQ‰ä“Q何超˜q?5行以上的æ–ÒŽ³•åQŒè¿™äº›æ–¹æ³•æ˜¯å¦èƒ½æ‹†åˆ†æˆæ›´¾l†ç²’度的æ–ÒŽ³•åQŒåƈ保持在同一个抽象层‹Æ¡ä¸ŠåQ?br /> åQ?åQ‰ä“Q何在代码中出现的帔R‡å€û|¼Œæ˜¯å¦åº”该提取出来成äؓ单独的常量,帔R‡çš„默认å€ÆD®¾¾|®æ˜¯å¦åˆç†ï¼Ÿ<br /> åQ?0) ä»ÖM½•æŒæœ‰å®¹å™¨çš„代码,提供了放入容器的æ–ÒŽ³•åQŒæ˜¯å¦æä¾›äº†ä»Žå®¹å™¨ä¸­¿U»é™¤å¯¹è±¡çš„方法?¼‹®ä¿æ²¡æœ‰å†…存泄漏的隐患ã€?br /> åQ?1åQ‰é‡æž„中提到的其他坏味道åQŒåˆ«æ”¾è¿‡å®ƒä»¬åQŒä½†æ˜¯ä¹Ÿä¸è¦˜q½æ±‚完美åQŒOO不是圣杯åQŒå¦‚果能½Ž€å•çš„实现一个算法,你不要引å…?个对象和4个接口ã€?br /> åQ?2åQ‰åœ¨review最后能列出一张清单,开列下该项目面临的风险点,òq¶æå‡ø™§£å†›_Šžæ³•ï¼Œç„¶åŽæŒ‰ç…§˜q™å¼ æ¸…单去review关键代码åQŒç€é‡æ£€æŸ¥å¼‚常情况下的处理。风险点的reviewåQŒæˆ‘å»ø™®®å¯ä»¥æ”‘Öœ¨åŽé¢åQŒåœ¨ä¸€èˆ¬æ€§é”™è¯¯è§£å†³ä¹‹åŽè¿›è¡Œï¼Œæ­¤æ—¶ä½ å¯¹ä»£ç ä¹Ÿå°†å†åº¦å˜çš„熟悉ã€?br /><img src ="//www.355548.live/killme2008/aggbug/321219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/killme2008/" target="_blank">dennis</a> 2010-05-18 00:28 <a href="//www.355548.live/killme2008/archive/2010/05/18/321219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从NT开发过½E‹ä¸­çœ‹åˆ°çš„东è¥?/title><link>//www.355548.live/killme2008/archive/2009/08/13/290969.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Thu, 13 Aug 2009 04:44:00 GMT</pubDate><guid>//www.355548.live/killme2008/archive/2009/08/13/290969.html</guid><wfw:comment>//www.355548.live/killme2008/comments/290969.html</wfw:comment><comments>//www.355548.live/killme2008/archive/2009/08/13/290969.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>//www.355548.live/killme2008/comments/commentRss/290969.html</wfw:commentRss><trackback:ping>//www.355548.live/killme2008/services/trackbacks/290969.html</trackback:ping><description><![CDATA[    åœ¨è¿™é‡Œè¦æŽ¨èä¸‹ã€Šè§‚æ­?å¾®èÊY创徏NT和未来的夺命狂奔》,非常¾_‘Ö½©åQŒè®²˜qîCº†windows NT开发过½E‹ä¸­çš„äh和事。这不仅仅是故事书,也可以看做一本项目管理方面的指南åQŒå¯ä»¥çœ‹çœ‹è¿™ä¹ˆå·¨å¤§çš„™å¹ç›®åQˆå‡ ç™¾ä¸‡è¡Œä»£ç ï¼‰æ‰€é­é‡åˆ°çš„éšùN¢˜å’Œç—›æ¥šã€‚我更愿意将˜q™æœ¬ä¹¦å½“做《äh月神话》的故事版,同样是创建划时代的OSåQŒåŒæ äh˜¯½Ž¡ç†ä¼—多人参与的大型的项目,也同样遭遇了¿Uç§å›°æ‰°å’Œç—›è‹¦ï¼Œä»Žè¿™ä¸ªè§’度也可以看出åQŒäh¾cȝš„痛苦的相通的åQšï¼‰<br /> <br />    单纯从èÊY件构建的角度åŽÈœ‹˜q™æœ¬ä¹¦ï¼Œå¯ä»¥è¯´è¯´æˆ‘看到的东西,˜q™äº›æ˜¯æˆ‘今天早上走在上班路上的时候想的,咛_’³ã€?br /> <br /> 1、开发OS是烧é’Þqš„事情åQŒNT开发接˜q?òqß_¼Œæ¯å¹´çš„花è´ÒŽ®è¯´åœ¨5000万美刀åQŒé‚£å¯æ˜¯åœ?0òq´ä»£åˆæœŸåQŒæ¢½Ž—成现在更是天文数字。从另一个侧面也说明了linux¾pȝ»Ÿçš„伟大。开发一个这么烧é’Þqš„玩意åQŒå¦‚果没有管理层的强力支持,那么不是被砍掉,ž®±æ˜¯é­é‡‹¹äñ”的命˜qï¼Œòq¸è¿çš„是NT团队得到了盖茨的鼎力支持åQŒå¤§æ¦‚也只有他能˜q™ä¹ˆçƒ§é’±äº†ã€‚Dave Culter从DEC辞职的原因也是因为管理层砍掉了他的团队。盖茨另一个做法是不干涉NT团队的开发工作,他只提出目标和期望,然后ž®±å¶ž®”过来看看,不对不知道的东西指手画脚åQŒè¿™ç‚¹å¯ä¸å®¹æ˜“ã€?br /> <br /> 2、每日构建非帔R‡è¦ï¼ŒNT团队的构建实验室一开始是每周构徏åQŒåŽæ¥åšåˆîCº†æ¯æ—¥æž„徏。只有每日构建,持箋集成åQŒæ‰èƒ½å¸®ä½ æŽŒæŽ§äñ”品质量,及时发现潜在的问题。我们现在的™å¹ç›®ä½¿ç”¨äº†hudsonåQŒæ¯”CCå®ÒŽ˜“配置一点,效果˜q˜ä¸é”™ã€?br /> <br /> 3、测试极光™‡è¦ï¼Œä¸“业的测试团队对于大型项目来说尤光™‡è¦ã€‚除了测试äh员之外,开发äh员需要做自测åQŒéœ€è¦å¯¹è‡ªå·±check-in的代码负责,如果你签入的代码å¯ÆD‡´æž„徏å¤ÞpÓ|åQŒé‚£ä¹ˆDave culter可能冲破墙壁˜q›æ¥åQŒæ‹ç€æ¡Œå­å†²ä½ å’†å“®ã€‚对check in必须做严格控制和跟踪åQŒå¦‚果在™å¹ç›®çš„最后冲击阶ŒDµï¼Œé™¤äº†showstopper¾U§åˆ«çš„修正代码允许签入之外,其他的修攚wƒ½ä¸è¢«æŽ¥å—。开发者和‹¹‹è¯•äººå‘˜å¾ˆå®¹æ˜“存在对立,‹‚€è®¨è‡ªå·±ï¼Œæˆ‘对‹¹‹è¯•äººå‘˜ä¹Ÿå­˜åœ¨åè§å’ŒæŸç§½E‹åº¦ä¸Šçš„轻视和厌烦,如果从就事论事和都是ä¸ÞZ¸€ä¸ªç›®æ ‡åŠªåŠ›çš„角度来说åQŒæµ‹è¯•å’Œå¼€å‘åƈ不对立,两者是相辅相成åQŒç”šè‡³äºŽ‹¹‹è¯•äººå‘˜æ›´äؓ臛_…³é‡è¦ã€?br /> <br /> 4、在一个长期而复杂的™å¹ç›®ä¸­ï¼Œå¦‚何保持团队成员的士气也是个难事å„ѝ€‚èÊY件开发归根到底是的因素是人,而非工具或者其他,å…Ïx³¨äººï¼Œå…¶å®žž®±æ˜¯åœ¨å…³æ³¨ä½ çš„èÊY件。鼓励士气的常见做法ž®±æ˜¯è®‘Ö®šé‡Œç¨‹¼„‘,在这个里½E‹ç¢‘上发布一个重要版本,让大家看到希望,但是对于OS˜q™æ ·çš„巨型项目来è¯ß_¼Œé‡Œç¨‹¼„‘不是那么容易设定,˜q™ä»Žä¹¦ä¸­™å¹ç›®çš„不断åšg期可以看到。另外就是宽杄¡š„工作环境和假期,微èÊY的工作环境有目共睹,能做到每个员工独立一个办公室的国内企业还没有吧。国外的开发者似乎很会玩åQŒèµ›è½¦ã€æ»‘雪、空手道åQŒå…¶å®žä¸æ˜¯æˆ‘们不会玩åQŒæ˜¯æˆ‘们玩不èµøP¼Œå›½å†…的待遇和生活压力让你想玩也玩不è“vã€?br />    可是ž®Þq®—是再好的物质待遇åQŒå…¶å®žä¹Ÿæ¢ä¸æ¥ç¾Žå¥½ç”Ÿ‹z»ï¼Œä¹¦ä¸­å……斥着开发者对家庭和婚å§Èš„困惑和痛苦,ä¸ÞZº†NT,他们也失åŽÖMº†å¾ˆå¤šåQŒå¯¹å·¥ä½œ˜q‡åº¦æŠ•å…¥çš„后果就是失åŽÕdã^衡的家庭生活åQŒå†‹Æ¡éªŒè¯ä¸Šå¸æ˜¯å…¬åã^的,有得必有失,ž®Þqœ‹ä½ çœ‹é‡çš„是什么ã€?br /> <br /> 5、开发者的效率差异是惊人的åQŒåœ¨ã€Šäh月神话》里已经说明了这一点,开发者之间的效率差异可以辑ֈ°æƒŠähçš?0倍,在NT˜q™æ ·çš„团队里也再‹Æ¡éªŒè¯äº†˜q™ä¸€¾l“论ã€?br /> <br /> 6、投入越多的人力åQŒåƈ不能带来效率的提升,当NTFS文äšg¾pȝ»Ÿçš„进度拖慢的时候,微èÊY的经理们考虑æ·ÕdŠ äººæ‰‹åQŒä½†æ˜¯ç»˜q‡æ…Žé‡çš„考虑˜q˜æ˜¯æ²¡æœ‰åŠ ähåQŒå› ä¸ºæ–‡ä»¶ç³»¾lŸæ˜¯æŠ€æœ¯æ´»åQŒæ–°äººå¾ˆéšùN©¬ä¸ŠæŠ•å…¥å¼€å‘,而需要老手的带领和培训åQŒå¼•å…¥äº†æ›´å¤šçš„沟通成本和培训成本ã€?br /> <br /> 7、优¿U€çš„代码无法通过行数来衡量,软äšg某种½E‹åº¦ä¸Šè¿˜çœŸæ˜¯™ì”法的äñ”物ã€?br /> <br /> 8、NT的一个教训是åQŒåº”该及早设定你的性能目标åQŒåƈ在适当时候开始关注åƈ优化¾pȝ»Ÿã€‚NT团队后期的很大部分工作都是在优化¾pȝ»Ÿæ€§èƒ½åQŒåƈ¾~©å°ž®ºå¯¸ã€?br /> <br /> 9、设定Deadline常常是不靠谱的事情,对èÊY件开发的旉™—´ä¼°è®¡ä¹Ÿå¸¸å¸¸æ˜¯ä¸é è°Þqš„事情åQŒè¿™ä¸€ç‚¹ä»ŽNT的一‹Æ¡åˆä¸€‹Æ¡çš„延期可以看出。åšg期失望的不仅仅是客户åQŒä¹Ÿä¼šæ‰“å‡ÖM½ çš„团队成员,遥遥无期的开发过½E‹å®¹æ˜“让人崩溃ã€?br /> <br /> 10、NT的开发诏½I¿äº†å¯¹å¸‚场的需求的考虑åQŒæœ‰ä¸ªç‰›X的äñ”品经理还是相当重要的。当ç„Óž¼Œæ²¡æœ‰å¼€å‘者喜‹Æ¢æ·»åŠ æ–°åŠŸèƒ½åQŒç‰¹åˆ«æ˜¯åœ¨å·²¾lå®Œæˆä¸€ä¸ªæ–°åŠŸèƒ½çš„情况下åQŒä»¥è‡›_‘展到NT的开发者看åˆîCñ”品经理就不由得拿èµïLƒ‹‚’击墙的地步åQšï¼‰<br /> <br />    ˜q™æœ¬ä¹¦èŠ±äº†æˆ‘两个晚上看完åQŒè¿˜æ˜¯çœ‹æ•…事有趣呀åQŒä¸Šé¢æ‰€è¯´åªæ˜¯æˆ‘的印象,书中˜q˜æœ‰è®¸å¤šå…«å¦æ•…事老少咸宜åQŒå¦‚果有出入åQŒè¯·çœ‹åŽŸè‘—:åQ?有空˜q˜å¾—重读下ã€?br /> <br /> <br /> <br /> <br /><img src ="//www.355548.live/killme2008/aggbug/290969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/killme2008/" target="_blank">dennis</a> 2009-08-13 12:44 <a href="//www.355548.live/killme2008/archive/2009/08/13/290969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>说说˜q­ä»£ä¸­çš„需求变æ›ß_¼ˆæ›´æ­£åQ?/title><link>//www.355548.live/killme2008/archive/2008/04/28/196940.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Mon, 28 Apr 2008 13:04:00 GMT</pubDate><guid>//www.355548.live/killme2008/archive/2008/04/28/196940.html</guid><wfw:comment>//www.355548.live/killme2008/comments/196940.html</wfw:comment><comments>//www.355548.live/killme2008/archive/2008/04/28/196940.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>//www.355548.live/killme2008/comments/commentRss/196940.html</wfw:commentRss><trackback:ping>//www.355548.live/killme2008/services/trackbacks/196940.html</trackback:ping><description><![CDATA[    我们现在做的™å¹ç›®æ˜¯å…¸åž‹çš„ž®åž‹™å¹ç›®åQŒæ•´ä¸ªç»„也就4ã€?个ähåQŒä¸€ä¸ªè„P代周期基本在两周左右。尽½Ž¡æ²¡æœ‰æ˜Ž¼‹®æœ‰“˜q­ä»£”˜q™ä¹ˆè¯´æ³•åQŒå´æ˜¯ä»¥ä¸šåŠ¡äººå‘˜çš„策划案做分期实现。这个分期,按我的理解其实就是è„P代。最˜q‘发现的一个问题是åQŒåœ¨˜q­ä»£å¼€å§‹åŽåQŒä¸šåŠ¡äh员却没有办法保证需求在˜q™ä¸ª˜q­ä»£å‘¨æœŸå®Œæˆå‰çš„½E›_®šæ€§ï¼Œç”šè‡³åœ¨å„个模块集成之前,大家ž®±æå‡ºN多意见,òq¶ä¸”˜q™äº›æ„è§å¾ˆå¤šæ—¶å€™éƒ½æ˜¯å‰åŽçŸ›ç›„¡š„。特别是在客æˆïL«¯çš„开发上åQŒæ˜¾ç„Óž¼Œå®¢æˆ·ç«¯UI和操作习惯方面是最多变的地斏V€‚可怜我们公司唯一的MM½E‹åºå‘˜å¿«é™·å…¥å˜æ›´é¢‘繁的惔潭了åQŒæ”¹˜q‡åŽ»æ”¹å›žæ¥æ˜¯å®¶å¸¸ä¾‰K¥­ã€‚其实也是她˜q‡äºŽè€å®žåQŒè¦æˆ‘来è¯ß_¼Œä½ ä»¬è¦æ”¹åQŒå¯ä»¥ï¼Œä½†æ˜¯æˆ‘要向业务äh员确认,他是我唯一的变更来源,你们有什么需求向他反应,他来攉™›†å’Œç”„别。在《敏捯‚ÊY件开发》中说到åQŒè„P代开始后åQŒå®¢æˆ·å°±åŒæ„ä¸å†æ›´æ”¹å½“次˜q­ä»£ä¸­çš„素材的定义和优先¾U§åˆ«åQŒå¯æƒœè¿™ä¸€ç‚¹è²Œä¼¼å¾ˆéš‘ցšåˆîCº†åQŒä¸šåŠ¡äh员经常屈从于½Ž¡ç†å±‚或者其他小¾l„意见的压力。在我看来,在当‹Æ¡è„P代完成前的所有徏议或者说需求,都可以收集è“v来,ç”׃¸šåŠ¡äh员负责收集、甄别和军_®šåQŒæ”¾å…¥ä¸‹ä¸€ä¸ªè„P代版本的开发,因äؓ我们的è„P代周期一般也在两周左叻I¼Œ˜q™ä¸ªå‘¨æœŸ­‘›_¤Ÿè¾¨åˆ«˜q™äº›éœ€æ±‚的合理性和响应需求的及时性,而不是像现在˜q™æ ·å¤§å®¶ä¸ƒå˜´å…«èˆŒåœ°ææ„è§åQŒæŠ€æœ¯äh员疲于奔命,乃至于发脾气åQˆå…¥å¤çœŸæ˜¯è„¾æ°”坏的季节)åQ›ç³»¾lŸå„部分˜qŸè¿Ÿæ— æ³•˜q›è¡Œé›†æˆ‹¹‹è¯•åQŒé€ æˆæ–°çš„修改意见没有做完åQŒé¢„定的˜q­ä»£ç‰ˆæœ¬çš„更无法按时完成的局面ã€?br /><img src ="//www.355548.live/killme2008/aggbug/196940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/killme2008/" target="_blank">dennis</a> 2008-04-28 21:04 <a href="//www.355548.live/killme2008/archive/2008/04/28/196940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代码详查的几个要ç‚?/title><link>//www.355548.live/killme2008/archive/2008/03/20/187420.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Thu, 20 Mar 2008 02:27:00 GMT</pubDate><guid>//www.355548.live/killme2008/archive/2008/03/20/187420.html</guid><wfw:comment>//www.355548.live/killme2008/comments/187420.html</wfw:comment><comments>//www.355548.live/killme2008/archive/2008/03/20/187420.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>//www.355548.live/killme2008/comments/commentRss/187420.html</wfw:commentRss><trackback:ping>//www.355548.live/killme2008/services/trackbacks/187420.html</trackback:ping><description><![CDATA[1、应当有一个详查表åQŒå…³æ³¨reviewer˜q‡åŽ»é‡åˆ°çš„问题和¾~ºé™·åQŒå¯¹å¸¸è§é”™è¯¯ä¿æŒè­¦æƒ•<br /> <br /> 2、详查应当专注于‹‚€‹¹‹é”™è¯¯ï¼Œè€Œéžä¿®æ­£<br /> <br /> 3、详查的角色包括åQ?br /> 1åQ‰ä¸»æŒähåQšè´Ÿè´£åˆ†é…å¤æŸ¥ä“Q务,报告详查¾l“æžœåQŒä¸»æŒè¯¦æŸ¥å›žå¿†ï¼Œä»–需要能够理解被详查代码的相å…ÏxŠ€æœ¯ç»†èŠ‚,整体上控制详查进åº?br /> 2åQ‰ä½œè€…:代码的作者,负责陈述™å¹ç›®çš„概况,解释设计和代码中不清晰的部分<br /> 3åQ‰å¤æŸ¥è€…(revieweråQŒã€Šä»£ç å¤§å…?》称ä¸ø™¯„论员åQŒæ„Ÿè§‰ä¸æ˜¯å¾ˆæ°å½“åQ‰ï¼šè´Ÿè´£å®žé™…复查的工作的执行åQŒè´Ÿè´£æ‰¾å‡ºç¼ºé™—÷€?br /> 4åQ‰è®°å½•å‘˜åQšè®°å½•å‘现的错误åQŒè®°å½•ä“Q务的指派情况åQŒè®°å½•ä¼šè®?br /> 5åQ‰ç®¡ç†äh员:详查是一个纯技术性的复查åQŒåº”当避免管理äh员的介入。如果管理äh员介入了详查åQŒé‚£ä¹ˆå‚与的人可能会觉的在被评ä­håQŒè€Œä¸æ˜¯åŽ»å¤æŸ¥ææ–™åQŒå¯¼è‡´ç„¦ç‚¹ä»ŽæŠ€æœ¯é—®é¢˜è{¿UÕdˆ°è¡Œæ”¿é—®é¢˜ã€‚按国情åQŒè¿™¿Uæƒ…å†ëŠ›¸å½“常见ã€?br /> <br /> 4、明¼‹®è¯¦æŸ¥çš„目的是发现设计或者代码的¾~ºé™·åQŒè€Œä¸æ˜¯æŽ¢ç´¢æ›¿ä»£æ–¹æ¡ˆï¼Œæˆ–者争è®ø™°å¯¹è°é”™ï¼Œå…¶ç›®çš„绝不应该是批评作者的设计和代码。如果出现复查者做å‡ÞZ¸æ°å½“的评价和发言åQŒä¸»æŒäh应该制止åQŒå¼•å¯ÆD¯¦æŸ¥çš„‹zÕdŠ¨çš„健庯‚¿›è¡Œã€‚这一ç‚ÒŽˆ‘觉的相当重要åQŒå¯¹äº‹è€Œä¸å¯¹ähã€?br /> <br /> 5、详查会议后åQŒä¸»æŒäh撰写详查报告åQŒæœ€å¥½èƒ½æäº¤¾l™ç®¡ç†äh员一份,òq¶ä¸”应当及时˜q›å…¥˜q”工环节åQŒå°†¾~ºé™·åˆ†é…¾l™æŸäººåŽ»ä¿®å¤åQˆå¾€å¾€æ˜¯åŽŸä½œè€…)åQŒåƈ及时跟进监督¾~ºé™·çš„修复情å†üc€?br /> <br /> <br /><img src ="//www.355548.live/killme2008/aggbug/187420.html" width = "1" height = "1" /><br><br><div align=right><a href="//www.355548.live/" title="棒球比分大小怎么算">棒球比分大小怎么算</a> 2008-03-20 10:27 <a href="//www.355548.live/killme2008/archive/2008/03/20/187420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <script>(function(){ var src = (document.location.protocol == "") ? "//js.passport.qihucdn.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743":"https://jspassport.ssl.qhimg.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743"; document.write('<script src="' + src + '" id="sozz"><\/script>'); })(); </script> {ganrao}