??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产只有精品66 ,一本一本久久A久久综合精品,久久天天日天天操综合伊人avhttp://www.shnenglu.com/kb/?是沉睡着的水......zh-cnTue, 06 May 2025 17:54:06 GMTTue, 06 May 2025 17:54:06 GMT60在百度空间新建博?/title><link>http://www.shnenglu.com/kb/archive/2006/07/13/9802.html</link><dc:creator>可冰</dc:creator><author>可冰</author><pubDate>Thu, 13 Jul 2006 07:17:00 GMT</pubDate><guid>http://www.shnenglu.com/kb/archive/2006/07/13/9802.html</guid><wfw:comment>http://www.shnenglu.com/kb/comments/9802.html</wfw:comment><comments>http://www.shnenglu.com/kb/archive/2006/07/13/9802.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.shnenglu.com/kb/comments/commentRss/9802.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/kb/services/trackbacks/9802.html</trackback:ping><description><![CDATA[ <a target="_self" class="" title="可冰的小木屋" >我已在百度空间新建博客,Ƣ迎大家来访</a>?br /><img src ="http://www.shnenglu.com/kb/aggbug/9802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/kb/" target="_blank">可冰</a> 2006-07-13 15:17 <a href="http://www.shnenglu.com/kb/archive/2006/07/13/9802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>引h深思的文章http://www.shnenglu.com/kb/archive/2006/06/27/9083.html可冰可冰Tue, 27 Jun 2006 14:14:00 GMThttp://www.shnenglu.com/kb/archive/2006/06/27/9083.htmlhttp://www.shnenglu.com/kb/comments/9083.htmlhttp://www.shnenglu.com/kb/archive/2006/06/27/9083.html#Feedback0http://www.shnenglu.com/kb/comments/commentRss/9083.htmlhttp://www.shnenglu.com/kb/services/trackbacks/9083.html

可冰 2006-06-27 22:14 发表评论
]]>
Apache配置问题http://www.shnenglu.com/kb/archive/2006/06/23/8901.html可冰可冰Fri, 23 Jun 2006 11:41:00 GMThttp://www.shnenglu.com/kb/archive/2006/06/23/8901.htmlhttp://www.shnenglu.com/kb/comments/8901.htmlhttp://www.shnenglu.com/kb/archive/2006/06/23/8901.html#Feedback0http://www.shnenglu.com/kb/comments/commentRss/8901.htmlhttp://www.shnenglu.com/kb/services/trackbacks/8901.html在http://some.thing.com/下有一个处理器Q叫handler.xxxQ那么类g面的

URLhQ都由此处理器接收ƈ处理?br />http://some.thing.com/handler/other/string/etc
也即上面的相当于
http://some.thing.com/handler.xxx?other/string/etc




