优雅代码书写技巧总结

经过几年代码学习,发现了一些优雅的表示方式,他们有一些特点:例如看起来逼格很高,或者提高运行效率,简化代码等等


1

第一种在afs课上学到的,如果有多个变量综合起来作为switch的情况,可以使用。

比如在想处理a,b,c三个变量取True和false的8种情况:

switch(!!a*4+!!b*2+!!c){
	case 0: //000
		break;
	case 1://001
		break;
	case 2://010
		break;
		...
	case 7: //111
		break;
}

两个取反是为了把变量强制转化为0或者1


2

如果函数参数很多,希望每个参数都进行注释:

public void lotsOfArgFunction(
	arg1,//this is arg1
	arg2,//this is arg2
	arg3,//this is arg3
	...
	arg8//this is arg8
){
	//函数体
}

同理,如果调用时想要对参数进行注释,也可以这样。

IDEA在注释时,对于立即数参数会自动进行注释,而我们可以这样:

loasOfArgFunction(
	/*put arg1*/arg1,
	/*put arg2*/arg2,
	/*put arg3*/arg3
);

3

verilog中,对于多路选择器,通常只能用switch case来模拟。问题在于综合出来会多出寄存器,这样让人很不舒服

直到某天看到人家写的lab,才知道应该这样写:

assign out = {32{condition1}} & signal1 ||
			 {32{condition2}} & signal2 ||
			 ...	
			 {32{condition8}} & signal8 ;

这样从condition中选择了若干个signal

而且对于条件判断,通常新增加一个wire变量,然后判断该变量,比如

if(in == 0x1000 && it == next) begin
	//do something
end

最好写成这样:

assign in_choose = in == 0x1000;
assign unchange = it ==  next;

if(in_choose && unchange) begin
	//do something
end

这是因为verilog综合的时候就是按照两个信号来综合的,这样更加贴近电路真实情况。


4

c语言变量,变量名一般都选择小写字母+下划线,比如 set_signal

c++或者java,变量名一般选择驼峰命名法,如果是类则是大驼峰: SetSignal,

如果是函数或者变量,一般是小驼峰: setSignal

python,类使用开头大写+下划线: Set_signal

变量使用小写+下划线: set_signal


5

这是我看linux 内核的写法,如果想要for或者if在一行解决,但是又不想加括号:

for(int i = 0; i < NR_TASK; i++){
	if(c > task[i]->counter)
		c = task[i]->counter, break;
}

这样虽然比较简介,但是容易出错,所以还是小心一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值