﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C++ &amp; Embed</title><link>http://www.cppblog.com/KGen/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 16 Apr 2026 04:17:05 GMT</lastBuildDate><pubDate>Thu, 16 Apr 2026 04:17:05 GMT</pubDate><ttl>60</ttl><item><title>嵌入式OS的选择</title><link>http://www.cppblog.com/KGen/archive/2014/04/22/206675.html</link><dc:creator>眩晕:C++ &amp; Embed</dc:creator><author>眩晕:C++ &amp; Embed</author><pubDate>Tue, 22 Apr 2014 06:23:00 GMT</pubDate><guid>http://www.cppblog.com/KGen/archive/2014/04/22/206675.html</guid><wfw:comment>http://www.cppblog.com/KGen/comments/206675.html</wfw:comment><comments>http://www.cppblog.com/KGen/archive/2014/04/22/206675.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/KGen/comments/commentRss/206675.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/KGen/services/trackbacks/206675.html</trackback:ping><description><![CDATA[今年是2014年，进入这个嵌入式设备开发这一领域已经10年整了。<br /><br />10年前如果是想进入车载多媒体，导航，手持PDA设备，智能终端，SMARTPHONE等产品领域的公司，在没有积累的情况下大多会选择WINCE平台。<br />这一平台有着相对而言较为丰富的开发资源和一个不错的图形界面，来自厂商的支持虽然不够给力但也不是特别的糟糕。<br />相比而言很多抱着嵌入式Linux，TRON等系统不放到厂商尝到了苦头之后在07年前后考虑转向WINCE平台。不过像SANYO还没等转已经没有了，然后就没有了然后。<br /><br />在ARM11被广泛应用之后微软显然落后了一大截。逐渐的安卓系统在各种领域被广泛的应用，开发的门槛比起嵌入式Linux和Wince时代大大降低。<br />魅族也从定制WINCE的系统转为定制安卓系统，新兴的没有技术积累的公司很快的在新平台上完成了弯道超车。大量的旧的，相对封闭的系统开始退出这个舞台。<br /><br />前几天和芯片厂商聊了聊。感觉目前抱着Windows mobile/Windows embed不放的都是些有基础的厂商，大概都是10年前做得比较好的那一拨。有自己的Know-How，有自行编写的大量的库类。短期来看让这些企业放弃的现有资产的话，放弃成本是非常高的。包括大量的已经在设备上稳定运行的应用，不仅仅开发生产的企业要放弃，End User（也就是客户）也要放弃。<br /><br />最近微软在WP8.1上很下功夫，发力向IOS，安卓等系统进行追赶。换言之在Windows Embed的其它产品线上就不是很下功夫。对于依然在使用旧的WINCE平台的企业来说，或许主动的适应显然比被动的被环境等待从而被环境淘汰要积极得多。<img src ="http://www.cppblog.com/KGen/aggbug/206675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/KGen/" target="_blank">眩晕:C++ & Embed</a> 2014-04-22 14:23 <a href="http://www.cppblog.com/KGen/archive/2014/04/22/206675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>知难行易还是知易行难</title><link>http://www.cppblog.com/KGen/archive/2010/03/12/109509.html</link><dc:creator>眩晕:C++ &amp; Embed</dc:creator><author>眩晕:C++ &amp; Embed</author><pubDate>Fri, 12 Mar 2010 04:19:00 GMT</pubDate><guid>http://www.cppblog.com/KGen/archive/2010/03/12/109509.html</guid><wfw:comment>http://www.cppblog.com/KGen/comments/109509.html</wfw:comment><comments>http://www.cppblog.com/KGen/archive/2010/03/12/109509.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/KGen/comments/commentRss/109509.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/KGen/services/trackbacks/109509.html</trackback:ping><description><![CDATA[
浏览了新一期的程序员杂志，把SKYPE签名改成&#8220;写得一手狗屁文章&#8221;。<br>夸夸其谈的人太多了。比如2x岁的小孩子，一个个谈组织、管理、构架&#8230;&#8230; <br>不否认天才的存在，不过回顾自己几年来的经历，只是越来越感到自己的无知；感到自己过去所做的程序，所带的项目，都存在巨大的缺憾。<br>在巨大的缺憾感的压迫下，除了学习、求教、工作、实践，不敢再用时间去堆砌空洞无用的文章。组织、管理、构架，摆起架势写作这些文章之前，还真得掂量掂量自己的斤两。<br><br>如果这世上的事情真的是&#8220;知难行易&#8221;，那大家大可以都打打官腔。问题是有些时候真的是&#8220;知易行难&#8221;。<br><br>比如去年的项目中使用怎样的框架，选用怎样的方案，林林总总有不下十种意见。各个高谈阔论。但真正可行的，或者说，能把自己的意见落到实处的，却寥寥无几。如果构架师只是在白纸上随便写写画画，那真是可以消灭这个工种了。<br>还有管理。人人好像都知道如何管理。YY小说里最常用的就是&#8220;王霸之气&#8221;。那真是虎躯一震，宵小之徒无不噤若寒蝉。但是现实生活中呢，经济社会呢？今天这个同事生孩子，明天那个装修，再后天又一个搬家，动不动再来个离职。这种情况下还空谈什么沟通，谈什么管理；得赶紧在现有资源下解决现实问题。<br><br>当然搞技术的有时候是&#8220;知难行易&#8221;。比如有个同事技术上的实现能力不错，开发效率也很高。但是对构架、设计没什么感觉。有一个好的设计思路，他可以很快的独立完成中小型系统。对这样的人来说，可能就算得上&#8220;知难行易&#8221;。<img src ="http://www.cppblog.com/KGen/aggbug/109509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/KGen/" target="_blank">眩晕:C++ & Embed</a> 2010-03-12 12:19 <a href="http://www.cppblog.com/KGen/archive/2010/03/12/109509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）架构师已死（源自UML软件工程组织，转自http://www.cppblog.com/vczh/）</title><link>http://www.cppblog.com/KGen/archive/2009/12/25/104041.html</link><dc:creator>眩晕:C++ &amp; Embed</dc:creator><author>眩晕:C++ &amp; Embed</author><pubDate>Fri, 25 Dec 2009 04:11:00 GMT</pubDate><guid>http://www.cppblog.com/KGen/archive/2009/12/25/104041.html</guid><wfw:comment>http://www.cppblog.com/KGen/comments/104041.html</wfw:comment><comments>http://www.cppblog.com/KGen/archive/2009/12/25/104041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/KGen/comments/commentRss/104041.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/KGen/services/trackbacks/104041.html</trackback:ping><description><![CDATA[
觉得这篇文章里面有几个地方很有意思：<br>1.权利的三层<br>2.构架无用<br><br>事实如此。一致以来从事项目管理、团队管理和系统构架、系统实现的工作。对这文章里写的东西深以为然。<br><br>以下为转载内容：<br><br><span style="color: rgb(75, 75, 75); font-family: Verdana; font-size: 13px; line-height: 19px; "><div class="postTitle" style="font-size: 14.7px; font-weight: bold; margin-bottom: 10px; "><a id="viewpost1_TitleUrl" class="postTitle2" href="http://www.cppblog.com/vczh/archive/2009/10/27/99578.html" style="text-decoration: none; color: rgb(26, 139, 200); ">（转）架构师已死（转自UML软件工程组织）</a></div><p class="content">2006年的职场出奇的冷清，相比前几年，简历的数量和质量都大为不如，很难得找到三年工作经验以上的人，有一个不是特别笨，就是特别怪。就是么，干得好谁没事换工作啊！Simon是一家外企软件公司的总经理，最近给这个问题愁坏了。项目一个接一个的接下来，人手越来越紧张。虽然Simon是个极限编程的粉丝，但也不得不批准了一份又一份的加班申请。HR经理把这个问题归结到房价上，他的妙论是&#8220;怕失业了还不上房款，不敢跳槽&#8221;。</p><p class="content">这天，K项目组长Allen终于忍不住了，带了一个只有一年工作经验的小伙子要Simon面试，&#8220;很聪明！经验少了点。&#8221;</p><p class="content">Simon皱了皱眉毛，说：&#8220;你不知道这个职位最低要求是三年工作经验吗？&#8221;</p><p class="content">Allen说：&#8220;这已经是三个月里通过技术考试中最好的一个了，老大，试试吧。&#8221;Allen是Simon多年的哥们，比较随便。</p><p class="content">抵到面子上来，Simon只好让Allen把小伙子带进来。</p><p class="content">Simon的面试通常是三步曲：</p><p class="content">问题一：你能说说毕业后的主要工作经历吗？</p><p class="content">问题二：再说说你在公司的地位？</p><p class="content">问题三：你的发展目标是什么？等回答后，比如说构架师，他就跟着问：想象一下你当构架师的一天，说给我听听？</p><p class="content">小伙子回答第一问题很快很清楚，一年工作当然没什么东西。Simon觉得小伙子挺聪明。所以在小伙子回答了第二个问题后，问了一个发散性的问题：&#8220;你刚才说你在公司里处于中等水平，那比你差的人为什么会比你差呢？&#8221;</p><p class="content">这个问题是个陷阱。</p><p class="content">小伙子冒冒失失回答说：&#8220;我觉得他们每天工作是为工作而工作，工作没有责任感。&#8221;</p><p class="content">Simon点点头说：&#8220;是吗？那真是糟糕的员工。那你刚好比糟糕的员工好一点了？&#8221;</p><p class="content">小伙子的脸一下子红了，&#8220;我不是这个意思&#8230;&#8230;&#8221;</p><p class="content">&#8220;好了，那你说说比你好的人为什么比你强？&#8221;</p><p class="content">&#8220;我觉得他非常努力，工作很多年了还在学习各种构架，水平很高。&#8221;于是Simon就问那最后一个问题。果然，小伙子回答的是要成为构架师。大概70％的人想成为构架师。但是构架师是什么呢？</p><p class="content">Simon问道：&#8220;那你为什么要成为构架师呢？&#8221;</p><p class="content">小伙子一愣，大概还没有人这么置疑过他。&#8220;年纪大了，不能老写程序吧。&#8221;这个回答，让Simon想起关于他对什么是老的定义：当你希望做年轻人做的事情时，你就还年轻；如果你希望做老年人做的事情，你就老了。这和你出生了多长时间是没有关系的。</p><p class="content">Simon接着问：&#8220;好吧，那你说说你成为构架师以后，每天都会做什么？&#8221;</p><p class="content">小伙子说：&#8220;我还没想过，不过，我想应该主要是需求分析，设计构架吧&#8230;&#8230;&#8221;这大概是现在年轻人的通病，年轻人很容易追逐一些自己也不清楚的目标。</p><p class="content">Simon问：&#8220;那设计构架具体都做些什么呢？&#8221;</p><p class="content">小伙子这次的回答是：&#8220;比如，选择程序框架，决定用Spring或Struts等等。&#8221;</p><p class="content">&#8220;哦，那我问你，你怎么说服别人是用Spring还是Struts呢？&#8221;</p><p class="content">&#8220;如果我有经验，我会知道哪个更好&#8230;&#8230;&#8221;</p><p class="content">&#8220;是吗，但关于Spring或Struts的知识任谁都可以很容易得到。如果别人不同意你的建议，你怎么说服他？如果同意你的建议，那你不过是作出了和别人一样的认识，别人又凭什么认可你呢？&#8221;</p><p class="content">小伙子没想过构架师日子里还有一个说服人的工作，说：&#8220;我是构架师，我应该有权力做决定吧？&#8221;</p><p class="content">Simon想起权力的三种层次，第一层，任命；第二层，专业；第三层，品德。</p><p class="content">Simon问：&#8220;如果在一个成熟的软件企业里没有你所想象的构架师呢？或者说，构架师这种职业已经死亡或消失了呢？你会怎么定位你的职业？&#8221;</p><p class="content">小伙子显得很震惊。</p><p class="content">Simon画了一个系统构架，然后又给小伙子看了一段代码。</p><p class="content">&#8220;那一个更难懂？&#8221;Simon问。</p><p class="content">小伙子指着代码说：&#8220;代码难懂。&#8221;</p><p class="content">Simon的解释是：&#8220;这就是为什么实际上所谓的构架师不存在的原因。一个更简单的东西怎么会更有价值呢？每个人都能够画出这种构架图，但不是每个人都能写出好的代码。&#8221;</p><p class="content">送走了小伙子，Simon有点难受。他有点喜欢这个小伙子，但是，这又是一个被愚蠢的教育和误人子弟的技术杂志污染的家伙。Simon在自己的笔记本中加了一句话：中国程序员最愚蠢的认识之三：我想当构架师。前面两个赫然是：</p><p class="content">35岁后写不动程序了；</p><p class="content">我只要做Java（C＋＋）；</p></span><img src ="http://www.cppblog.com/KGen/aggbug/104041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/KGen/" target="_blank">眩晕:C++ & Embed</a> 2009-12-25 12:11 <a href="http://www.cppblog.com/KGen/archive/2009/12/25/104041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DirectUIHWND:Windows界面编程的终点?</title><link>http://www.cppblog.com/KGen/archive/2009/12/19/103533.html</link><dc:creator>眩晕:C++ &amp; Embed</dc:creator><author>眩晕:C++ &amp; Embed</author><pubDate>Sat, 19 Dec 2009 09:43:00 GMT</pubDate><guid>http://www.cppblog.com/KGen/archive/2009/12/19/103533.html</guid><wfw:comment>http://www.cppblog.com/KGen/comments/103533.html</wfw:comment><comments>http://www.cppblog.com/KGen/archive/2009/12/19/103533.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/KGen/comments/commentRss/103533.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/KGen/services/trackbacks/103533.html</trackback:ping><description><![CDATA[近年的样机开发正接近尾声。现在回头看看回顾界面库开发走过的历程，觉得走了不少弯路，积累了不少经验。<br>昨天查找了一些界面库的资料，忽然有种豁然开朗的感觉。关键字是&#8220;DirectUIHWND&#8221;。<br><br>众所周知，在Windows界面开发中，使用VC中一般的控件很难达成好的界面效果。同时，控件的功能和效率都很难令人满意。<br><br>在今年的开发中，决定在Wince上实现一个符合MVC的应用框架。其中View层搭建在MFC框架之上。所有的&#8220;窗体&#8221;、&#8220;控件&#8221;都从CWnd继承，<br>拥有自己的消息循环和DC。<br>这个设计的主要问题是：<br>1.内存占用。<br>2.运行时效率。<br>3.无法有效的进行双缓绘图。<br>4.各控件的GDI对象相关操作过于频繁造成内存碎片。<br><br>经过多次改进，当前的设计方式已经改为：<br>1.只有一个实际窗体。保持全局DC和相关的一些GDI对象。统一管理、操作。<br>2.各逻辑窗体、控件不继承自CWnd。刷新等操作完全由实际窗体进行。<br>3.实际窗体与逻辑窗体配合，实现各逻辑窗体的消息响应机制。<br><br>这种设计方法，正好与DirectUIHWND的基本设计思想暗合。<br><br>下面是DirectUIHWND相关的一些信息：<br><div><span  style="font-family: Tahoma; font-size: 12px; line-height: 19px; ">&#8220;DirectUIHWND&#8221;，意为Paint on parent dc directly。 即子窗口不以窗口句柄的形式创建，只是逻辑上的窗口，绘制在父窗口之上。这种方式最大的好处在于可以很方便的构建高效，绚丽的界面。国外如微软，国内如腾讯，百度等公司的客户端产品多采用这种方式来界面，从而很好的将界面和逻辑分离，同时易于实现各种超炫的界面效果如换色，换肤，透明等。DirectUI界面库旨在满足客户端界面快速开发的需要，同时融入业界领先的皮肤技术，为用户创建更加高效，专业的界面。</span></div><div><br>绕了这么大一圈，结果竟是殊途同归。当发现这些信息的时候，界面库已经基本修改完毕。</div><img src ="http://www.cppblog.com/KGen/aggbug/103533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/KGen/" target="_blank">眩晕:C++ & Embed</a> 2009-12-19 17:43 <a href="http://www.cppblog.com/KGen/archive/2009/12/19/103533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Wince下的内存问题</title><link>http://www.cppblog.com/KGen/archive/2009/12/10/102925.html</link><dc:creator>眩晕:C++ &amp; Embed</dc:creator><author>眩晕:C++ &amp; Embed</author><pubDate>Thu, 10 Dec 2009 08:20:00 GMT</pubDate><guid>http://www.cppblog.com/KGen/archive/2009/12/10/102925.html</guid><wfw:comment>http://www.cppblog.com/KGen/comments/102925.html</wfw:comment><comments>http://www.cppblog.com/KGen/archive/2009/12/10/102925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/KGen/comments/commentRss/102925.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/KGen/services/trackbacks/102925.html</trackback:ping><description><![CDATA[

