你還用拼音為變數命名?新人OIer別傻了,教你寫出優質程式碼
本篇文章適用語言:python,c++,Java.(其實我就是隨便bb)
我們在編輯程式碼的時候,不免拿其他人的程式碼進行學習,或者將自己的程式碼拿給別人修改.這個時候,如何讓別人快速讀懂你的程式碼,是提升效率的關鍵,而且一個好的碼風可以讓自己讀起來也賞心悅目.那麼接下來我就會對這一部分進行講解.
變數命名
我將碼風分為兩個部分,變數命名和程式碼書寫.
變數命名當中,最最最最噁心的一點就是拿拼音來為變數命名,你拿x,y,z都好過.什麼書本的數量用"shuben",你是小學沒學過嗎?我幼兒園都會"book".不僅打起來麻煩而且讓人感覺你很low.要是讓我看見還讓我給他改程式碼我就一拳上去.
比如答案就用"ans"(answer),表示訪問的不要用bj(標記),"flag","vis","visit"用著不香嗎?拼音很容易讓人不知道什麼意思,常常過兩天來看你自己都不知道.而用英文簡寫就很容易讓人知道什麼意思.這也就是程式碼編輯中的約定俗成.
再者,比如迴圈變數i,j,k,實在不行加一個l,亂七八糟的不要用.abcxyz等最好不要在太多地方使用,n,m都可以.
程式碼書寫
使我們的程式碼變得清晰美觀的只有一個鍵--空格.空格的使用使程式碼變得不那麼擁擠.
比如在使用逗號的時候,可以將逗號後面留一個空格.其次,在"="前後也可以有空格,";"後面也允許用空格,"==","&&","||",">=","<="前後我都會加空格
但這不是強行要求,你可以在上面進行更改,只要你看著比較美觀就好.
示範
隨便copy一個同學的程式碼(來源:洛谷)
#include<bits/stdc++.h> using namespace std; int x,sum; int cf(int a,int b){ int z=1; for(int i=0;i<b;i++){ z*=a; } return z; } void digui(int n){ int y; if(n==0) return; for(int i=0;i<=15;i++){ y=i;//進行儲存 if(cf(2,i)>n){ y--; break; } } if(y==0) cout<<"2(0)"; if(y==1) cout<<"2"; if(y>1){ cout<<"2("; digui(y); cout<<")"; } if(n!=cf(2,y)){ cout<<"+"; digui(n-cf(2,y)); } } int main(){ cin>>x; digui(x); return 0; }
其實這樣我是不推薦的,下面是我更改碼風過後的程式碼,當然,如果你使用Dev_C++d等編輯器進行閱讀效果會更好:
#include <bits/stdc++.h>
using namespace std;
int x, sum;
int cf(int a, int b)
{
int z = 1;
for(int i = 0; i < b; i++)
z *= a;
return z;
}
void dg(int n)
{
int y;
if(n == 0)
return;
for(int i = 0; i <= 15; i++)
{
y = i;
if(cf(2, i) > n)
{
y--;
break;
}
}
if(y == 0)
cout<<"2(0)";
if(y == 1)
cout<<"2";
if(y > 1)
{
cout<<"2(";
dg(y);
cout<<")";
}
if(n != cf(2,y))
{
cout<<"+";
dg(n - cf(2, y));
}
}
int main()
{
cin>>x;
dg(x);
return 0;
}
現在我很無語,因為這傢伙真tm用digui(遞迴)做函式名.
我當場吐血.
你用dg都好過digui.好嗎?
寫在最後
總之,這是我本人提的一些小建議,如果你喜歡我的碼風的話,請支援一下本蒟蒻吧.(言外之意我想你不會不懂)