代码不规范,亲人两行泪

代码不规范引发的血案:

美国的一家名为 WTS Paradigm 的企业资源规划软件(ERP)开发商的办公楼内,该公司的一名程序员持枪杀了4名同事,因他们总是不写注释,不遵循驼峰命名,最主要还天天git push -f 。当时43岁的安东尼·汤(Anthony Tong)在办公室,拿出一把事先藏起来的半自动手枪向周围4名同事开火。其他工作人员见状纷纷逃离办公楼,跑到附近的公司避难。当警察来到现场时,他竟然还想袭击警察!看来这位程序员真是被愤怒冲昏了头脑,因他的不配合,最后警察不得已向他开枪,在送往医院的途中安东尼流血过多死亡。在第二天的警方发布会上,警察说嫌疑人之前没有任何的犯罪行为,事情发生的非常突然,目前没有任何的迹象表明凶手的动机何在。

代码不规范的类型

命名不规范

注释不规范

代码缩进不规范

程序设计不规范

函数接口设计不规范

特点

可维护性低

可读性低

代码示例

不规范:

#include <stdio.h>

void port_fpga(unsigned int addr) {
	//模拟
	printf("对地址:0x%X执行操作\n", addr);
}

//算法设计
void port_work(int port) {
	unsigned int addr;
	
	if (port == 1) {
		addr = 0x800;
	} else if (port == 2) {
		addr = 0x804;
	} else if (port == 3) {
		addr = 0x808;
	} else if (port == 4) {
		addr = 0x80C;
	} else if (port == 5) {
		addr = 0x810;
	} else if (port == 6) {
		addr = 0x814;
	} else if (port == 7) {
		addr = 0x818;
	} else if (port == 8) {
		addr = 0x81C;
	} else if (port == 9) {
		addr = 0x820;
	} else if (port == 10) {
		addr = 0x824;
	} else if (port == 11) {
		addr = 0x828;
	} else if (port == 12) {
		addr = 0x82C;
	} else {
		printf("无效端口\n");
		return;
	}
	// ...
	
	port_fpga(addr);
}

int main(void) {
	int port;
	printf("请输入端口:");
	scanf("%d", &port);
	
	port_work(port);
	
	return 0;
}

修改后:

#include <stdio.h>

void port_fpga(unsigned int addr) {
	//模拟
	printf("对地址:0x%X执行操作\n", addr);
}

//算法设计
void port_work(int port) {
	unsigned int addr;
	
	if (port < 1 || port > 12) {
		printf("无效端口\n");
		return;
	}
	
	addr = 0x800 + (port-1) * 4; 
	port_fpga(addr);
}

int main(void) {
	int port;
	printf("请输入端口:");
	scanf("%d", &port);
	
	port_work(port);
	
	return 0;
}

短了很多是不是?还有:

#include <stdio.h>

void port1_fpga() {
	printf("调用接口port1_fpga\n");
}

void port2_fpga() {
	printf("调用接口port2_fpga\n");
}

void port3_fpga() {
	printf("调用接口port3_fpga\n");
}

void port4_fpga() {
	printf("调用接口port4_fpga\n");
}

void port5_fpga() {
	printf("调用接口port5_fpga\n");
}

void port6_fpga() {
	printf("调用接口port6_fpga\n");
}

void port7_fpga() {
	printf("调用接口port7_fpga\n");
}

void port8_fpga() {
	printf("调用接口port8_fpga\n");
}

void port9_fpga() {
	printf("调用接口port9_fpga\n");
}

void port10_fpga() {
	printf("调用接口port10_fpga\n");
}

void port11_fpga() {
	printf("调用接口port11_fpga\n");
}

void port12_fpga() {
	printf("调用接口port12_fpga\n");
}

