编码规范

   文章作者: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这种语言隔开的话就会报错,当然不要隔开了)

posted on 2015-08-15 14:21  luxianghao  阅读(351)  评论(0编辑  收藏  举报

导航