养成好习惯,代码才好看_3

程序代码,首先是给人看的,其次才是用来运行的。

为了提高代码的可读性,我们要时刻保持一些好习惯,今天我来分享2个——

勤于注释,善于封装。


5. 勤于注释

注释,是对代码功能的解释,写好注释,是提高代码可读性的好方法。

不同的编程语言里,注释的格式可能不同,但写注释的好习惯是一样的。

例如,我之前写一个俄罗斯方块的网页,其中一段 JavaScript 代码如下:

var cur_brick = 0; // Current brick;
var cur_hei = 0; // Height of current brick;
var next_hei = 0; // Height of next brick;

看到注释,我们就一目了然,知道每个变量的作用了。

注释尽量用英文,不要出现汉字。因为,汉字在计算机里储存的时候,需要转码和解码,如果转码和解码方式不同,就会出现汉字乱码的情况,例如出现 "锟斤拷" 之类的内容。而英文不会乱码,所以我们尽量写英文。

注释也不要用汉语拼音,因为,有些人可能不太习惯读拼音,而且,汉语里的同音字比较多,只写拼音可能有歧义。

对于一些不会翻译的词汇,我们可以换成其他的方式来表达,只要不写汉字或者拼音就行;

假如说,我不会翻译 "一元二次方程",那我可以写: ax^2 + bx + c = 0, a != 0;

假如我要定义一个解一元二次方程的函数,那我可以这样写:

// Find the values x1, x2 that make ax^2 + bx + c = 0, a != 0;
function GetRoot(a, b, c) {
    // TODO...
}

这至少比汉字或者拼音要好。

勤于注释,这是一个好习惯;尤其是写一些复杂的函数,我们应该随手注释。

下方的代码,截取自我写的俄罗斯方块,用于响应键盘按键消息的部分:

var key = (event || window.event).keyCode;
switch(key) {
	case(13): // Enter
	case(32): // Space
    	PlayOrPause();
	    return false;
	case(9): // Tab
		Turn();
		return false;
}

在 switch-case 中,每个 case 都对应一个按键的编号,我在注释里标记了这些按键,大家很容易理解,13 对应回车键,32 对应空格键,9 对应 Tab 键。如果没有这些注释,过了几个月,可能连我自己也忘掉了,每个数字代表什么键了。


6. 善于封装

之前我在讨论 "减少重复" 这个好习惯的时候,提到了封装的概念,现在我们展开讨论。

封装包括两大类:

把相似的过程封装成函数 (function),

或者把相似的数据结构封装成类 (class) 或结构体 (structure)。

在这里我主要说第二类封装,使用类和结构体来实现封装。

比如说,我们要根据长方形的宽和高,计算它的面积,初学者可能会这样写:

// 不要这样写:
double height = 16;
double width = 10;
double GetArea(double hei, double wid) {
    return hei * wid;
}

因为 width 和 height 是独立的变量,我们没有把它们绑定起来,于是,当长方形数量很多时,我们可能就忘记了,谁和谁是同一个长方形的宽和高。

正确的做法是,构造一个长方形的类,把 width 和 height 作为它的成员变量,把计算面积的函数作为它的成员函数,从而实现数据的封装:

// 应该这样写:
class Rectangle {
public:
    double height;
    double width;

    Rectangle(double h, double w) {
        height = h;
        width = w;
    }

    GetArea() {
        return height * width;
    }
};

这样的好处是,我们把宽和高绑定起来,每个长方形的宽和高都不会和别的长方形混淆。

有的编程语言不支持使用类,但支持结构体:

struct Rect {
    double width;
    double height;
};

double GetArea(Rect rect) {
    return rect.width * rect.height;
}

使用结构体,只能对数据进行封装,不能把函数写进结构体里,所以它不是很彻底的封装。

对于具体的编程语言,类和结构体的语法规则可能不同,我这里不做具体叙述。


下期预告:

7. 消除隐患;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值