可冰 2006-06-23 19:41 发表评论
]]>
Q请教]|络E序斚w的问?/title><link>http://www.shnenglu.com/kb/archive/2006/06/23/8900.html</link><dc:creator>可冰</dc:creator><author>可冰</author><pubDate>Fri, 23 Jun 2006 11:40:00 GMT</pubDate><guid>http://www.shnenglu.com/kb/archive/2006/06/23/8900.html</guid><wfw:comment>http://www.shnenglu.com/kb/comments/8900.html</wfw:comment><comments>http://www.shnenglu.com/kb/archive/2006/06/23/8900.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/kb/comments/commentRss/8900.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/kb/services/trackbacks/8900.html</trackback:ping><description><![CDATA[|络的ƈ发连接数到底是由什么限制的Q即哪些因素是最主要的,N不能解决吗?<br />现在一个好的网l程序,通常最多能辑ֈ多少的ƈ发连接数Q?br /><br /><img src ="http://www.shnenglu.com/kb/aggbug/8900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/kb/" target="_blank">可冰</a> 2006-06-23 19:40 <a href="http://www.shnenglu.com/kb/archive/2006/06/23/8900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q讨论]关于注释的书写位|?/title><link>http://www.shnenglu.com/kb/archive/2006/04/21/6029.html</link><dc:creator>可冰</dc:creator><author>可冰</author><pubDate>Fri, 21 Apr 2006 07:20:00 GMT</pubDate><guid>http://www.shnenglu.com/kb/archive/2006/04/21/6029.html</guid><wfw:comment>http://www.shnenglu.com/kb/comments/6029.html</wfw:comment><comments>http://www.shnenglu.com/kb/archive/2006/04/21/6029.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/kb/comments/commentRss/6029.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/kb/services/trackbacks/6029.html</trackback:ping><description><![CDATA[ <font size="2"> <br />        在C/C++?变量及函数的定义一般都是在.h/.hpp文g中说明原?而在对应?c/.cpp文g中来q行实现.<br />        q种情况?头文件最l是l用户用的,以便让用户了解有哪些接口可以使用;?c/.cpp文g是开发者用的,以便让其它开发h员了解它的实现逻辑.因此q两个文件中肯定都是需要详l的注释??h/.hpp文g?主要说明函数的用方?如参数的意义,q回值的定义{??c/.cpp文g?主要说明函数的实现逻辑{?<br /><br />        不知道上面的做法是否合?请大家指?<br />        另外,大家在实际编E过E中是如何做?<br /><br />        事实?我自己在实践q程中却L偏向于把注释写到一个地?或者注释原?或者注释实?前者比较多),甚至q脆两边都写一L(但这L话内容经怼不一?.q样的方法让我在~程q程中吃了苦头?</font> <br /> <img src ="http://www.shnenglu.com/kb/aggbug/6029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/kb/" target="_blank">可冰</a> 2006-04-21 15:20 <a href="http://www.shnenglu.com/kb/archive/2006/04/21/6029.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我们Z从不参与Q?/title><link>http://www.shnenglu.com/kb/archive/2005/11/28/1363.html</link><dc:creator>可冰</dc:creator><author>可冰</author><pubDate>Mon, 28 Nov 2005 05:51:00 GMT</pubDate><guid>http://www.shnenglu.com/kb/archive/2005/11/28/1363.html</guid><wfw:comment>http://www.shnenglu.com/kb/comments/1363.html</wfw:comment><comments>http://www.shnenglu.com/kb/archive/2005/11/28/1363.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.shnenglu.com/kb/comments/commentRss/1363.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/kb/services/trackbacks/1363.html</trackback:ping><description><![CDATA[<font style="font-family: Verdana;" size="2">前几天看了荣耀老师对Bjarne先生?a >访谈</a>Q其中Bjarne说的一句话我印象特别深刻:<br></font><p style="color: rgb(0, 100, 0); font-family: Verdana;" class="MsoNormal"><font size="2"><b><span style="font-size: 9pt;">荣耀Q?/span></b><span style="font-size: 9pt;">一个有点儿八卦的问题?span lang="EN-US">C++</span>标准委员会中有中国h吗?有中国h?span lang="EN-US">C++</span>标准委员会递交q提案吗Q?/span><span style="font-size: 9pt;" lang="EN-US"> </span></font></p><p style="color: rgb(0, 100, 0); font-family: Verdana;" class="MsoNormal"><font size="2"><b><span style="font-size: 9pt;" lang="EN-US">Bjarne</span><span style="font-size: 9pt;">Q?/span></b><span style="font-size: 9pt;">我想不v来最q的提案和中国h有关。委员会中有一?span lang="EN-US">IBM</span>的新代表Q姓王。我猜他是中国hQ但我还不认识他?/span><span style="font-size: 9pt;" lang="EN-US"> </span></font></p><p style="font-family: Verdana;" class="MsoNormal"><font size="2"><span style="font-size: 9pt; color: rgb(0, 100, 0);">考虑C国有那么多h在从事计机工作Q?span style="font-weight: bold; text-decoration: underline;">?span style="background-color: rgb(255, 165, 0);">一?/span>?span style="background-color: rgb(255, 165, 0);">很奇?/span>Z么看不到你们对C++0x标准化工作的<span style="background-color: rgb(255, 165, 0);">参与</span></span>?/span><span style="font-size: 9pt;" lang="EN-US"><span style="color: rgb(0, 100, 0);"> </span><br></span></font></p><p style="font-family: Verdana;" class="MsoNormal"><font size="2">我不知道q究竟是怎么回事?/font></p><p style="font-family: Verdana;" class="MsoNormal"><font size="2">自从我前D|间订阅了Google新闻l中的comp.lang.c、c++论坛Q我看到的所有帖子几乎都是在讨论C++0x标准的。给我的感觉像q里面都是标准委员会的成员或那一cȝ高手Q我也没有参与过M讨论Q甚至也没细心去看看相关的问题。我也很xC++0x标准的制定,但却从来没有参与q去或想q要参与q去Q这又是Z么呢Q?/font></p><p style="font-family: Verdana;" class="MsoNormal"><font size="2">我想大多数的朋友也可能是q样的情况吧。ƈ不是不想参与Q而是从来没有惛_q。我惌一定和我们的教育有兟뀂我们被培养为只接受而不用去参与Q我们只去被动的学习新的知识Q而从没有惌M动的参与到新知识的生的q程中?/font></p><p style="font-family: Verdana;" class="MsoNormal"><font size="2">不过Q现在情况应该改变一下了Q至我们已l看到Bjarne先生的提醒了Q我们要参与q去Q不仅仅是参与C++0x的标准制定的问题Q而是思想习惯的问题?/font></p><p style="font-family: Verdana;" class="MsoNormal"><font size="2">朋友们,我们要改变现在的q种思维方式了,要参与到更多的活动中厅R?/font></p><img src ="http://www.shnenglu.com/kb/aggbug/1363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/kb/" target="_blank">可冰</a> 2005-11-28 13:51 <a href="http://www.shnenglu.com/kb/archive/2005/11/28/1363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++~码规范http://www.shnenglu.com/kb/archive/2005/11/22/1240.html可冰可冰Tue, 22 Nov 2005 05:46:00 GMThttp://www.shnenglu.com/kb/archive/2005/11/22/1240.htmlhttp://www.shnenglu.com/kb/comments/1240.htmlhttp://www.shnenglu.com/kb/archive/2005/11/22/1240.html#Feedback9http://www.shnenglu.com/kb/comments/commentRss/1240.htmlhttp://www.shnenglu.com/kb/services/trackbacks/1240.html//自己译的,本想整理一下,但一直没旉Q现在就q样放上来吧Q有错就批,别客气,呵呵?/font>

