代码改变世界

[置顶]【编写高质量代码:改善C++程序的150个建议 之 0.0】 不要让你的Main函数返回void

2012-01-12 15:33 by 凌云健笔, 743 阅读, 2 推荐, 收藏, 编辑
摘要:第1章 从C继承而来的C和C++语言可以说是在所有编程语言中关系最为紧密的两个。在目标上,C++被定位为A Better C;在名称上,C++有一个乳名叫做“C with classes”;在语法上,C更是C++的一个子集,C++几乎支持C语言的全部功能。如果采用C++的方法来描述,以下的方式恰如其分:1 class C{}; 2 class CPlusPlus :public C {};C++继承自C。正是这种难以割舍的紧密联系使得C/C++程序员必须对C有所重视。所以,本章就从C++的前身——C语言说起。在开始这段学习旅程前,先分享一个只有程序员才明白的幽默: 有一次,她和他开玩笑的问:“ 阅读全文

游戏开发框架图

2012-01-18 01:35 by 凌云健笔, 2746 阅读, 3 推荐, 收藏, 编辑
摘要:作为一个游戏的设计者开发者,你必须要时刻保持清醒的头脑,能够从宏观上把握整个游戏,知道游戏到底应该是什么样子。这是2010年做的一张图;这种图也是当时基于自己对客户端游戏的一些理解而画的;其主要说明游戏开发的主要框架。我将游戏开发划分成多个模块,这些模块一起构成了游戏的主框架:时至今天,虽然有些地方值得商榷,特别是针对一些新平台、新技术的游戏开发而言,但是其核心还是没变的。这里不做详细讨论。以此抛砖引玉,望各位大牛们热烈讨论!!作者: 凌云健笔出处:http://www.cnblogs.com/lijian2010/版权:本文版权归作者和博客园共有转载:欢迎转载,为了保存作者的创作热情,请按要 阅读全文

【编写高质量代码:改善C++程序的150个建议 之 7】 时刻提防内存溢出

2012-01-16 17:50 by 凌云健笔, 1621 阅读, 1 推荐, 收藏, 编辑
摘要:作为一个程序员,对于内存溢出问题你肯定不陌生,它已经是软件开发历史上存在了近40年的大难题。在内存空间中,当要表示的数据超出了计算机为该数据分配的空间范围时,就产生了溢出,就像在一个三升大的斗中装进五升的米,而溢出的多余数据就可以作为指令在计算机上大摇大摆地运行。不幸的是,这一不小心成了黑客们可利用的秘密后门,“红色代码”病毒事件就是黑客利用内存溢出攻击企业网络的“经典案例”。更有甚者言,操作系统中超过50%的安全漏洞都是由内存溢出引起的。众所周知,C/C++语言虽然是一种高级语言,但是其程序的目标代码却非常接近机器内核,能够直接访问内存和寄存器,这种特性大大提升了C/C++语言代码的性能,同 阅读全文

2012, I AM BACK...【编写高质量代码:改善C++程序的150个建议】

2012-01-02 15:13 by 凌云健笔, 384 阅读, 1 推荐, 收藏, 编辑
摘要:一年了,没有在园子更新博客了。现在我回来了,带着这一年的小小成果,我的处女作:【编写高质量代码:改善C++程序的150个建议】灰常感谢我的祖国。灰常感谢机械工业出版社的杨福川编辑和lisa编辑的大力支持与帮助。灰常感谢我的母校、我的导师,三年的时光让我学到了很多成长了很多。还要感谢我的亲人们(此处省略10000字)...关于本书,真心希望能帮助到我的读者们,希望那些建议真的给你们带来一些小小的改变。当然,由于本人水平有限,肯定有很多的错误,希望大家相互探讨共同进步。2012,我回来了,希望大家都能圆梦!! 阅读全文

“表驱动”那点事儿。。。Somethings About Table Driven Method

2010-12-16 16:43 by 凌云健笔, 2675 阅读, 6 推荐, 收藏, 编辑
摘要:1、为什么是“表驱动”?!  表驱动法,英文为Table driven method,是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。它是一种设计模式,可用来代替复杂的if/else或者switch-case逻辑判断。某种意义上说,任何信息都可以通过“表”来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了。 2、先看个例子。。  先看baidu 百科中的一个例子。一个比较笨的方法是循环的使用if语句,可以看出本来应该很简单的一件事情,代码却是这么冗余,解决这个的办法就可以用表驱动方法。[代码]  我们 阅读全文