内存问题并不是单单出现在Wince操作系统上。对于C++程序员来说，手动管理内存既幸福又痛苦。<br>幸福感是有机会完全掌握程序的命运，痛苦则发生在命运偏离了设计的轨道。<br><br>内存问题是多种多样的，过去非常关注内存泄露问题，对内存碎片问题完全没有概念。在新设备的开发中，由于界面部分大量涉及到GDI编程，<br>在设备开发的初期就开始着手进行界面框架的开发。起初一切都很顺利，构建了一个基于MFC的符合MVC结构的框架。框架也没有出现内存泄露<br>的迹象。<br><br>到了系统测试的阶段，发现某个应用长时间使用后出现内存不足。按照一般惯例，先进行应用程序的内存泄露的查找，未果。然后进行驱动等<br>层面的排查，也没有发生内存泄露的迹象。最后将问题定位于界面框架的绘图部分。发现频繁的GDI对象的创建和销毁造成了每次以4K为单位的<br>内存消耗。从网络上查询的结果表明，这种情况是内存碎片造成的。<br><br>现在回头再看这一问题，感觉起初实在是对开发的难度估计不足。开发队伍中不是偏底层驱动开发的工程师，就是偏业务开发的工程师。对较为<br>复杂的应用框架开发大家都没有经验。这样难免出现预想不到的复杂问题。<br><br>作为解决方案，其实也很简单，就是一句话，在程序中建立全局内存使用机制，自行监控、管理内存及GDI对象。避免频繁的内存分配和GDI创建、销毁操作。<br><br>追记：<br><br>1.分配、释放内存时，采用&#8220;栈式&#8221;。即分配时顺序为1，2，3；释放时顺序则应外3，2，1。这种方式可以有效避免内存碎片。<br>2.MFC的DC相关操作，如CreateDC,ReleaseDC的频繁成对调用，会造成内存碎片。而SDK的相关操作，则不会产生内存碎片。<br>3.CFont和CBrush等的DeleteOjbect操作对内存泄露和内存碎片等问题并无实质影响。要注意Select操作，CreateFont操作。<br><br>问题还在解决中&#8230;&#8230;<img src ="http://www.cppblog.com/KGen/aggbug/102925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/KGen/" target="_blank">眩晕:C++ & Embed</a> 2009-12-10 16:20 <a href="http://www.cppblog.com/KGen/archive/2009/12/10/102925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SourceMonitor 可用于C++开发的免费代码度量工具</title><link>http://www.cppblog.com/KGen/archive/2009/09/26/97281.html</link><dc:creator>眩晕:C++ &amp; Embed</dc:creator><author>眩晕:C++ &amp; Embed</author><pubDate>Sat, 26 Sep 2009 05:08:00 GMT</pubDate><guid>http://www.cppblog.com/KGen/archive/2009/09/26/97281.html</guid><wfw:comment>http://www.cppblog.com/KGen/comments/97281.html</wfw:comment><comments>http://www.cppblog.com/KGen/archive/2009/09/26/97281.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/KGen/comments/commentRss/97281.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/KGen/services/trackbacks/97281.html</trackback:ping><description><![CDATA[