//算法设计
void port_work(int port) {
	unsigned int addr;
	
	if (port == 1) {
		port1_fpga();
	} else if (port == 2) {
		port2_fpga();
	} else if (port == 3) {
		port3_fpga();
	} else if (port == 4) {
		port4_fpga();
	} else if (port == 5) {
		port5_fpga();
	} else if (port == 6) {
		port6_fpga();
	} else if (port == 7) {
		port7_fpga();
	} else if (port == 8) {
		port8_fpga();
	} else if (port == 9) {
		port9_fpga();
	} else if (port == 10) {
		port10_fpga();
	} else if (port == 11) {
		port11_fpga();
	} else if (port == 12) {
		port12_fpga();
	} else {
		printf("无效端口\n");
		return;
	}
	// ...
}

int main(void) {
	int port;
	printf("请输入端口:");
	scanf("%d", &port);
	
	port_work(port);
	
	return 0;
}

可变成:

#include <stdio.h>

void port1_fpga() {
	printf("调用接口port1_fpga\n");
}

void port2_fpga() {
	printf("调用接口port2_fpga\n");
}

void port3_fpga() {
	printf("调用接口port3_fpga\n");
}

void port4_fpga() {
	printf("调用接口port4_fpga\n");
}

void port5_fpga() {
	printf("调用接口port5_fpga\n");
}

void port6_fpga() {
	printf("调用接口port6_fpga\n");
}

void port7_fpga() {
	printf("调用接口port7_fpga\n");
}

void port8_fpga() {
	printf("调用接口port8_fpga\n");
}

void port9_fpga() {
	printf("调用接口port9_fpga\n");
}

void port10_fpga() {
	printf("调用接口port10_fpga\n");
}

void port11_fpga() {
	printf("调用接口port11_fpga\n");
}

void port12_fpga() {
	printf("调用接口port12_fpga\n");
}

typedef void (*port_fpga_t)();
port_fpga_t port_fpga_handlers[] = {
	[1] = port1_fpga, 
	[2] = port2_fpga,
	[3] = port3_fpga,
	[4] = port4_fpga,
	[5] = port5_fpga,
	[6] = port6_fpga,
	[7] = port7_fpga,
	[8] = port8_fpga,
	[9] = port9_fpga,
	[10] = port10_fpga,
	[11] = port11_fpga,
	[12] = port12_fpga
};

//算法设计
void port_work(int port) {
	port_fpga_t handler;
	
	if (port < 1 || port > 12) {
		printf("无效端口\n");
		return;
	}
	
	handler = port_fpga_handlers[port];
	handler();
	// ...
}

int main(void) {
	int port;
	printf("请输入端口:");
	scanf("%d", &port);
	
	port_work(port);
	
	return 0;
}

At The Last

C++中使用空格的建议

(1) 关键字之后要留空格。像const、virtual、inline、case 等关键字之后至少要留一个空格,否则无法辨析     关键字。像if、else if、for、while、switch 等关键字之后应留一个空格再跟左括号“(”,以突出关键     字;

(2) 函数名之后不要留空格,无论是在原型、定义还是在调用中;

(3)“(”、“[”向后紧跟,“]”、“,”、“;”、“)”向前紧跟,紧跟处不留空格;“,”之后要留空格,如     f(x, y, z);如果“;”不是一行的结束符,则后面也要留空格,如 for(initialization; condition;         update);

(4) 预编译指令中#和保留字之间不要留空格;文件包含伪指令中文件名与两端的“<”,“>”或“"”、          “"”之间不留空格;

(5) 二元运算符如“=”、“+=”、“>=”、<=”、“+”、“*”、“%”、“&&”、“||”、“<<”、“^”等     的前后应加空格;

(6) 一元运算符如“!”、“~”、“++”、“--”、“-”、“&”(取地址运算符)、“*”(解引用运算符)等与     所有操作数之间不加空格;

(7) “.”、“->”、“.*”、“->*”、“::”这类运算符前后不加空格;“?”、“:”前后要加空格。

(空格部分参考https://www.cnblogs.com/ltang/archive/2010/10/25/1861136.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值