C++~码规范

一、组l与{略问题

If builders built buildings the way programmers wrote programs, then the
first woodpecker that came along would destroy civilization.
----Gerald Weinberg
在C和C++的主要传l中,我们认ؓ是一U零基础的习?W?条是一个根本的指示,它涵盖了~码规范中我们认为是最基本的徏?
在这介绍性的一节的其余部分?我们_ֿ选取了其中的量问题加以阐述,q些大多与编码本w无直接关系,但却是写出可靠代码的基本工具和技?
在这一节中我们认ؓ最有h值的是第0条不要因失?(?知道什么不需要规范化.)

0. 不要因小失大. (?知道什么不需要规范化.)

摘要

仅说必要的话:不要坚持个h品味或陈旧的习惯.

讨论

真只是个人品味且不媄响正性或可读性的l论不属于编码标?M专业E序员可以很Ҏ地读写稍微不同于他所习惯的格式的代码.
在每个源文g甚至每个工程中都要用一致的格式,因ؓ在几U不同编码风格的代码片段中蟩转是很不协调?但是不要企图在不同项目或公司中坚持一致地格式.
下面是几条通用的结?q里重要的不是去制定规则,而只是要保持与你l护的文件的风格的一?
不必明确指定要羃q多?但要~进以突出结?用你喜欢的Q意数量的I格~进,但至要在同一文g中保持一?
不必保持特定的行长度,但要保持行具有可L?用你喜欢的Q意长度的行长,但不要太长了.研究表明十个单词以内的宽度对眼睛跟踪是最理想?
不要q度制定命名规则,但要用一致的命名U定:仅有两点必须要做?a)决不?隐秘?名称,也即以一个下划线开头或包括双下划线的名U?以及b)L用字母全部大写的单词命名宏ƈ且决不要考虑定义一个常用或~写单词的宏(包括常用模板参数,比如T和U;?define T anything定义M东西是极其不好的做法).此外,要用一致的有意义的名称,q按照文件或模块的约?(若你不能军_你自q命名U定,试试q种方式Q以各单词首字母大写方式命名cR函数和枚D(LikeThis);命名变量时在前者基上小写第一个单词的首字?likeThis);命名U有成员变量时在前者方式之后再加一个下划线(linkThis_);以全大写q用一个下划线q接各单词的方式命名?LINK_THIS).)
不要规定注释的风?除非有工兯析特定格式的注释生成文),但要写有用的注释:如果可以的话以代码来代替注释(?a href="#item16">W?6?/a>).不要在注释中重复代码;它们不能被同步维?要写解释Ҏ和基本原理的启发性的注释.
最?不要试图坚持陈旧的规??a href="#0_3">??a href="#0_4">?),即它们曑֜旧编码规范出现过.