<div>代码度量（Code Metric)属于软件度量(Soft Metric）的范畴。很多人希望能够统计自己源码工程中的代码行数，实际上这就是Code Metric的初级形式。在很多开发标准中，都定义了Metric相关内容。如IEEE、CMM/CMMI。</div><div>Code Metric有若干重要指标。一款开源的Metric分析软件C and C++ Code Counter的分析报告书中阐述了如下指标：</div><div><br></div><div><span style="font-family: simsun; ">&nbsp;&nbsp; &nbsp;NOM = Number of modules<br>&nbsp;&nbsp; &nbsp;LOC = Lines of Code<br>&nbsp;&nbsp; &nbsp;COM = Lines of Comments<br>&nbsp;&nbsp; &nbsp;MVG = McCabe's Cyclomatic Complexity<br>&nbsp;&nbsp; &nbsp;L_C = Lines of code per line of comment<br>&nbsp;&nbsp; &nbsp;M_C = Cyclomatic Complexity per line of comment<br>&nbsp;&nbsp; &nbsp;IF4 = Information Flow measure</span></div><div><br></div><div>顾名思义，NOM是模块数量，即源码工程中包含多少模块。LOC是代码行数，这里不包括空行和注释。COM是注释行数。MVG是复杂度。L_C是每行注释代码行数，M_C是每行注释复杂度。IF4，信息流测定。（由于没有找到中文的翻译和释义，仅凭个人理解罗列翻译）</div><div>微软的VSTS2008提供Metric功能，但无法针对C++使用。CCCC(C and C++ Code Counter)似乎已经停止维护，命令行模式，不易使用。一些商用工具功能强大但过于昂贵。</div><div>SourceMonitor是一个不错的选择：<br>※免费使用<br>※Windows下GUI界面<br>※功能较为强大，可保存用于比较的基线（Baseline）<br><br><a href="http://www.campwoodsw.com/index.html" style="color: rgb(204, 0, 102); text-decoration: underline; background-color: rgb(245, 245, 245); ">http://www.campwoodsw.com/index.html</a><br><br><br></div><div>参考资料：<br><a href="http://blogs.msdn.com/fxcop/archive/2007/02/28/announcing-visual-studio-code-metrics.aspx">http://blogs.msdn.com/fxcop/archive/2007/02/28/announcing-visual-studio-code-metrics.aspx</a>&nbsp;&nbsp;C# Code Metrics<br><a href="http://en.wikipedia.org/wiki/Software_metric">http://en.wikipedia.org/wiki/Software_metric</a>&nbsp;维基百科Software Metric<br><a href="http://blog.csdn.net/summerfang/archive/2006/09/04/1176916.aspx">http://blog.csdn.net/summerfang/archive/2006/09/04/1176916.aspx</a>&nbsp;使用source monitor帮助进行代码重构&nbsp;<br><br></div><div>追记：<br>1.UTF编码的文件将不被识别和读取。CCCC和SouceMonitor都存在这个问题。SourceMonitor有相关的选项，可能是我操作问题，失败了&#8230;&#8230;<br>2.SouceMonitor统计出来的代码行数偏低。主要原因可能是没有计算大括号&#8230;&#8230; 在我目前开发的项目中，根据现有的编码规范，是否计算大括号的统计差异为40%。<br>3.适当的使用CCCC也是不错的。有些统计值CCCC较为完整。</div><img src ="http://www.cppblog.com/KGen/aggbug/97281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/KGen/" target="_blank">眩晕:C++ & Embed</a> 2009-09-26 13:08 <a href="http://www.cppblog.com/KGen/archive/2009/09/26/97281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>