任何时候都适用的20个C++技巧 <14-20> STL and Generic Programming

2010-12-09 13:54 by 凌云健笔, 2674 阅读, 2 推荐, 收藏, 编辑
摘要:标准模板库和通用编程  标准模板库(STL)给C++程序员编写代码的方式带来了革命性的影响。这样的代码重用将生产力水平提升到了更高的水平,节省了大量的时间,避免了重复性的劳动。然而,STL是一个具有特殊术语和复杂规则的、比较全面的框架,如果你想更好的去应用它,那么你只能去掌握它,“知己知彼方能百战不殆”吗。为了更深入地了解STL某些方面的情况,这大类中将包含6个小技巧。  第一个技巧将介绍一下STL的基本组成和一些关键术语。接下来的小技巧则集中于模板定义这一方面。正如你所知,模板是STL容器和算法最基础的“建筑材料”。接下来的三个小技巧将依次描述如何使用标准库中应用最为广泛的容器 - vect 阅读全文

开放平台赐予我们“独立的力量”!!!

2010-12-07 18:21 by 凌云健笔, 1321 阅读, 2 推荐, 收藏, 编辑
摘要:引言  腾讯社区开放平台(http://opensns.qq.com/)、盛大开放平台(http://open.sdo.com/)、百度游戏开放平台(http://youxi.baidu.com/open/)网易iTown(http://igate.163.com),几大网络公司各自建立自己的山头,朝“云+独立计算”的方向大踏步迈进。自由开发者们仿佛迎来了属于他们的春天。建立独立游戏分发平台,被认为是一种低成本的开发模式,优秀的独立游戏可以被发现并改编成大型游戏,可以带动更多的人投入到原创游戏的制作当中来。至于它会不会成为未来的主流游戏模式,本人不敢贸然下结论,毕竟咱仅仅是一个刚刚踏入游戏行业 阅读全文

任何时候都适用的20个C++技巧 <12-13> Object-oriented Design

2010-12-07 14:10 by 凌云健笔, 1676 阅读, 1 推荐, 收藏, 编辑
摘要:12 and 13: Object-oriented Design  虽然C++支持多种非常有用的编程范式,如procedural programming、functional programming、generic programming,以及object-oriented programming。其中object-oriented programming(面向对象编程)无疑是使用最为广泛和重要的范例。下面的两个小技巧将帮助你更好的应用面向对象的设计和实现。首先,我将解释一下虚析构函数在类继承中的重要性。另外一个小技巧将阐述如何去处理嵌套类:将嵌套类声明为其包含类的友元。技巧12:为什么没有 阅读全文

任何时候都适用的20个C++技巧 <9-11> 性能的提升

2010-12-06 15:33 by 凌云健笔, 2171 阅读, 4 推荐, 收藏, 编辑
摘要:Nine to 11: Performance Enhancements下面所列出的是三个相当简单但又不是很常见的技术,在不牺牲程序可读性、不修改程序设计的前提下,提高程序的性能。例如,程序员往往不太清楚,只是简单的对数据成员进行重新排序就可以大大减少它的大小。这种优化可以提高性能,如果应用程序使用到了这些对象的数组,效果尤其明显。此外,我们还将学习前缀和后缀操作符之间的差异;在重载操作符中,这是一个很重要的问题。最后,我们将学习一些消除临时对象的创建的方法。技巧9:类成员对齐方式的优化  只需改变类成员的声明顺序就可以改变这个类的大小:[代码]  在我的机器上,sizeof (A) 等于12 阅读全文

任何时候都适用的20个C++技巧 <5-8> 内存管理篇

2010-12-03 14:10 by 凌云健笔, 2172 阅读, 5 推荐, 收藏, 编辑
摘要:毫无疑问,内存管理是在C++编程中最复杂和最易出错的问题之一。能够直接地访问原始内存,动态地分配内存空间,以及C++的高效性决定它必须有一些非常严格的规则;如果你不遵守将难以避免那些内存相关的错误或者程序运行时的崩溃。  指针是访问内存的主要手段。 C++可以分为两个主要类别:指向数据的指针和指向函数的指针。第二大类又可以分为两个子类类:普通函数指针和成员函数指针。在下面的技巧中,我们将深入探讨这... 阅读全文