#做了个架子#
这几天在整理实验室,找外面的师傅,做了个架子。
用途嘛,在这个周围布满网,可以在里面调试一些较为危险的东西,比如无人机。架子的四个角都装了轮子,带锁的,方便固定整个架子不让其移动,也方便我们移动这个架子。地上之前铺了跑道,后面都撕掉了,所以留下了很多胶,没有处理好,所以地面比较黑。后面在某宝上买了除胶的玩意,效果还不错。可以有效除去一些胶布残留下的玩意。

大家如果需要有一些难处理的胶印,可以买来试试。
#关于程序注释#装了个台式机,想着就把笔记本的一些东西整理到台式机上,没想到发现了大一时写的代码。。。

不看不知道,一看吓一跳。
摘录一些,大家一起感受下。
void wanggei(int a,int b)//画网格{initgraph(20*a,20*b);setbkcolor(BLUE);cleardevice();setwritemode(R2_XORPEN);setfillcolor(WHITE);settextstyle(15, 0, _T("楷体")); // 操作说明outtextxy(20, 10, _T("操作说明"));outtextxy(20, 30, _T("w:旋转"));outtextxy(20, 50, _T("a:左移"));outtextxy(20, 70, _T("d:右移"));outtextxy(20, 90, _T("s:下移"));return;}void suiji(int a[],int b[])//生成随机方块{int n;srand((unsigned)time(NULL));n=rand()%(X-9);if(n==1){a[0]=1+n;b[0]=Y+1;a[1]=1+n;b[1]=Y+2;a[2]=2+n;b[2]=Y+1;a[3]=2+n;b[3]=Y+2;//正方形的方块。 return;}if(n==2){a[0]=1+n;b[0]=Y+1;a[1]=2+n;b[1]=Y+1;a[2]=3+n;b[2]=Y+1;a[3]=2+n;b[3]=Y+2;return;}if(n==3){a[0]=1+n;b[0]=Y+1;a[1]=1+n;b[1]=Y+2;a[2]=1+n;b[2]=Y+3;a[3]=1+n;b[3]=Y+4;return;}if(n==4){a[0]=1+n;b[0]=Y+1;a[1]=2+n;b[1]=Y+1;a[2]=2+n;b[2]=Y+2;a[3]=2+n;b[3]=Y+3;return;}if(n==5){a[0]=1+n;b[0]=Y+3;a[1]=1+n;b[1]=Y+1;a[2]=1+n;b[2]=Y+2;a[3]=2+n;b[3]=Y+1;return;}if(n==6){a[0]=2+n;b[0]=Y+1;a[1]=2+n;b[1]=Y+2;a[2]=1+n;b[2]=Y+2;a[3]=1+n;b[3]=Y+3;return;}if(n==7){a[0]=1+n;b[0]=Y+1;a[1]=1+n;b[1]=Y+2;a[2]=2+n;b[2]=Y+2;a[3]=2+n;b[3]=Y+3;return;}}void Judge(int a[],int b[],int n,int x[X+2][Y+2],int y[X+2][Y+2],int speed)//游戏规则{int i=0,j=0,k,a0[4],b0[4];char c;while(1){for(j=1;j<=Y;j++) //消去的行{for(i=1;i<=X;i++)if(i!=x[i][j]&&j!=y[i][j])break;if(i==X+1){for(i=1;i<=X;i++){Rectangle(i,j);x[i][j]=0;y[i][j]=0;}for(i=1;i<=X;i++)for(k=j+1;k<=Y;k++)if(x[i][k]==i&&y[i][k]==k){x[i][k]=0;y[i][k]=0;x[i][k-1]=i;y[i][k-1]=k-1;Rectangle(i,k);Rectangle(i,k-1);}}}for(i=0;i<n;i++)Rectangle(a[i],b[i]);Sleep(1000-100*speed);for(i=0;i<n;i++)Rectangle(a[i],b[i]);for(i=0;i<n;i++){a0[i]=a[i];b0[i]=b[i];}
if(kbhit()){c=getch();Move(a,b,n,c);if(c=='s')speed=10;}else{Move(a,b,n,'0');for(i=0;i<X+2;i++)for(j=0;j<Y+2;j++)for(k=0;k<n;k++)if(a[k]==x[i][j]&&b[k]==y[i][j]){for(i=0;i<n;i++){a[i]=a0[i];b[i]=b0[i];}return;}}for(i=0;i<X+2;i++)for(j=0;j<Y+2;j++)for(k=0;k<n;k++)if(a[k]==x[i][j]&&b[k]==y[i][j]){for(i=0;i<n;i++){a[i]=a0[i];b[i]=b0[i];}goto ex;}ex:;}}
什么感觉:写的啥玩意。
拼音和英文混排,哈哈哈。给力不给力
最重要的是,没有注释。说实话,虽然是我自己写的,但我刚开始看的时候,这是啥变量啊。这又是啥变量啊。为啥要放到这里。变量的定义,务必要清晰,让人一看就能够知道大致意义。
有些朋友,对于自己熟悉的英文,可能会用英文表示,但如果不会表达,可能直接用aa,bb这样没有任何代表意义的字母来命名。出现这种命名的话,如果代码整体量较大,写再多注释都没用,可读性非常差,可能自己今天写的,一个星期后回来再看,也忘记其代表的含义了。。。所以,变量的命名极为重要。
#解决命名的好帮手#基于此,在此给大家介绍一个网站:CODELF,一个搜索界面,可以为变量进行专业的命名。比如,项目中需要命名一个变量叫做温度,有的童鞋一下想不起来怎么命名,直接用拼音温度来表示了。

该网站,输入一个中文词汇,会弹出很多对应的翻译。算是变相的翻译~
同样,函数的命名也可以这样去操作。放上网站:https://unbug.github.io/codelf/
另外,解决命名后,在别人第一眼看到程序时,就能够了解我们接下来写的代码意义。
其次,就是具体的逻辑过程。这部分的注释也尤为重要。程序的过程说到底,无非就是用语句去操作变量,玩转数据。交替得出最终我们想要的结果。所以,程序操作过程,应该也值得记录。毕竟以后维护的时候,再看到代码时,能快速的理解其逻辑。当然,有朋友会有另外的观点:程序结构不好,写再多的注释都没用
但,如果程序结构好,注释也多,代码的可读性应该就会更强了。
毕竟程序员最讨厌的两件事就是:
1、别人的代码不写注释。
2、自己写完代码还要写注释。
《代码大全》,讲到注释有以下几个种类:
1、复述代码—这种把代码复述一遍的注释最无聊。
2、解释代码—解释代码的思路,这种代码可以有,但是大部分时候是因为代码写得不好。
3、概述代码一句话告诉别人代码做了什么,很好的注释。
4、代码意图说明—指出代码要解决的问题。
5、传达代码无法表述的信息—非常重要。
不知道各位朋友喜欢写哪种注释,还是喜欢写完代码绝对不回头。
当然,注释只是项目文档之一,还可能要写设计文档、测试用例、变更列表、使用手册等多种文档去让别人理解及维护项目。
这样的话,如果只是单写个程序注释,应该算上是一件幸福的事情。