代码入门第二篇--语句

1.语句是顺序从上往下阅读的

那么代码的执行也有先后顺序,所以对于执行顺序重要的代码,使其的顺序明朗是一件重要的事情

尽量让程序名能显示你的依赖关系,组织代码时依赖关系变得非常明朗

//此处使用书中的例子
Data data = GetDataById(id);
Result result = GetResultByData(data);
print(result);

此处顺序为 1.获取数据,2.根据拿到的数据获取结果,3.打印结果
依次执行,顺序不能变,尽量让你的代码看起来有明确的顺序要求
避免其他人修改代码的时候更改顺序(虽然说一般不会乱改代码,但是万一呢)

把相关的代码组织在一起
此处和第一篇的类似

2.在声明变量的时候,需要初始化它的值 , 在靠近变量第一次使用的位置初始化它



2. if 语句

首先写正常的、常见的代码路径

正常的顺序、常见的判断写在前面更适合阅读、理解,看起来更为系统


if 后面跟随一个有意义的语句

有时候会有这样的情况:
你在某些情况不会做什么事情,但是相反你就会做事情
有人可能会写成这样(是我了):

if ( 不对 ){
	//不做什么事
}else{
	//做某些事情
}

//那你可以写成(我是伞兵,这不废话吗)
if () {
	//做某些事情
}

利用布尔函数处理复杂的判断

//需求:传入一个int 类型的月份,判断是大月还是小月,是什么就输出什么(“大月”、“小月”)
//简单版
//1、3、5、7、8、10、12大
//2、4、6、9、11 小(2是平,不管了,简单举例吧
void PrintMonthType(int month){
	if(month == 1 || month == 3 || month == 5||month == 7||
	   month == 8 || month == 10|| month == 12){
		print("大月")
	}else {
		print{"小月"}
	}
}


---------------------------------------------------------------------
//改进版:
void PrintMonthType(int month){
	if(IsBigMonth(month)){
		print("大月")
	}else {
		print{"小月"}
	}
}
//判断某个月是否是大月
bool IsBigMonth(int month){
	if(month == 1 || month == 3 || month == 5||month == 7||
	   month == 8 || month == 10|| month == 12){
		return true;
	}else {
		return false;
	}
}
---------------------------------------------------------------------------------

还应该注意代码安全性,上面的例子中就没判断月份是否合理,没考虑到所有的情况
增加简单考虑month值问题

bool IsBigMonth(int month){
	if(month == 1 || month == 3 || month == 5||month == 7||
	   month == 8 || month == 10|| month == 12){
		return true;
	}else if(month == 2 || month == 4 || month == 6 || month == 9 || month == 11) {
		return false;
	}else{
		print(error);
		return false;
	}
}

还有问题,自己考虑吧


把初始化的代码紧放在循环前面,需要确保你的循环,能够正确的终止,并且让你的循环终止条件,看起来明显,不要为了终止循环而胡乱改动循环的下标

在你找到需要的纸的时候,提前退出循环,避免多余的计算

如果我要在0 到100000000中找到值为9527的数,简单遍历

int target = 0;
for(int i = 0; i <= 100000000; i++){
	if( i = 9527){
		target = i;
		// 不break
	}
}

那我要在这里进行 100000000次的判断,而且后续的判断都是无效的了,代码的冗余计算非常多
因此我们在确定找到正确的值的时候,需要提前结束循环,避免多余计算



表驱动

表驱动可以简化代码,但可能会增加内存的消耗

//需求:获取12月份中某一月的天数,2月取28
	void PrintDaysAtMonth(month)
	{
		if(month == 1 || month == 3 || month == 5||month == 7||
		   month == 8 || month == 10|| month == 12){
			print("31");
		}else if(month == 4 || month == 6 || month == 9 || month == 11) {
			print("30");
		}else if(month = 2){
			print("28");
		}else{
			print("0");
		}
	}

	//使用表,不注意语法正确了,表意!表意!表意!
	DaysOnMonth = {31,28,31,30,31,30,31,31,30,31,30,31}
	void PrintDaysAtMonth(month)
	{
		//此处未判断month的合法性,略
		print(DaysOnMonth [month].ToString())
	}

甚至可以用来做方法的调用,具体可以查查资料


也许未完…勿待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值