翻到几年前的代码,我惊了。
#做了個架子#
這幾天在整理實驗室,找外面的師傅,做了個架子。
用途嘛,在這個周圍布滿網,可以在里面調試一些較為危險的東西,比如無人機。
架子的四個角都裝了輪子,帶鎖的,方便固定整個架子不讓其移動,也方便我們移動這個架子。
地上之前鋪了跑道,后面都撕掉了,所以留下了很多膠,沒有處理好,所以地面比較黑。
后面在某寶上買了除膠的玩意,效果還不錯??梢杂行Сヒ恍┠z布殘留下的玩意。
大家如果需要有一些難處理的膠印,可以買來試試。
#關于程序注釋#
裝了個臺式機,想著就把筆記本的一些東西整理到臺式機上,沒想到發現了大一時寫的代碼。。。
不看不知道,一看嚇一跳。
摘錄一些,大家一起感受下。
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、傳達代碼無法表述的信息—非常重要。
不知道各位朋友喜歡寫哪種注釋,還是喜歡寫完代碼絕對不回頭。
當然,注釋只是項目文檔之一,還可能要寫設計文檔、測試用例、變更列表、使用手冊等多種文檔去讓別人理解及維護項目。
這樣的話,如果只是單寫個程序注釋,應該算上是一件幸福的事情。
-END-
往期好文合集
雷軍 1994 年寫的代碼,經典老古董。
致初級開發者的一封信:堅持寫代碼!
新手如何快速上手Linux,韋東山告訴你。
??最 后??
?若覺得文章不錯,轉發分享,也是我們繼續更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等!
在公眾號內回復「更多資源」,即可免費獲取,期待你的關注~
長按識別圖中二維碼關注
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的翻到几年前的代码,我惊了。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软推进 1 万人裁员计划,砍掉 AI
- 下一篇: 玩转嵌入式,且看痞子衡