1. 程式人生 > >你還用拼音為變數命名?新人OIer別傻了,教你寫出優質程式碼

你還用拼音為變數命名?新人OIer別傻了,教你寫出優質程式碼

本篇文章適用語言:python,c++,Java.(其實我就是隨便bb)
我們在編輯程式碼的時候,不免拿其他人的程式碼進行學習,或者將自己的程式碼拿給別人修改.這個時候,如何讓別人快速讀懂你的程式碼,是提升效率的關鍵,而且一個好的碼風可以讓自己讀起來也賞心悅目.那麼接下來我就會對這一部分進行講解.

變數命名

我將碼風分為兩個部分,變數命名和程式碼書寫.

變數命名當中,最最最最噁心的一點就是拿拼音來為變數命名,你拿x,y,z都好過.什麼書本的數量用"shuben",你是小學沒學過嗎?我幼兒園都會"book".不僅打起來麻煩而且讓人感覺你很low.要是讓我看見還讓我給他改程式碼我就一拳上去.

比如答案就用"ans"(answer),表示訪問的不要用bj(標記),"flag","vis","visit"用著不香嗎?拼音很容易讓人不知道什麼意思,常常過兩天來看你自己都不知道.而用英文簡寫就很容易讓人知道什麼意思.這也就是程式碼編輯中的約定俗成.

再者,比如迴圈變數i,j,k,實在不行加一個l,亂七八糟的不要用.abcxyz等最好不要在太多地方使用,n,m都可以.

程式碼書寫

使我們的程式碼變得清晰美觀的只有一個鍵--空格.空格的使用使程式碼變得不那麼擁擠.

比如在使用逗號的時候,可以將逗號後面留一個空格.其次,在"="前後也可以有空格,";"後面也允許用空格,"==","&&","||",">=","<="前後我都會加空格

比如在for語句裡,我經常這麼寫:for(int i = 1; i <= n; i++).

但這不是強行要求,你可以在上面進行更改,只要你看著比較美觀就好.

示範

隨便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.好嗎?

寫在最後

總之,這是我本人提的一些小建議,如果你喜歡我的碼風的話,請支援一下本蒟蒻吧.(言外之意我想你不會不懂)