程序经验总结大全

《代码大全》学习笔记 一、《代码大全》简介 Programmingis neither fully anart nor fully a science. As it's typically practiced, it'sa "craft"that's somewhere between art and science. At its best, it'san engineeringdiscipline that 阅读详情

-

-

-

本文背景:

如果在每一次做项目后,都能把期间遇到的问题或者经验总结下来,相信随着时间的推移会有相当的积累,就算利息吧。

本文目的:

本文将不断更新。内容分为:编码规范、内存管理、异常处理等章节,也会不断更新。

本文内容:

1.编码规范

1.1 命名规则

我们知道,匈牙利命名规则有着两面性,一方面它使得程序具有较高的可读性;而另一方面,它使得当需要更改变量类型时,额外修改的工作增加。以下是常用数据类型的匈牙利表示法,根据你的公司要求可能有所不同。

 

数据类型

前缀

注解

Global Data

g_

 

Constant Data

c_

 

Static Data

s_

 

Class Member

m_

 

 

 

 

char

c

 

int

i/n

 

short

n

 

long

l

 

byte

by

 

unsigned

u

 

bool

b

 

char[]

sz

 

WORD

w

 

DWORD

dw

 

double

d

 

float

f

 

string

s

 

void

v

 

Handle

h

 

Pointer

p

 

Array

a

 

 

1.2 常量定义

·        如果变量不会被改变值,请用const;

·        如果期间用到的数字有特殊意义或出现若干次,请定义一个const变量;

·        当定义方法时,请思考以下问题:方法中的参数会不会被改变,如果不会,请定义为const;

·        尽量不用宏定义,用const变量代替可以拥有类型检查;

例子:

HRESULT FUNC1(const unsigned char* const pBuffer,bool& bProcess).

 

1.3 可读性编程

·        简单未必好

用if-else代替?: 增加可读性。

·        If-else 一定以{}开始和结束

尽管if后面只有一句话,也要用{}。

例子:

If (somthing)

{

    i++;

}

 

2.内存管理

2.1 释放内存

·        主动分配

当使用 New 或 Malloc等分配内存时,需要主动的释放不用的内存,以防内存泄露。

如果你对内存管理很感兴趣,请参考本人博客:

http://blog.youkuaiyun.com/yeming81/archive/2008/01/19/2052311.aspx

 

·        函数返回指针

      当你调用的方法内部主动分配一个堆内存,然后返回一个指针引用给你时,你需要在用完后释放它,否则会出现内存泄露。

            例子:

             char* pContent=_com_util::ConvertBSTRToString(bstrContent);

            use the pContent to do something;

             delete pContent;

 

·        在方法返回前释放所有资源

当你从方法中返回时,不要忘记释放之前分配的所有资源,包括各种文件句柄资源。

当你在方法中间因为异常返回时,常常会忘记这一点。

例子:

Int Function1()

{

   char[] sz=new char[1024];

   //do something special

   If()

   {

       //remember to do this

       delete sz; 

       return -1;

   }

   //do something special

   delete sz;

}

 

·        使用智能指针 Smart Pointer 代替普通接口

你不必要担心内存释放,因为智能指针会自动释放。

//不要使用它

IMyInterface pInterface //智能指针

CComPtr<IMyInterface > pInterface;

 

请注意,不要做如下操作

pInterface=NULL, 否则智能指针无法释放内存。

 

·        使用 CComBSTR 代替 BSTR

使用BSTR时,你需要自己去释放内存:

BSTR bstrContent;

SysFreeString(bstrContent);

而使用智能指针你不用担心这个。

CComBSTR bstrContent;

 

3.异常处理

·        检查方法返回值

当调用一个方法时,思考这个问题,我是否需要检查返回值去处理异常的情况;虽然可能不会出现问题,但是最好还是做一下检查。

 

·        使用指针之前检查一下是否为NULL

以防抛出空指针异常,请在使用前检查指针的值是否为NULL

 

4.常用函数

4.1文件操作

·        按行读取文件

Ifstream.getline(char* pChar, int size)

当文件一行的长度大于size缓冲时,文件指针不会继续往下移动。

解决办法,用另外一个函数代替:

getline(ifstream&, string)

 

---文章结束

 