例子

  • ?:括号的放|?下面的几U没有Q何可L上的差?
    void using_k_and_r_style() {
    // K&R风格
    }

    void putting_each_brace_on_its_own_line()
    {
    // 括号独占一?br>}

    void or_putting_each_brace_on_its_own_line_indented()
    {
    // 括号独占一行ƈ~进
    }
    M专业E序员都可以不费力地d上面所列的M一U风格的代码.但要保持一致?不要随意的或以晦涩的嵌套方式攄括号,试着去遵循各文g中已有的风格.在本书中,我们的括h意识的在排版的约束中以最好的可读性的来放|?
  • ?: I格与制表符.׃~辑器对制表W解释的不同,它可能被误用,或被理解成凸?或无~进,q种情况下一些团队合理地选择用制表W?其他同样有名望的团队则合理地允许制表W?而采用纪律来避免其潜在缺?只要保持一致?当团队成员维护其他h的代码时,如果你允怋用制表符,保不要以代码清晰度和可Lؓ代h(?a href="#item6">W??/a>).如果你禁用制表符,允许~辑器在d源文件时空D{换成制表W?以便用户可以在编辑器中用制表符;但要保写回文g的时候将它们q原为空?
  • ?: 匈牙利命名法. 类型信息合q到变量名称中的命名方式为类型不安全的语a(其是C)带来了一些؜合的作用.但这U命名法在面向对象语a中没有好?只有坏处),其在泛型编E中是根本不可能?因此,不会有哪个C++~码规范会要求用匈牙利命名法,C++~码规范可能合理地将其排除在?
  • ?: 单入?单出?"SESE"). 历史?一些编码规范要求每个函数有且仅有一个出?也即一个返回语?q样的要求在支持异常与析构函数的语言中是q时?在这些语a?函数通常都会有许多隐式的出口.取而代之的?按照像第5条那L接提倡更短的函数的标?q样会很自然地具有更Ҏ理解代码和把握错误的Ҏ?

    参?/h3>
    [BoostLRG] · [Brooks95] $12 · [Constantine95] $29 · [Keffer95] p. 1 ·
    [Kernighan99] $1.1, $1.3, $1.6-7 · [Lakos96] $1.4.1, $2.7 · [McConnell93]
    $9, $19 · [Stroustrup94] $4.2-3 · [Stroustrup00] $4.9.3, $6.4, $7.8, $C.1
    · [Sutter00] $6, $20 · [SuttHysl01]

    1. 以高警告U别q净地编?/h2>

    摘要

    警告铭C?使用你的~译器的最高警告?要求q净(无警?的构?理解全部的警?q过修改代码消除警告,而不是通过降低警告U别.

    讨论

    ~译器是你的好朋?若它׃一个特定的l构而发Z个警?通常你的代码含有潜在的问?
    成功构徏应该是干净?无警告的).如若不是q样,你将会很快养成快速浏览输出结果的习惯,q而你错q真正的问题.(?a href="#item2">W??/a>)
    消除警告: a)理解?然后b)更改你的代码L除警告ƈ让你惌它所做的事情对h和编译器都更清楚.
    一定要做这一?即一开始程序看h正确q行?或者即使你肯定警告是良性的.即是良性警告也可以使后面的指出真正危险的警告变得隐?

    例子

  • ?: W三方头文g.你不可能M改一个引?或许是良性的)警告的库头文?因此你要在你自己的头文g中包含原始头文gq仅在这个头文g的作用域内选择性的屏蔽掉这些烦人的警告,然后在你其它的项目文件中包含你的q个包装q的头文?例如(注意q里的警告控制语法在~译器间是不同的):
    // 文g: myproj/my_lambda.h -- 包装Boost的lambda.hpp
    // L使用q个文g,而不直接使用lambda.hpp.
    // 注意: 我们的构建现在自动检? "grep lambda.hpp ".
    // Boost.Lambda产生我们所知道的无害的~译警告.
    // 当作者修正它时我们将U除下面?pragma语句,但是q个头文件仍存?
    //
    #pragma warning(push) // 仅屏蔽这个头文g
    #pragma warning(disable:4512)
    #pragma warning(disable:4180)
    #include #pragma warning(pop) // 恢复原来的警告?
  • ?: "未用过的函数参?"查以保你真的不打算用这个函数参?例如:它可能是占位W以便将来扩?或是你代码中从未用到但却是必需的标准化函数{֐的一部分).如若它不是必需?只要删除q个函数参数p?
    // ?不用提C的用户自定义分配器内部 ?br>
    // 警告: "unused parameter 'localityHint'"
    pointer allocate( size_type numObjects, const void *localityHint = 0 ) {
    return static_cast( mallocShared( numObjects * sizeof(T) ) );
    }

    // 新版? 消除警告
    pointer allocate( size_type numObjects, const void * /* localityHint */ = 0 ) {
    return static_cast( mallocShared( numObjects * sizeof(T) ));
    }
  • ?: "变量定义了但却从未?"查确保你真的不想引用q个变量.(一个基于栈的RAII对象l常引vq样的不合理的警?误W?3?/a>.)如若它不是必需?通常你可以插入一个变量自求值的表达式ɾ~译器安?q一求g会对q行旉度有媄?:
    // 警告: "变量'lock'定义了但却从未?"
    void Fun() {
    Lock lock;

    // ?br>
    }

    // 新版? 消除了警?br>void Fun() {
    Lock lock;
    lock;

    // ?br>
    }
  • ?: "可能使用了未初始化的变量."那就初始化这个变??a href="#item19">W?9?/a>).
  • ?: "丢失q回语句."即你的控制永q也不可能到辑և数的末尾,~译器有时也会要求有一个返回语?例如无限循环、异常抛句以及其它类型的q回语句).q也许是一件好?因ؓ有时你只是认为控制流不会q行到末?例如无default的switch语句没有修改的弹?因些要有一个default语句执行assert( false ) (另见W?a href="#item68">68?a href="#item90">90?:
    // 警告: 丢失"return"
    int Fun( Color c ) {
    switch( c ) {
    case Red: return 2;
    case Green: return 0;
    case Blue:
    case Black: return 1;
    }
    }

    // 新版? 消除警告
    int Fun( Color c ) {
    switch( c ) {
    case Red: return 2;
    case Green: return 0;
    case Blue:
    case Black: return 1;
    default: assert( !"should never get here!" ); // !"string"的gؓfalse
    return -1;
    }
    }
  • ?: "有符?无符号不匚w."有符h与无W号C间的比较与赋值通常不是必需?改变参与比较的变量的cd以满cd匚w要求.最坏情况下,插入一个显式{?(׃~译器ؓ你插入这L转换,也会警告你它所做的,所以你最好不要让它出?)

    例外

    有时~译器可能发Z个厌烦的甚至ƺ骗性的警告(比如Ua的扰׃?,但没有可提供的方法去消除?而且M改代码去消除它可能是不可实现的或是徒劳的工作.在这些罕见的情况?作ؓ一个团队决{?除去q个只是无聊的警告的烦h的工作是:仅特定警告无效,q尽可能是局部性的,q写一个清晰的注释文档说明Z么这样做是必要的.

    参?/h3>
    [Meyers97] $48 · [Stroustrup94] $2.6.2

    2. 使用自动构徏pȝ

    摘要

    ?单个)按钮:使用一个无需用户参与的全自动("一键触?)构徏pȝ.

    讨论

    一个一键触发式构徏Ҏ是基本的.它必进行可靠的和可重复的{?你的源文g转换为可交付的程序包.有很多自动构建工具可以?没有理由不去用它.挑选一?使用?
    我们已见q一些忽视了"一键触?式要求的l织.一些h认ؓ随处点几下鼠?可以运行一些工h注册COM/CORBA服务,或通过手工定制的一个合理构E拷贝一些文?但是你没有时间和_֊可以费在一些机器能做得更好更快的事情上.你需要一键触发式的自动化的和可靠的构?
    成功的构建应该是没有M警告?见第1?.理想化的构徏不生扰׃?而仅是一个日志消?"构徏成功完成."
    有两个构建模?增量构徏和完全构?增量构徏仅重上自增量构徏或完全构Z来被修改q的文g.推论:两个q箋的增量构Z的后者应该没有Q何输出文?如果有的?你可能有一个依赖环(见第22?,或者你的构建系l执行了不必要的操作(例如生成不合理的临时文g而只是丢弃它?.
    一个工E可以有不同形式的完全构?考虑用一pd本质的特征确定你的构建的参数;很可能候选者就是目标式体系l构、调试和发布、或更广(基本文g和全部文件和完全安装).一个构|可以创Z个品的基本的可执行文g和库,另一个可能也创徏一些辅助文?一个完全充实的构徏也可能创Z个包含你所有文件、可重发布的W三方库和安装代码的安装E序.
    随着工程的进?没有自动构徏的花费也在增?如果你一开始没有用,你将费很多旉和资?更糟p的?随着自动构徏成ؓ无法抉|的需?你将会有比项目一开始更多的压力.
    大项目可能有一?构徏?ȝ",他的工作是照料构徏pȝ.

    参?/h3>
    [Brooks95] $13, $19 · [Dewhurst03] $1 · [GnuMake] · [Stroustrup00] $9.1

    3. 使用一个版本控制系l?/h2>

    摘要

    好记性比不上烂笔?使用一个版本控制系l?VCS).决不要让出的文g保留很长旉.一旦你的更新的单元通过试尽快检?保入的代码不会破坏整个构徏.

    讨论

    几乎所有不q_的工E都需要一个以上的开发者和/或超q一周的工作?在这L工程?你将需要比较同一文g的历史版本以定变化是什么时??或被?引入?你也需要控制和理源代码的变化.
    当有多个开发者时,几个开发者很可能会在同一旉对同一文g的不同部分进行ƈ行地更改.你需要工具以自动q行文g的检出和恢复,以及在某些时候对q发~辑的合q?VCS自动操作和控制检?恢复以及合ƈ.VCS比手工做的更快更准确.而且你不用花旉每天的去摆弄那些重复性的工作,你有软g要写.
    不要破坏构徏.在VCS中的代码必须L可以成功构徏?
    存在很多的版本控制系l可供选择,没有理由不去用它.最便宜和流行的是cvs(见参?.它是一个灵zȝ工具,兯TCP/IP讉KҎ?可选择性的提高安全?通过用安全外壳SSH作ؓ后端),卓越的脚本管?甚至有图形接?许多其它VCS也将cvs作ؓ标准L?或基于它构徏新的功能.

    例外

    从始至终只花一周左x间的一个程序员的项目或许可以不需要VCS而生存吧.

    参?/h3>
    [BetterSCM] · [Brooks95] $11, $13 · [CVS]

    4. 在代码审阅上作投?/h2>

    摘要

    代码审阅:更多双眼睛将会带来更好的质量.展示你的代码,qM人的.你们都将怺学习或受?

    讨论

    一个良好的代码审阅q程在许多方面都对你的团队有好处.它可?
  • 有益的^{的压力可以增加代码质量.
  • 可以扑ֈbugs、移植性不好的代码以及潜在的度量问?
  • 通过思想的互补培dŞ成的设计和实?
  • 带动新成员和初者迅速提升能?
  • 在团队中形成共同价值和团队意识.
  • 增加_英、信心、动机和专业自豪?
  • 许多开发商既不对代码质量和团队质量q行奖赏,也不投入旉和金钱鼓׃?希望我们从现在v几年都不会食a,但我们感觉到q种势正在慢慢改变,部分原因是由于对安全软g的需求的增长.代码审阅正有助于q种势,另外也是一个极好的(和免费的)内部训练Ҏ.
    即你的雇主q不支持代码审阅Ҏ,你也要增加管理知?提示:要开?l他们看q本?以及无论如何要尽你最大努力去安排旉q引导审阅的q行.q时间是值得q.
    代码审阅作Z的Y件开发周期的一常规程?如果你和你的队友赞同ZȀ?也可能是挫折)的奖惩制?׃好得?
    不要做得太Ş式化?写一简单的邮gp够将代码审阅做得很好?q会使你更容易跟t自qq程以及避免重复.
    当审阅他人的代码?你可能想在旁边保留一个供参考的清单.H以Z个好的清单可能正是你正在ȝq本书的目录?满意?
    摘要:我们知道我们在给"p?布道,但是不得不说.你们的自负或自我M也许讨厌代码审阅,但你们中的少量天才程序员喜欢?因ؓ它会有成效ƈ使代码更?使程序更强健.

    参?/h3>
    [Constantine95] $10, $22, $33 · [McConnell93] $24 · [MozillaCRFAQ]



  • 可冰 2005-11-22 13:46 发表评论
    ]]>
    很久没写日志?/title><link>http://www.shnenglu.com/kb/archive/2005/11/20/1203.html</link><dc:creator>可冰</dc:creator><author>可冰</author><pubDate>Sun, 20 Nov 2005 07:00:00 GMT</pubDate><guid>http://www.shnenglu.com/kb/archive/2005/11/20/1203.html</guid><wfw:comment>http://www.shnenglu.com/kb/comments/1203.html</wfw:comment><comments>http://www.shnenglu.com/kb/archive/2005/11/20/1203.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/kb/comments/commentRss/1203.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/kb/services/trackbacks/1203.html</trackback:ping><description><![CDATA[<font size="2"><span style="font-family: Verdana;">自从国庆期间换Linux操作pȝ后,再也没有来写过日志了,但我q是l常上来看看的?/span><br style="font-family: Verdana;"><span style="font-family: Verdana;">我也不知道这是怎么回事Q也不是很忙啊。在自己机子上弄了几个网,在上面和同学们互相交流Q写一些文章;但现在也没有再弄了?/span><br style="font-family: Verdana;"><span style="font-family: Verdana;">我的Ȁ情好像L很快的消逝。以后有q几个项目的念头Q都只是刚做了个开始,花几天或一周时间后没Ȁ情了。现在也是刚找了几个同学l织了一个小的团队来写点E序Q但l常q一个月左右后,发现我好像又x其它的学习目标了?/span><br style="font-family: Verdana;"><span style="font-family: Verdana;">我ؓ什么Lq样子呢Q?/span><br style="font-family: Verdana;"><span style="font-family: Verdana;">现在心情又是周期性地落在了低Pq一周几乎什么都没做。上课也都没兴趣。开了两门选修课XML和ASP.NETQXML了解q,但不深入Q老师讲得太敷,惌己学Q又不好跟老师_担心说我看不赯师Q但学分得要啊,不选又不行QASP.NET也是用过的,但对它没太大兴趣Q看了别人的教材Q那些内容基本上都知道的Q通过考试是没问题的,但还是放不下q好几个破学分。我发现我真是给现在的教育套住了?/span><br style="font-family: Verdana;"><span style="font-family: Verdana;">得下个决心了Q……好像我下的军_也不啊Q但也基本上都没能坚持几天,唉……!</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">q样的生zM时是个头啊…?/span><br style="font-family: Verdana;"></font><img src ="http://www.shnenglu.com/kb/aggbug/1203.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/kb/" target="_blank">可冰</a> 2005-11-20 15:00 <a href="http://www.shnenglu.com/kb/archive/2005/11/20/1203.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>醒悟?http://www.shnenglu.com/kb/archive/2005/10/07/560.html可冰可冰Fri, 07 Oct 2005 06:25:00 GMThttp://www.shnenglu.com/kb/archive/2005/10/07/560.htmlhttp://www.shnenglu.com/kb/comments/560.htmlhttp://www.shnenglu.com/kb/archive/2005/10/07/560.html#Feedback0http://www.shnenglu.com/kb/comments/commentRss/560.htmlhttp://www.shnenglu.com/kb/services/trackbacks/560.html忽然发现自己q大学几q都是在没有M的目标的生活着,没有一Ҏ?有时候想着真是有点颓废?惛_初ؓ高考拼搏时是多么的有劲?能在那么长的旉里一直不放松.虽然大学生活已经接近֣?但还不算太晚,q旉好好l自q定一个目标吧!



    可冰 2005-10-07 14:25 发表评论
    ]]>
    评h一下UTF-8与UNICODE怺转换的代?/title><link>http://www.shnenglu.com/kb/archive/2005/09/29/491.html</link><dc:creator>可冰</dc:creator><author>可冰</author><pubDate>Thu, 29 Sep 2005 12:34:00 GMT</pubDate><guid>http://www.shnenglu.com/kb/archive/2005/09/29/491.html</guid><wfw:comment>http://www.shnenglu.com/kb/comments/491.html</wfw:comment><comments>http://www.shnenglu.com/kb/archive/2005/09/29/491.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.shnenglu.com/kb/comments/commentRss/491.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/kb/services/trackbacks/491.html</trackback:ping><description><![CDATA[<font color="#000000" face="Verdana" size="2">上周,我花了很多心思用模板写了一个UTF-8与UNICODE怺转换的功?见文?/font><a ><font color="#000080" face="Verdana" size="2">code.rar</font></a><font color="#000000" face="Verdana" size="2">),刚开始感觉还可以,但这几天慢慢的觉?Z么不直接提供两个函数?q样不是单方便吗?我这L设计又能带来额外的什么好处呢?刚开始我是想提供比较方便好用以及Ҏ扩展与维护的代码,但现在感觉到与直接提供C式的函数q没有多额外的好处.或许q样的简单功能根本就用不着q样复杂的代码吧.正如Eric Raymond对C++的评价一??使程序员們֐于写复杂的代?.<br>我想大家看看我的代码,l我一Ҏ见和.</font><img src ="http://www.shnenglu.com/kb/aggbug/491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/kb/" target="_blank">可冰</a> 2005-09-29 20:34 <a href="http://www.shnenglu.com/kb/archive/2005/09/29/491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.ampv.cn" target="_blank">޹˾þһҳ</a>| <a href="http://www.996acg.cn" target="_blank">þֻƷ99</a>| <a href="http://www.k1822.cn" target="_blank">þþWWW˳ɾƷ</a>| <a href="http://www.aboto.cn" target="_blank">þۺɫɫ</a>| <a href="http://www.0795fcw.cn" target="_blank">ֻоƷþ</a>| <a href="http://www.tjjxqc.cn" target="_blank">޾Ʒһþ</a>| <a href="http://www.weipengdq.cn" target="_blank">þþwww˳ɾƷ</a>| <a href="http://www.fozhun.cn" target="_blank">Ƶþ</a>| <a href="http://www.geekon.com.cn" target="_blank">Ʒһþ </a>| <a href="http://www.hrbtwlh.cn" target="_blank">պAvĻþþ޸ </a>| <a href="http://www.qeckf.cn" target="_blank">99ƷþþþĻ</a>| <a href="http://www.wangjunyao.cn" target="_blank">Ʒ׾þAAAƬ69</a>| <a href="http://www.kqtao.cn" target="_blank">þݺҹҹavapp</a>| <a href="http://www.saxie.cn" target="_blank">͵ٸþþþþþþ</a>| <a href="http://www.weikoo.cn" target="_blank">þþWWWѾƷ</a>| <a href="http://www.iyuhu.cn" target="_blank">պƷþĻ</a>| <a href="http://www.scstnysc.cn" target="_blank">99þþƷѹۿ</a>| <a href="http://www.janl.cn" target="_blank">޺ݺݾþۺһ77777 </a>| <a href="http://www.yozang.cn" target="_blank">þ66͵Ʒ9</a>| <a href="http://www.a3314.cn" target="_blank">þþ97ɫ </a>| <a href="http://www.zhijin168.com.cn" target="_blank">ŷ˾þô߽ۺ</a>| <a href="http://www.semtmtw.cn" target="_blank">99þһa</a>| <a href="http://www.bxauomc.cn" target="_blank">þþþþþþƷŮ99</a>| <a href="http://www.dl-dr.cn" target="_blank">þù</a>| <a href="http://www.tzzdj.cn" target="_blank">鶹Ʒþþһ</a>| <a href="http://www.rfqaod.cn" target="_blank">þþƷһԡ </a>| <a href="http://www.googledad.cn" target="_blank">ƷþĻ</a>| <a href="http://www.wbcyn.cn" target="_blank">99þerֻоƷ18</a>| <a href="http://www.xitie520.cn" target="_blank">Ļþۺ</a>| <a href="http://www.ts71.cn" target="_blank">ձþþվ</a>| <a href="http://www.qianzifu.net.cn" target="_blank">ھƷþþþþ鶹 </a>| <a href="http://www.mianfeiwg.cn" target="_blank"> þ Ʒ</a>| <a href="http://www.dfpt.net.cn" target="_blank">þ޸ۺ</a>| <a href="http://www.ssc950.cn" target="_blank">˾þô߽AVۺӰԺ</a>| <a href="http://www.hljfucai.cn" target="_blank">Ʒþþþ</a>| <a href="http://www.tril.cn" target="_blank">ھƷþþþþĻ</a>| <a href="http://www.syworld.com.cn" target="_blank">ԴӰȷþԴ</a>| <a href="http://www.jhitezpt.cn" target="_blank">þþƷAV鶹վ </a>| <a href="http://www.weiyan2143.cn" target="_blank">ۺϾþϵ</a>| <a href="http://www.mayifu.cn" target="_blank">þþƷרѶ</a>| <a href="http://www.uoip.cn" target="_blank">þþƷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>