﻿<?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++博客-Ｆｌｙｘｘ的个人Blog</title><link>http://www.cppblog.com/flyxx/</link><description>/* Rem @ 2006-11-23 19:40 by Ｆｌｙｘｘ： Furture将是数据的，高效的算法、先进的运算将支配这个新世界，一起提前enjoy！ */ </description><language>zh-cn</language><lastBuildDate>Sun, 05 Apr 2026 15:52:36 GMT</lastBuildDate><pubDate>Sun, 05 Apr 2026 15:52:36 GMT</pubDate><ttl>60</ttl><item><title>所有励志 心灵鸡汤 资料列表</title><link>http://www.cppblog.com/flyxx/archive/2012/02/26/166580.html</link><dc:creator>Ｆｌｙｘｘ</dc:creator><author>Ｆｌｙｘｘ</author><pubDate>Sun, 26 Feb 2012 12:01:00 GMT</pubDate><guid>http://www.cppblog.com/flyxx/archive/2012/02/26/166580.html</guid><wfw:comment>http://www.cppblog.com/flyxx/comments/166580.html</wfw:comment><comments>http://www.cppblog.com/flyxx/archive/2012/02/26/166580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flyxx/comments/commentRss/166580.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flyxx/services/trackbacks/166580.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 所有励志 心灵鸡汤 资料列表# 以下资料都可以通过# http://item.taobao.com/item.htm?spm=11046bQu.3-9gdVJ.h-41BX9T&amp;id=13758694690&amp;# 连接进行购买，以一整本书籍为单位。# 秘方！搜索书名或软件名称，并限定2-5元，你会发现可快速找到你要的书籍！# http://minsoft.taobao.com 祝您不...&nbsp;&nbsp;<a href='http://www.cppblog.com/flyxx/archive/2012/02/26/166580.html'>阅读全文</a><img src ="http://www.cppblog.com/flyxx/aggbug/166580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flyxx/" target="_blank">Ｆｌｙｘｘ</a> 2012-02-26 20:01 <a href="http://www.cppblog.com/flyxx/archive/2012/02/26/166580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>所有应用软件列表</title><link>http://www.cppblog.com/flyxx/archive/2012/02/26/166578.html</link><dc:creator>Ｆｌｙｘｘ</dc:creator><author>Ｆｌｙｘｘ</author><pubDate>Sun, 26 Feb 2012 11:04:00 GMT</pubDate><guid>http://www.cppblog.com/flyxx/archive/2012/02/26/166578.html</guid><wfw:comment>http://www.cppblog.com/flyxx/comments/166578.html</wfw:comment><comments>http://www.cppblog.com/flyxx/archive/2012/02/26/166578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flyxx/comments/commentRss/166578.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flyxx/services/trackbacks/166578.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: # 以下资料都可以通过# http://item.taobao.com/item.htm?spm=11046bQu.3-9gdVJ.h-41BX9T&amp;id=15419996752&amp;# 连接进行购买，以一整个软件为单位。都是自己多年收藏的&#8220;可用&#8221;，&#8220;安全&#8221;，可&#8220;永久使用&#8221;的软件。# 而且一直使用Macfee和36...&nbsp;&nbsp;<a href='http://www.cppblog.com/flyxx/archive/2012/02/26/166578.html'>阅读全文</a><img src ="http://www.cppblog.com/flyxx/aggbug/166578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flyxx/" target="_blank">Ｆｌｙｘｘ</a> 2012-02-26 19:04 <a href="http://www.cppblog.com/flyxx/archive/2012/02/26/166578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>所有电子书籍列表</title><link>http://www.cppblog.com/flyxx/archive/2012/02/26/166577.html</link><dc:creator>Ｆｌｙｘｘ</dc:creator><author>Ｆｌｙｘｘ</author><pubDate>Sun, 26 Feb 2012 11:02:00 GMT</pubDate><guid>http://www.cppblog.com/flyxx/archive/2012/02/26/166577.html</guid><wfw:comment>http://www.cppblog.com/flyxx/comments/166577.html</wfw:comment><comments>http://www.cppblog.com/flyxx/archive/2012/02/26/166577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/flyxx/comments/commentRss/166577.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flyxx/services/trackbacks/166577.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: # 以下资料可以通过# http://item.taobao.com/item.htm?spm=11046bQu.3-9gdVJ.h-41BX9T&amp;id=13758694690&amp;# 连接进行购买，以一整本书籍为单位。# 秘方！搜索书名或软件名称，并限定2-5元，你会发现可快速找到你要的书籍！# http://minsoft.taobao.com 祝您不断进步！# 本店Books类目...&nbsp;&nbsp;<a href='http://www.cppblog.com/flyxx/archive/2012/02/26/166577.html'>阅读全文</a><img src ="http://www.cppblog.com/flyxx/aggbug/166577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flyxx/" target="_blank">Ｆｌｙｘｘ</a> 2012-02-26 19:02 <a href="http://www.cppblog.com/flyxx/archive/2012/02/26/166577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工欲善其事，必先利其器 －关于编程风格</title><link>http://www.cppblog.com/flyxx/archive/2006/11/28/15720.html</link><dc:creator>Ｆｌｙｘｘ</dc:creator><author>Ｆｌｙｘｘ</author><pubDate>Tue, 28 Nov 2006 03:36:00 GMT</pubDate><guid>http://www.cppblog.com/flyxx/archive/2006/11/28/15720.html</guid><wfw:comment>http://www.cppblog.com/flyxx/comments/15720.html</wfw:comment><comments>http://www.cppblog.com/flyxx/archive/2006/11/28/15720.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/flyxx/comments/commentRss/15720.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/flyxx/services/trackbacks/15720.html</trackback:ping><description><![CDATA[
		<h2>
				<a id="_1f7bfca2aa6d_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl" href="http://www.cnblogs.com/flyxx/archive/2006/11/27/573517.html">
						<font color="#000080">工欲善其事，必先利其器 －关于编程风格</font>
				</a>
		</h2>
		<div class="postbody">
				<p style="COLOR: #0000ff; FONT-FAMILY: Courier">
						<font color="#000080">工欲善其事，必先利其器<br />    我觉得一个优秀的程序员，首先应该有个好的编程风格，我承认，编码除了实现自己设计意图的过程外，也是一个“加密”的过程，这个加密过程远比使用MD5的加密效果还要好的。<br />    看一个编程风格不好的代码，有如破解密码，破解密码我们有现成的工具，算法和字典，还算好。可是在面对“加密”过后的代码。如果想破译的话，那么只能使用最原始的方法和方式。用自己的脑子一点一点缕顺层次和逻辑关系了，如果是随便翻翻还可以，看其精华部分就可以了，如果是自己工作当中遇到这样的代码，又必须弄清，则实为不幸了。<br />    如果你想加密的你的代码，那么找一个没有编程经历，且熟悉多国语言，特别是还不是很精通所掌握语言的人来帮你，效果一定非常好，并且是不可逆的软件加密工程，十天二十天后，不说别人，就是你自己也会发现，再看不懂自己写的代码了。<br />    代码现在来说还是手工制成品，它的功效可以通过CMM，标准流程，评审，测试予以保证，但是其效率和美观就完全在乎于作者了，好在我一开始的时候读到了一篇关于代码风格的文章，对我影响较深，一直一来都按牢记着文章中的要点，我也是实在不愿意看到自己的作品杂乱，所以比较注意，再一我对算法非常感兴趣，所以看到言简意赅的算法总是爱不释手，这些代码虽然简练，透着作者的功底，另一方面却有着非常好的风格体现着他的逻辑。记得自己对下面这段精美代码代码曾欣赏不已。<br />    char *strcpy(char *strDest, const char *strSrc);<br />    {<br />        assert((strDest!=NULL) &amp;&amp; (strSrc !=NULL));<br />        char *address = strDest;<br />        while( (*strDest++ = * strSrc++) != ‘\0’ )<br />           NULL ;<br />        return address ;<br />    }<br />    今天我就读到了一个不算好的工程代码，逻辑烦杂，命名混乱，一定是多个坚持且有个性的人完成的，变量名称、消息类型、有各式各样的风格，有不够严格的匈牙利法，也有严格的××人专用法，大量的数组长度，消息长度没有通过宏定义，还有很多直接打印的语句，如_dbException( dbPrn,mtPrnNor_M,(PCHAR)"_mhdOnLoadReq sizeof(req) over 15000! " );直接写死了数值？！如果这个请求大小扩大后，作者是否还能找到这行代码，并把其中的16000改成扩大后的数值么？这个工程有70万多行，相信不是件易事。今天读到的只是这个工程中的一小部分，想想即使70多万行的工程都精美绝伦，虽然运行正确，但就因为有这么一小块的不规范代码，就致使其不可能移植，没有人愿意改造它或是敢去改造这个已经商用的工程，非常的可惜,让70万行的精华损失殆尽！所以代码风格的作用是非常重要的。代码是手工制品，但是大多工艺品都是手工制品，为何不让你的作品能卖个好价钱？<br />    看到这些代码，觉得有必要总结出来，用于自己即将开始的一个软件产品特写了一些要点注意，还未整理完成。<br />=======================================================================================================<br />|Describe |tag                |remark<br />|=========+===================+=============================================================================<br />|模块     |Mdl                |不用modle，太长；<br />|表       |Tbl                |不用Table，太长；<br />|字段/属性|field              |不用attribut，因为引起歧异；不简写<br />|元组/记录|tuple              |不用rec或record，因为引起歧异；不简写<br />|结构标签 |TB*_T              |如：“typedef struct TBTDistrParam_T{”,定义结构一定要有标签,且和结构体同名，有利于si快速定位<br />|结构名   |TB*_T              |如：“}TBTDistrParam_T”，使用_T后缀代表其为结构体<br />|结构指针 |_FAR* LP_TB*_Ttb*()|如：“ _FAR* LP_TBTDistrParam_T”,定义结构时必须定义该此类型指针，方便定义指针变量 LP_TBTDistrParam_T lpDest；<br />|状态     |Stat               |不用Status，太长；<br />|系统函数 |tb_模块_名词动词   |首名词大写，如：“tb_SystemInit(),tb_env_SystemInit()”，不能使用“tb_system_init()”,太长<br />|普通函数 |tb_名词动词        |首名词大写，如：“tb_OutPrint()”，<br />|宏函数   |TB_*               |大写，如“#define  TB_ASSERT(e) ((e) ? (void)0 : tb_assert(#e, __FILE__, __LINE__))”<br />|文件名   |模块+含义          |文件名小写，如“db_init.c ,log_init.h"<br /></font>
				</p>
				<p style="COLOR: #0000ff; FONT-FAMILY: Courier">
						<font color="#000080">   关于风格，不得不提到的就是匈牙利发，匈牙利法是一个比较完善和严谨的命名方法，传闻微软也采用该方法，但是也有缺点，就是会导致名称过长，在用到转义的时候会歧异。鉴于这些，较好的做法是取其精华，在对指针，结构函数名称上使用匈牙利命名方法。其他时不刻意使用，特别是不能用该法限定自己的变量无法转义。<br />    在文章尾部有一个自己写的系统中的例子供指点。供指点，谢谢！</font>
				</p>
				<p style="COLOR: #0000ff; FONT-FAMILY: Courier">
						<font color="#000080">    /******************************************************************************<br />    * Copyright (c) Chen Lei Individual 2004. All Rights Reserved.<br />    *<br />    * 文件名称：基础函数代码库<br />    * 文件标识：basefun.c<br />    * 摘    要：定义了经常用到的有用子函数的代码实现<br />    * 当前版本：3.1 for HP<br />    * 作    者：陈 雷<br />    * 完成日期：2005-1-17 1:24<br />    *<br />    * 更改记录：MM/DD/YY<br />    *  chenlei  08/24/06 - 修改了getLower()，因为执行不对<br />    *  chenlei  07/26/06 - 增加setprecision(),changeprecision()<br />    *  chenlei  04/14/06 - 增加getDateDiff(),getCmdOutput()<br />    *  。。。<br />    ******************************************************************************/<br />    #ifdef __HP__<br />    #include "hp_specific.h"<br />    #endif<br />    <br />    #ifdef __SUSE__<br />    #include "suse_specific.h"<br />    #endif<br />    <br />    #ifdef __SORLARIS__<br />    #include "solaris_specific.h"<br />    #endif<br />    <br />    #ifdef __AIX__<br />    #include "aix_specific.h"<br />    #endif<br />    <br />    /******************************************************************************<br />    *  函数名称 ：StringToInt(const char* cpString, int* iValue)<br />    *  摘    要 ：将字符串变为数字<br />    *  输入参数 ：cpString:字符串<br />    *  输出数值 ：0     转换成功;-1     转换失败<br />    *  备    注 ：#cpString = "23";<br />                iRet = StringToInt(cpString, iValue);<br />                iRet = 0;<br />                iValue = 23;<br />                #cpString = "23w";<br />                iRet = StringToInt(cpString, iValue);<br />                iRet = -1;<br />                iValue = 23;<br />    ******************************************************************************/<br />    int StringToInt(const char* cpString, int* iValue)<br />    {<br />        int i;<br />        for (i=0; i&lt;SafeStrLen(cpString); i++)<br />        {<br />            if ((cpString[i] &gt; '9') || (cpString[i] &lt; '0'))<br />            {<br />                *iValue = atoi(cpString);<br />                return -1;<br />            }<br />        }<br />        *iValue = atoi(cpString);<br />        return 0;<br />    }</font>
				</p>
				<p style="COLOR: #0000ff; FONT-FAMILY: Courier">
						<font color="#000080">Ｆｌｙｘｘ  2006-11-25 23:10:13  </font>
						<a href="http://flyxx.cnblogs.com/">
								<font color="#000080">http://flyxx.cnblogs.com</font>
						</a>
				</p>
		</div>
<img src ="http://www.cppblog.com/flyxx/aggbug/15720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/flyxx/" target="_blank">Ｆｌｙｘｘ</a> 2006-11-28 11:36 <a href="http://www.cppblog.com/flyxx/archive/2006/11/28/15720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>