程式撰寫風格的心得

Introduction

程式撰寫時,若寫得很亂或是很醜,極有可能導致無法找到錯誤的情況發生。在多人協作以及詢問他人問題時,好的程式碼風格可以使他人更快了解你在寫什麼。進而快速解決問題。

Detail

1. 基本排版

//首先,各層級之間應該要有 44 個空格。

#include<bits/stdc++.h>
using namespace std;

int main(){
    ios::sync_with_stdio(0);cin.tie(0);

    cout<<"Hello";

    if(1==1){
        cout<<"\n";
    }

    return 0;
}
//再者,有些東西可以按照個人習慣,例如大括號的位置。
//但,筆者主觀認為除了 main 以外千萬不要用第三種(如下),看了還滿痛苦的。

//(↓)第一種
int f(){

}

/*--------------------------------------分隔線--------------------------------------*/

//(↓)第二種
int f() {

}

/*--------------------------------------分隔線--------------------------------------*/

//(↓)第三種
int f()
{

}

2. 行內空格

//行內空格排版,有兩種做法。
//原則上,如果習慣將程式碼放很大的人用第一種,其餘可以自由選擇,然而我較習慣用第一種。

//(↓)第一種
for(int i=0;i<n;++i){
    cout<<a[i]<<" ";
}

/*--------------------------------------分隔線--------------------------------------*/

//(↓)第二種

for(int i=0; i<n; ++i) {
    cout << a[i] << " " ; 
}
//如果有需求將多個簡單指令壓在一行的話,建議使用空格。

for(auto u:g[n]) if(u!=p){
    dfs(n);
}

a=0; b=0; c=0;

3. 區塊間空格

//不同功能的區塊間可以空一行,可以讓後續向他人解說和整理自己思緒方便一些。

#include<bits/stdc++.h>
using namespace std;

const int N=100010;

vector<int> g[N];
int h[N],ind[N];
long long ans=0;

void dfs(int n,int p){
    int mx=0;

    if(g[n].empty()){
        return;
    }

    for(auto u:g[n]){
        if(u!=p){
            dfs(u,n);
            mx=max(mx,h[u]);
        }
    }

    h[n]=mx+1;
    ans+=h[n];
}

int main(){
    ios::sync_with_stdio(0);cin.tie(0);

    int n;
    cin>>n;
    for(int i=1;i<=n;++i){
        int cn;
        cin>>cn; 
        for(int j=0;j<cn;++j){
            int c;
            cin>>c;
            g[i].emplace_back(c);
            ind[c]++;
        }
    }

    int rt;
    for(int i=1;i<=n;++i){
        if(ind[i]==0){
            rt=i;
            break;
        }
    }

    dfs(rt,0);

    cout<<rt<<"\n"<<ans<<"\n";
}

以上就是主要的內容,希望大家寫的順利。

發佈留言