我其实产生这个问题很久了。
我们学校的 OJ 有自动排版,我一开始就觉得这个排版排的又好看(美观整洁)又好看(易于看懂)(这里有一份经过我们 OJ 排版之后的代码 link),加上我是 Python 移民(虽然现在不会写一点 Python 了)。于是我写代码的时候就下意识学着它写。
后来我学会了压行,包括但不限于:
可能本来是这样的代码:
for (int i = 1; i <= n; ++i) {
cnt += i;
}
我会把它写成这样:
for (int i = 1; i <= n; ++i) cnt += i;
也可能本来是这样的代码(线段树里由为常见):
if (l == r) {
t[u].sum = x;
return;
}
我会写成:
if (l == r) return t[u].sum = x, void();
就像这样。
总之又因为各种各样的原因,我养成了一套我自己认为还不错的码风,就像这样。
近来我在我的同学和各种题解各种博客中发现了大量的,会对我将近 1000 度的近视眼造成极大危害的现象:不打空格!
比如我写的:
void pushup(int u) { t[u].mx = max(t[ls(u)].mx, t[rs(u)].mx; }
我发现其他人写的:
void pushup(int u){t[u].mx=max(t[ls(u)].mx,t[rs(u)].mx;}
关键是他们还爱压行,于是就可以看到:
inline void push_down(int p)
{
if(tr[p].mul^1) mul(tr[p].son[0],tr[p].mul),mul(tr[p].son[1],tr[p].mul),tr[p].mul=1;
if(tr[p].add) add(tr[p].son[0],tr[p].add),add(tr[p].son[1],tr[p].add),tr[p].add=0;
if(tr[p].rev) rever(tr[p].son[0]),rever(tr[p].son[1]),tr[p].rev=0;
}
又小又密,层次也分不清楚,看得我想吐。
我有一次问过一个同学:为什么你们都不爱打空格啊?他回了我一句:“懒。”
我很无语。
Python 有 PEP 8 编码规范,加上 Python 本来对格式要求很严格,所以 Python 素有简洁美观的美名。
C++ 能不能也有一个编码规范,让程序员写的代码看起来会优雅美观很多,层次分明,简单易懂。
或者,什么样的 C++ 代码是码风良好美观的?