![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程规则
文章平均质量分 78
n567656756765676567
这个作者很懒,什么都没留下…
展开
-
《高效编程十八式》(3/13)矩阵类:封装与约束
矩阵类:封装与约束王伟冰 矩阵的元素可以用一个数组来储存,我们希望建立一个矩阵类,来封装各种矩阵操作(比如加减乘、求逆、转置等等)。我们可以这么写: class matrix{ int width,height;//矩阵的宽度和高度 double* data;//储存矩阵数据的数组 public: ma转载 2012-01-10 19:12:07 · 773 阅读 · 0 评论 -
《高效编程十八式》(2/13)数据统计:泛型与委托
数据统计:泛型与委托王伟冰 我们常常会遇到这样的问题,比如说,统计一个班的学生中数学成绩大于60分的人数。假如说所有学生的成绩储存在一个int型数组中,那么我们可以定义这样的函数: int count(int scores[],int n){ int m=0; for(int i=0;i if(scores[i]转载 2012-01-10 19:10:35 · 453 阅读 · 0 评论 -
《高效编程十八式》(0/13)导言:编程五大原则
导言:编程五大原则王伟冰本文讨论的是如何提高编程的质量和效率,涉及编程的十八个方面:类,函数,泛型,委托,封装,约束,继承,多态,宏思想,语法糖,命名,陷阱,异常,性能优化,多线程,代码编辑,测试,调试。示例代码主要是用C++写的,但是我所讨论的原则同样适用于其它语言。我根据自已实际编程的经验,以及阅读过的编程书籍,总结出编写代码的五条基本原则:简洁,安全,快速,灵活,清晰。下面用转载 2012-01-10 19:06:54 · 465 阅读 · 0 评论 -
《高效编程十八式》后记
后记王伟冰 首先,我为什么要写《高效编程十八式》。其实就是想把自己编程过程中学到的、领悟到的东西整理整理,发出来大家讨论讨论。我不是计算机专业的学生,我喜欢编程,但是在我所在的学院里像我这样的人并不多。而且我这个人交际面不广,也没有认识多少其它院系的人。所以大学里的很多时候我都是一个人在学,看编程的书,做一些自己喜欢的小项目。我不知道我现在到底属于什么水平,因为没有人可以跟转载 2012-01-10 19:28:11 · 561 阅读 · 0 评论 -
《高效编程十八式》(12/13)总结
总结王伟冰简洁原则:写出来的代码要尽量简洁,避免重复。1 把经常用到的代码段写成一个函数,可以简化代码。2 把函数定义为与之密切相关的类的成员函数,可以简化函数实现的代码。3 对于内部实现不同但对外接口相同的类成员函数,可以建立共同的基类虚函数(或Java和C#中的接口),从而可以在外部代码中统一处理,简化外部代码。4 对于内部实现完全一致的类成员变量和转载 2012-01-10 19:26:07 · 469 阅读 · 0 评论 -
《高效编程十八式》(10/13)测试
测试王伟冰 测试就是指检验程序是否能运行得出正确的结果。“黑盒测试”是指不考虑程序内部如何实现,只检查程序能否对各种不同的输入得出正确的输出结果;“白盒测试”是指深入程序代码内部,测试每一个操作的执行是否正确。测试的方法有很多,而且有专门用来测试的软件,这里都不讲,这里只讲一些测试的原则。 1. 自动化原则:尽量把测试所要做的人工操作减到最少。 比如你想转载 2012-01-10 19:21:35 · 414 阅读 · 0 评论 -
《高效编程十八式》(8/13)多线程
多线程王伟冰 什么是多线程?多线程有什么用?先来看一个例子。 假设我们要写一个播放在线视频的程序,那么肯定会有两个步骤:下载视频,然后再播放视频。简单用代码表示就是这样: Download(); Play(); 然而我们必须等到整部视频下载完了才能播放,我们希望下载和播放能够同时进行,下多少播多少。而且,由于网络的原因,下载的速度我们是无法转载 2012-01-10 19:18:45 · 517 阅读 · 0 评论 -
《高效编程十八式》(7/13)性能优化
性能优化王伟冰 第1节中已经提到过快速原则1:尽量减少对数据的复制。在这一节将讨论更多的提高程序执行速度的方法。 快速原则2:尽量利用先前算出的结果。 比如说计算数列:1,1,2,3,5,8,13……的第n位,即f(0)=f(1)=1,f(n)=f(n-1)+f(n-2),最直观的代码就是这样: int f(int n){ i转载 2012-01-10 19:17:49 · 481 阅读 · 0 评论 -
《高效编程十八式》(6/13)命名、陷阱与异常
命名、陷阱与异常王伟冰命名 命名其实包括两方面的内容,一个是起什么样的名字,一个是在什么地方定义。通常我们认为,一个变量、函数或类的名字应该能够清晰地表达出它的作用,但是有时候要想出一个合适的名字就很费时间,所以比较实际的做法是,一个变量、函数或类的重要性越大,它的名字就越应该清晰地表达出它的作用。(清晰原则4)衡量重要性有两个方面,一方面是本征重要性:类>函数>变量;另一方面是转载 2012-01-10 19:16:11 · 423 阅读 · 0 评论 -
《高效编程十八式》(1/13)复数运算:类与函数
复数运算:类与函数王伟冰有时候我们会在程序中用到复数运算,我们一般会先定义一个复数类:class complex{public: double x,y;};假如我们需要把两个复数相加,比如说有三个complex型变量a、b、c,要把a和b相加的和赋给c。我们可以这样做:c.x=a.x+b.x;c.y=a.y+b.y;假如我们每次做复数加法都要写这么两行转载 2012-01-10 19:08:40 · 517 阅读 · 0 评论 -
《高效编程十八式》(11/13)调试
调试王伟冰 调试可以深入程序内部,观察运行时各个变量的值。但是,并不是一出现bug就要调试。调试最适合用来探究一些自己不太熟悉的语言特性或者是技术。比如你对C++某些语句的作用不太熟悉,对某个库函数的作用不太熟悉,调试一下,就可以看得清清楚楚了。如果程序只是逻辑出错误,最好的方法是测试,通过逐个单元的测试,找出问题的所在。为什么测试的效率更高?因为测试可以是自动化的,你可以编写测转载 2012-01-10 19:27:14 · 501 阅读 · 0 评论 -
《高效编程十八式》(5/13)宏思想与语法糖
宏思想与语法糖王伟冰 在C程序里我们会常用到宏定义,比如导言中PI的例子,也可以写成宏定义: #define PI 3.14159265 如同导言所讨论的,宏定义也有同样的好处:简化书写、便于修改、便于理解等。然而,正如许多C/C++书籍所强调的,宏定义不安全,因为它只是执行简单的文本替换。比如#define f(x) x*x,那么f(1+2)会变成1+2*1+2转载 2012-01-10 19:15:22 · 641 阅读 · 0 评论 -
《高效编程十八式》(9/13)代码编辑
代码编辑王伟冰 下面列举一些代码编辑器常用的功能,如果你正在使用的代码编辑器有此功能,请充分利用,这样可以提高写代码的效率。没有的话就算了。 添加: 自动补全:键入单词的前几个字母,自动插入整个单词。 代码模板:插入一些常用的代码结构或程序框架。 方便查看: 自动格式化:不用你自己敲Tab缩进代码,自动缩进。转载 2012-01-10 19:19:30 · 449 阅读 · 0 评论 -
《高效编程十八式》(4/13)形体建模:继承与多态
形体建模:继承与多态王伟冰 我们经常会用计算机对一些现实的事物进行建模,比如说用代码来描述一些形体。我们可以用边长来描述一个立方体,这样就可以求出它的体积: class cube{ public: double length; double volume(){ return length*length*转载 2012-01-10 19:13:45 · 505 阅读 · 0 评论