文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/4732404.html 转载请注明,谢谢合作。
---
Coding最重要的还是让其实现相应的功能,但是这只是最基础的,如果到此为止的话,那么那段代码只能说是一堆实现功能的字符,没有可读性,没有可维护性,而且现在强调team work,如果你不想让你的小伙伴抓款那么还是注重以下这方面把,还有就是现在公司员工的流动性比较大,你写的代码可能需要别人去维护,去二次开发,如果不想让别人问候你的先人,那么也注重一下这方面把。
细节决定成败,编码规范无疑就是细节,注入方法命名,变量定义,语句则只,任务分解等,但它并不是微不足道的,Yourdon和Constantine在其著作《Structured Design》中写道,软件成本由开发成本与维护成本组成,而维护成本要远高于开发成本。这其中耗费的主要成本就是理解代码和修改代码造成。为了让带代码可读性强,易维护,我们需注意以下几点:
1. 使用更准确的名字
如:
def GetPage(url)... 看似不错,但是并没有准确的表示信息,因为你不知道你是从bending的缓存中获得信息还是从远程server中。
stop这个词我们同样可以用其他的意思更加明显的词语来表述,如pause,kill...
下面是一些例子:
单词 |
更多选择 |
send | deliver, dispatch, announce, distribute, route |
find | search, extract, locate, recover |
start | launch, create, begin, open |
make | create, set up, build, generate, compose, add, new |
2. 带单位/格式的名字
如:
Start(int delay) 这个大家都明白向delay传的值是一个时间,但是我是传入1还是60呢,我为什么会有这样的疑问,是因为我们并知道他的单位,所以我们有时候需要带些单位啊,格式啊之类的信息。
下面给一些这方面的例子:
函数参数 | 带单位/格式的参数 |
Start(int delay) | delay --> delay_secs |
CreateCache(int size) | size --> size_mb |
ThrottleDownload(float limit) | limit --> max_kbps |
Rotate(float angle) | angle --> degrees_cw |
login(user, password) | password --> plaintext_password |
html | html_utf8 |
3. 使用长名字还是短名字
如:
d, days, days_since_last_update, 我们该如何取舍呢?最好的答案就是和这个变量如何使用有关系。
在小的作用域里我们可以使用短名字,如:
if (debug)
{
map<string, int> m;
LookUpNamesNumbers(&m);
print(m);
}
这里边m这个名字并没有包含很多信息,但是这不是问题,因为读者已经了解到这段代码的信息。
备注:
现在你不需要为你的变量名字过长不好输入而发愁,因为基本上所有的编辑器都支持“单词补全”的功能,如下所示:
编辑器 | 命令 |
Vi | Ctrl + p |
Emacs | Meta+/ (先按ESC,然后按/) |
Eclipse | Alt+/ |
IntelliJ IDEA | Alt+/ |
TextMate | ESC |
4.使用名字的格式传递信息
接下来写下本人一般遵循的规范
a)类名一般首字母大写,且为名词含义
b)函数名一般为动词含义
c)变量名一般为名词含义
d)文件名一般为动词含义
f)名字间表示不同意义的单词之间一般用'_'隔开,类名一般是用新单词的首字母大写来区别的
5.其他
class Logger {
...
};
还是:
class Logger
{
...
}
这个因自己的喜好吧,本人偏爱下面一种。
# Import the user's email contacts... def suggest_new_friends(user, email_password) friends = user.friends() friend_emails = set(f.email for f in friends) ...
写了上面一些Python代码,也是反应一下编码规范(风格)
a)适当的写些注释,对于那些意义不那么明显的代码部分,读者会对你的注释感激不尽。(注意‘#’后的空格,还有首字符大写)
b)函数参数之间一般要用空格隔开
c)赋值语句‘=’两边一般用空格隔开(像shell这种语言隔开的话就会报错,当然不要隔开了)