zoukankan      html  css  js  c++  java
  • 编码规范

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

  • 相关阅读:
    前端资源分享
    Java的wait(), notify()和notifyAll()使用心得(转)
    Java 理论与实践: 处理 InterruptedException(转)
    关于线程中断的总结
    Python入门(good)
    看着自己有什么样的资源,利用好这些资源就好了。不要看着别人的资源流口水(转)
    android手机SD卡中的android_secure目录
    Android中ExpandableListView控件基本使用
    华为的面试经历
    Flex强制类型转换错误
  • 原文地址:https://www.cnblogs.com/luxianghao/p/4732404.html
Copyright © 2011-2022 走看看