探索微信古诗大全小程序完整源码 在当今数字化浪潮中,微信小程序作为一种新型的应用形式,其便捷性和易用性使其迅速崛起,并对移动应用市场产生了深远的影响。本章节将探讨微信小程序的发展历程、市场趋势、特点及优势,并与传统APP进行对比分析。在构建一个古诗资源查询与学习平台时,搜索、详情和作者介绍是用户与内容互动的核心功能。本章节将深入探讨这些功能的设计、实现及其优化策略。作者介绍功能需要向用户提供作者的详细信息,包括但不限于生平、其他作品和历史背景。需求分析应该包含:详尽的作者资料。 阅读详情

相关推荐

Qt加载百度地图详细流程(附带报错解决方法)

一篇文章看懂Qt如何加载出百度地图......

qq_60018273的博客 1606

“8岁学编程,入行近40年,我总结了15条程序员经验宝典”

无关技术,只谈感受

程序人生的博客 1万+

【数据集处理】DroneVehicle数据集处理方法

DroneVehicle数据集由无人机采集的56,878张图像组成,其中一半是RGB图像,其余为红外图像。作者为这五个类别制作了带有定向边界框的丰富注释。

qq_44102942的博客 5048

Spring AOP Demo(注解和非注解配置) Spring版本5

default*.html加载spring的配置文件spring web的监听器 IOC开始配置过滤器 中文字符过滤器encodingUTF-8/*配置springmvc的核心servlet1。

2401_84046895的博客 632

AI应用架构师实战:高等教育智能课程推荐系统开发

性能:选课季并发量达1000QPS,推荐响应时间≤500ms(否则学生不耐烦)。数据隐私:符合《教育数据安全管理规范》,学生姓名、学号等敏感信息需匿名化存储。可扩展性:支持新增课程类型(如MOOC、实践课)、新增数据源(如竞赛获奖记录)。教育AI要“以教为中心”:不能纯技术驱动,要和教育工作者深度合作(如教师参与定义课程的前置关系)。数据是核心:数据质量决定推荐效果,要重视数据治理和隐私保护。持续迭代:教育需求是动态的(如每年新增课程、学生目标变化),要定期收集用户反馈,更新模型和策略。张三。

AI大模型应用之禅 1349

【游戏开发】初识寻路&navmesh,探索RecastDemo

在手游时代,尤其对于大世界游戏而言,寻路的实现基本在专门的寻路服务器上进行。在众多寻路的解决方案中,recastnavigation是最为经典实用的一个,很多游戏甚至游戏引擎都采用类似的实现。recastnavigation项目自带了RecastDemo,用图形化的界面帮助用户认识寻路网格(navmesh)的生成以及寻路的过程。因此,作为初学者的笔者,也决定通过RecastDemo去初步认识寻路的机理奥秘。 构建RecastDemo 首先克隆recastnavigation项目,从文档中可以看到Recast

HiKariのTechLab 3056

程序运行的总结

我们学习语言,第一步无非是想让程序跑起来,如果能深入形象化的理解程序这个过程,后面设计框架、优化将起到事半功倍的效果。 假设我们自己就是一个计算机,我们如何认识程序?抱歉,我不认识程序,C语言、JAVA、C++、PYTHON??过于复杂了。。我只认识我自己的母语也就是native,这里的母语也就是机器语言。这时候编译器就起了一个重要的作用,把各种语言写的源代码转为了obj(目标文件) 这时候,计算机就认识了。 到这一步,计算机是认识了,但是并不可执行,这时候链接器就随之出现了,它将多个目标...

qq_35836473的博客 265

树莓派3-改装wifi外置天线

声明:本文只是技术性探讨,改装引起的产品损坏等后果,由用户自负! 改装主要有两种方法 方法一:直接替换原来的天线 1、移除原有的小陶瓷天线,就在Made in PRC(或UK)那边的那个 清理一下阻焊剂方便天线接地(图中PRC左侧) 2、焊接天线 天线的屏蔽层焊接到清理完阻焊剂的地方,中间的信号线焊接到PRC右侧焊盘。 3、最终的样子

huayucong的博客 2万+

C程序设计知识总结

C程序设计 知识点总结

zhangziyang0505的博客 1703

高云FPGA系列教程(4):片上逻辑分析仪GAO的使用

STM32等单片机,使用J-Link或ST-Link等调试器,可以进行在线调试,由于C代码是顺序执行的,我们可以插入断点,让程序停在我们需要的位置,或者是实时查看一些变量的数值,大大提高了我们Debug的速度,提高产品的开发效率。,连接到FPGA芯片的外部管脚上,如果想查看内部信号,还需要把这些信号定义成Output引出到外部管脚进行了测量,如果是多位数据,这样就会占用大量的管脚,但是此类工具有个优点就是支持多种协议解析,可以非常方便的查看协议的报文数据。当所有的仿真没问题了,才能进行最后一步:板级调试。

whik1194的博客 5032

【华为OD机试真题】18、喊7的次数重排 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >喊7是一个传统的聚会游戏,N个人围成一圈,按顺时针从1到N编号。   编号为1的人从1开始喊数,下一个人喊的数字为上一个人的数字加1,但是当将要喊出来的数字是7的倍数或者数字本身含有7的话,不能把这个数字直接喊出来,而是要喊”过”。   假定玩这个游戏的N个人都没有失误地在正确的时机喊了”过”,当喊到数字K时,可以统计每个人喊”过”的次数。   现给定一个长度为N的数组,存储了打乱顺序的每个人喊”过”的次数,请把它还原成正确的顺序,即数组的第i个元素存储编号i的人喊

KJ.JK 4168

史上最全C语言各章总结(适合小白)

第1章 C语言概述 1.1 重点内容提要 1.1.1 C程序的组成 1.C程序组成 C程序是由函数构成的,一个C源程序至少有一个函数,即main函数,也可以由一个main函数和若干个其他函数构成。 2.C程序中函数之间的关系 构成C程序的函数有两大类:一类是主函数,另一类是子函数。在主函数和子函数之间,主函数可以调用子函数,而子函数不能调用主函数;在子函数之间可以彼此调用,没有层次之分。 1.1.2 函数的组成 1. 函数的首部 函数首部包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。 2.函

皮皮不调皮的博客 5680

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

【亲测免费】 ico程序图标大全:程序员的视觉盛宴

ico程序图标大全:程序员的视觉盛宴 【下载地址】ico程序图标大全 此资源集合是广大程序员的福音,包含了多年积累的编程图标精华。这些图标专为软件开发者设计,提供了多样化的选择来美化您的应用程序界面。图标以ico格式呈现,支持多种尺寸,包括16x16、24x24、32x32以及48x48,确保能够适应不同场景下的显示需求...

gitblog_09711的博客 950

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

《代码大全》到底讲什么?

    《代码大全 (中文版)第二版》到底讲什么?她讲的是哪种编程语言?C、C++、Java、C# 还是 Visual Basic?列出的代码全吗?我能从中直接copy&paste代码到自己的项目中吗?这本书英文名叫“Code Complete”,其中 code 是代码,complete 是“完成”的意思。code complete 就是“写完了所有代码,可以开始系统测试”的这么一个时段,与之对应

陈硕的Blog 3万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【免费下载】 ico程序图标大全

此资源集合是广大程序员的福音,包含了多年积累的编程图标精华。这些图标专为软件开发者设计,提供了多样化的选择来美化您的应用程序界面。图标以ico格式呈现,支持多种尺寸,包括16x16、24x24、32x32以及48x48,确保能够适应不同场景下的显示需求。 ## 图标特点 - **多尺寸兼容**:无论您需要在工具栏、菜单还是启动图标上应用,这套图标集都能完美适配。 - **透明背景**:采用透明

gitblog_09702的博客 1749

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java Nodejs python php美食大全订阅小程序设计与实现

美食大全订阅小程序在系统的智能手机上可以运行,主要实现了首页、个人中心、用户管理、菜系管理、口味管理、美食分类管理、美食信息管理、美食论坛、系统管理等主要功能模块的操作和管理。。此系统可以满足大多数用户所提出的问题,用户可以根据自身的需求获取相应的服务,为美食大全订阅小程序提供了快捷的途径。

QQ58850198的博客 748

十大滤波算法程序大全(精心整理版)【转载】

原始出处:http://blog.21ic.com/user1/5106/archives/2012/92879.html# 注:这篇也是转载的,故原始作者不详。 1、限幅滤波法 /**************************************************** *函数名称:AmplitudeLimiterFilte...

weixin_34273481的博客 5152

【免费下载】 微信小程序Icon图标素材大全

微信小程序Icon图标素材大全 【下载地址】微信小程序Icon图标素材大全 微信小程序Icon图标素材大全欢迎使用本仓库提供的微信小程序Icon图标素材大全!无论您是微信小程序的开发者还是设计师,这里汇集了丰富的图标资源,旨在帮助您快速找到适合您项目的图标素材 ...

gitblog_09776的博客 1707

《代码大全2》高质量子程序的5个关键点

洪流学堂,让你快人几步。 本篇内容来自洪流读书会精选内容。 本篇解读自计算机领域经典名著《代码大全2》。 高质量子程序的5个关键点 1、创建子程序最主要的目的是提高程序的可管理性,当然也有其它一些好的理由。其中,节省代码空间只是一个次要原因,提高可读性、可靠性和可修改性等原因更重要一些。 2、有时候,把一些简单的操作写成独立的子程序也非常有价值。 3、子程序可以按照其内聚性分为很多类,而你应该让大多数子程序具有功能上的内聚性,这是最佳的一种内聚性。 4、子程序的名字是它质量的指示器。如果名字糟糕但恰如其.

大智_Unity探路者 333

汉字大全20000个字_随时想用字典怎么办?这3个可随身携带的字典小程序你值得拥有...

字典是为字词提供 音韵、意思解释、 例句、 用法等等的工具书。随身携带字典比较麻烦,但是随身携带字典小程序还是比较轻松的,下面是小编为你带来的3个关于字典的小程序,希望你喜欢哦!1.成语词典汉字拼音故事大全字典成语词典汉字拼音故事大全字典,是一款微信小程序,从字面上看,便能了解到是于成语有关。我国文化博大精深,源远流长,尤其以成语最是经典,几乎每个成语的形成,都有其来源,可能是一个故事,也可能是形...

weixin_39596720的博客 3662

地籍cad的lisp程序大集合_cad常用的lisp程序大全.rar

【实例简介】cad常用的lisp程序大全.rar【实例截图】【核心代码】cad常用的lisp程序大全└── 应用小程序├── 32.LSP├── Acad1.lsp├── BDN.LSP├── BGAO.LSP├── BG.LSP├── BIAOZHU.LSP├── BRKTXT.LSP├── brt_pyj.lsp├── Brt-pyj.lsp├── Bs.lsp├── BTJ.LSP├── B...

weixin_39594439的博客 959

周公解梦全解大全查询AI周公流量主小程序开源版开发

总的来说,AI周公流量主小程序是一个功能丰富的解梦应用程序,通过人工智能技术和周公解梦全解大全,帮助用户理解和解释梦境中的符号和意义,同时提供心理测试和咨询服务,帮助用户更好地了解自己的内心需求和情绪状态。AI周公流量主小程序是一个专注于解梦的应用程序,它集成了周公解梦全解大全查询功能,可以帮助用户理解和解释梦境中的符号和意义。全面解读:对于每一个解梦结果,小程序提供了全面的解读和分析,包括梦境的象征意义、潜在的心理需求、预示未来的可能性等方面的解释,帮助用户更好地理解梦的涵义。

云起SAAS 2274

微信小程序的食谱大全美食推荐系统 php Nodejs java python

本次设计任务是要设计一个食谱大全“食全食美,通过这个微信小程序能够为用户提供更好的平台。系统的主要功能包括:用户、美食分类、口味信息、食谱信息等功能。管理员可以根据系统给定的账号进行登录,登录后可以进入食谱大全“食全食美,对食谱大全“食全食美所有模块进行管理。包括查看和修改自己的个人信息以及登录密码。该微信小程序为每一个用户都分配了一个用户账号,用户通过账号的登录可以在系统中查看口味信息、食谱信息及对个人信息进行修改等功能。

QQ402205496的博客 851

【亲测免费】 修罗轻论坛程序Xiuno+收费插件大全:为您的论坛注入活力

修罗轻论坛程序Xiuno+收费插件大全:为您的论坛注入活力 【下载地址】修罗轻论坛程序Xiuno收费插件大全 修罗轻论坛程序Xiuno+收费插件大全是专为Xiuno论坛用户打造的全套插件资源包。它集成了丰富的实用功能,帮助您轻松扩展论坛功能,提升用户体验。无论是增强互动性还是优化管理效率,这些插件都能满足您的需求。安装简...

gitblog_06772的博客 889

探索中华文化的瑰宝:《小程序古诗词大全》

探索中华文化的瑰宝:《小程序古诗词大全》 去发现同类优质开源项目:https://gitcode.com/ 在这个快节奏的时代里,偶尔停下来欣赏一下古人的智慧与才情不失为一种精神的洗礼。《小程序古诗词大全》就是这样一款专为你打造的文化宝藏,它将中华五千年文化的精髓浓缩在一个小巧的应用之中,让你随时随地感受诗词的魅力。 1. 项目介绍 《小程序古诗词大全》不仅仅是一个集合了大量古诗词和成语的知识库,...

gitblog_00057的博客 597
上一篇: 全面介绍Windows内存管理机制及C++内存分配实例(六):堆栈
下一篇: Decorator-装饰-对象
yeming81
博客等级 码龄19年 178粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值