关于算法竞赛代码风格的二三事

代码风格的事就是怎么把代码写漂亮。在这里简单的写一小部分。

命名规则

整份代码的命名规则需要是统一的,具体就是大小写、下划线、全称、缩写等。大写和下划线的功能之一应该是分割两个单词,分割单词时二者只能用其一,所以诸如以下的几个命名是非常丑陋的:

  • get_Prime_List 分隔方法多余
  • get_primeList 使用了两种分割方法

这样命名是优美的:

  • get_prime_list 用下划线来分隔,Google Style Guide采用这种做法
  • getPrimeList 非常经典的Java风格的命名方法
  • GetPrimeList 也可以,不用太过拘泥于形式

非常重要的一点是命名需要体现出这个变量/属性/函数/方法…的作用,所以尽量不要使用缩写,除非是约定俗成的。

当然,为了区别类名和变量名/函数名,可以把类名的首字母大写,这也是常用的方法。

总之,命名在追求美观的同时不必过度拘泥,不必说我学了匈牙利命名法就只用匈牙利命名法,我学了驼峰命名就一定要所有的都用驼峰……

空格与缩进

缩进这件事要看语言了。一般我们用一个Tab相当于几个空格来描述缩进的长度。例如HTML语言推荐的一个缩进的长度等于两个空格的长度,Google C++ Style Guide推荐使用四个空格长度的缩进。

那么问题来了,我是直接用Tab还是用空格?现代先进的文本编辑器和大部分IDE应该都具有自定义代码格式的功能,很多都会自动把Tab变成空格,这样方便不同的设备,不同的工具阅读(因为有的工具Tab是8,有的是4,有的是2……)。所以我个人比较推荐软的Tab。

代码块嵌套的时候要合理使用缩进,代码块与代码块之间要合理空行,代码内要合理空格使得代码更加清晰。看下面这个例子。

其他

写这篇文章是因为看到很多小兄弟写的算法题的代码不是很美观。有人认为算法竞赛中代码风格是无关紧要的,我们应该去关心算法本身或者如何A更多的题目。我觉得算法比赛中没有必要严格的要求代码风格,但是必要的可读性和可维护性还是非常需要的,一份漂亮的代码对思路的形成和DEBUG都有很积极的影响。

命名规则、空格和缩进是风格中比较简单但非常重要的一个部分,但真正要讨论代码风格远不止这些。对于工业级别的代码会有更加严格的要求,例如Google C++ Style Guide就是一份很全面的风格指南,类似这样的风格指南还有很多。

说点什么

avatar
50
  Subscribe  
提醒