Week 2 代码规范
Question 1:
这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率, 浪费时间的东西。
My opinion:
我认为恰恰相反,这个可以提高人们的开发效率。
在团队合作当中,如果一些编写程序的细节没有统一起来,在交接的时候就会非常困难。我曾经编写过一些小程序,是一个棋类的游戏,没有电脑的AI,只有双方互相对弈的规则,很多人曾经想和我把这个程序继续扩展一下,但是当时我的代码是这么写的:(当时我写的是Pascal)
for i3:= 1 to 11 do begin weizhishu[i3]:=jisuan1(qizi[i3]); weizhiheng[i3]:= jisuan2(qizi[i3]); end;
if flag2=1 then fang3=1;
for i4:=1 to 11 do a1[i4] = b2[i4]+i4;
在一个循环中基本不换行,变量名和循环变量随意起,没有什么规则,所有的都是随便起的。即使我明确的告诉了他们,weizhishu是位置的竖直方向,flag2是棋子放置的关键条件,fang3是可以放置的标志,a1是棋子,b2是变化过后的棋子。他们是不会记得住的!现在我可能会这么写:
num = 11;
//num 棋子的个数
for (loop = 1; loop <=num; loop++)
{
// location_level 和 location_vertical 是棋子放置的水平、垂直位置
location_level[loop] = cal_level(pieces[loop]);
location_vertical[loop] = cal_certical(pieces[loop]);
}
if (flag_cal == 1) flag_set = 1;
for (loop = 1; loop <=num; loop++)
// 更新棋子_f first _s second
pieces_f[loop] = pieces_s[loop];
我感觉,这样写会让当初我的小伙伴们方便许多吧。而且规定了规范,能让别人更快地上手你的程序,也避免了自己在长时间未复习的情况下忘记了自己的代码。当然我还见过其他的风格,比如曾经有个队友,他的所有过程都当函数写,而且都return -1。曾经我在调他的错误的时候就被一个函数折磨了好久。
综上,我认为这是个提高效率,减少交流矛盾,节省时间的东西。
Question 2:
我是个艺术家,手艺人,我有自己的规范和原则。
My opinion:
我们允许每个人都有自己的特性,事实上,每个人也应该有自己独特的地方,这个我能理解。
然而在项目中,我们必须制定一套适合于大多数人的代码规范,让整个程序变得易于维护。艺术家更要考虑整体,要求细节。细想,整个程序是一幅画,你所做的是画人物上衣服的花纹。可能你的花纹画的十分漂亮,那么你能忍受一张奇丑无比的脸和十分抽象的背景吗?
毕加索
米开朗基罗
达芬奇
梵高
那么 毕加索+梵高+达芬奇+米开朗基罗 = ?
毕加索是大师,梵高是大师,达芬奇也是大师,米开朗基罗更是大师。但是如果他们一起画一幅画,很可能就会因为抽象意象、写实风格等问题,把整幅画画的不伦不类。我们要求的是一副看起来和谐自由的漂亮画面。我们每个人都是艺术大师,所以一定要有一个合作的方法,否则就会得到不理想的结果。这是我们大家都不想看到的。
来,艺术家,排排队友的肩,我们一起画出未来。
Question 3:
规范不能强求一律,应该允许很多例外。
My opinion:
如果允许很多例外,规范就不是规范了。
规范就是我们之中的法律。王子犯法与庶民同罪。如果大家都有例外,我们岂不是就相当于没有规范了吗。
所以这个我认为我们团队不会允许。
Question 4:
我擅长制定编码规范,你们听我的就好了。
My opinion:
我们认真的听,如果大部分人同意,也符合编码规范要求,我们就听你的。我还是希望团队能有和谐自由的风气,不要被一个人包办,这样大家都不能学到多的东西。
我的建议是,有经验的队员可以推荐一些资料,减少其他队员的入门时间,然后大家一起做。我们不仅可以每个人负责一个部分,更可以每个人都把自己会的拿出来,展示给大家,这样才能共同进步。
说到这里我忽然想起了我的一个挚友。我能走到这里,有他的很大一部分原因。他比我厉害很多,也谦虚很多。自己会了的东西,都无私的教给我。当时我们之间也有竞争,但是他愿意教我,即便这会让他少学习一点。他去了一个海边的城市,那里肯定也是他的舞台吧。
中秋已过,无意间,我抬头看了看窗外的明月。