编码规范个人理解

个人对编码规范的一些理解

一些同学在写代码的时候一开始就不具备良好的习惯, 最后的代码压根没法看, 写一下自己对代码的编码规范的一些知识的整合.

1. 命名

​ 在我们的编码过程中, 为了可维护性, 以及可扩展性, 我们需要让我们的代码的可读性增强, 尤其是在我们的团队开发项目, 和需要长期维护的项目中, 如果命名不规范, 很容易被打, 所谓的命名规范就是先做到见名知义.

常见的命名方式有以下三种.

  • 驼峰式命名

    顾名思义, 驼峰式命名的用法是首个单词小写, 从第二个单词开始就开始首字母大写, 比如我们在定义一个质数的个数这个变量的时候, 可以采用以下这种方式.

    int numberOfPrime = 0;
    

    这种方式可以很明显的看出要表达的意思, 这种方式应该是目前来说最为流行的命名方式了.

  • 下划线式命名

    下划线命名就是单词与单词之间使用下划线**_**隔开, 单词使用小写, 同上面的例子

    int number_of_prime = 0;
    

    这种命名方式常见于c语言的程序和数据库的表明中

  • 帕斯卡命名

    帕斯卡命名方式与驼峰式命名方法相似, 只不过第一个首字母不小写而已, 这种方式常见于c/c++/c#语言的函数中, 以及部分面向对象编程语言中类的命名

    C#

    static int Plus(int num1, int num2) {
        return num1 + num2;
    }
    

    Java

    class HelloWrold {
        
    }
    

2. 注释

  • 行注释

    • 一般修饰易读性不强的代码, 比如下面的岭段代码, 功能相同, 但如果用一句话来省略if的话, 那么可以说很长时间之后看不明白, 就可以写一个行注释标记一下

      while(true) {
          if (resultIndex > arr.length) {
          	resultIndex = 0;
      	}
          resultIndex++;
      }
      
      
      
      while(true) {
      	resultIndex = resultIndex % arr.length;
          resultIndex++;
      }
      
      
    • 修饰一个块的结束, 比如一个if 或者while 循环发生了嵌套, 而且每一个嵌套里面有很多代码, 在最后就会出现很多括号在一起, 分不清哪一块是哪一块, 这块就会需要一个标识来说明结束, 比如下面这个例子

      for (int i = 0; i < arr.length; i++) {
          
          while (index != 0) {
              
              if (index = 23) {
              	
              } // end if
          } // end while
      } // end for
      
  • 块注释

    • 一般来说明一个小功能的时候来使用, 一般伴随着比较长的一个注释

      void heapify() {
          /*
          在这里实现以下heapify, 在三个节点中, 找到最大的放在头上, 另外两个不用动
          */
      }
      
    • 另一种情况就是写自己的介绍或者自己对这个代码的注释进行排版, 多见于国外的api或者外国友人写的代码中的注释

  • 文档注释, 这个多见于java代码中, 可以非常方便的对方法, 和全局变量附上信息, 在另外的地方也可以获得这种信息, 变量使用@param, 返回值使用@return 声明等等, 且支持html的大部分语法, 以下是节选了jdk中的部分源码

        /**
         * Replaces the first substring of this string that matches the given <a
         * href="../util/regex/Pattern.html#sum">regular expression</a> with the
         * given replacement.
         *
         * <p> An invocation of this method of the form
         * <i>str</i>{@code .replaceFirst(}<i>regex</i>{@code ,} <i>repl</i>{@code )}
         * yields exactly the same result as the expression
         *
         * <blockquote>
         * <code>
         * {@link java.util.regex.Pattern}.{@link
         * java.util.regex.Pattern#compile compile}(<i>regex</i>).{@link
         * java.util.regex.Pattern#matcher(java.lang.CharSequence) matcher}(<i>str</i>).{@link
         * java.util.regex.Matcher#replaceFirst replaceFirst}(<i>repl</i>)
         * </code>
         * </blockquote>
         *
         *<p>
         * Note that backslashes ({@code \}) and dollar signs ({@code $}) in the
         * replacement string may cause the results to be different than if it were
         * being treated as a literal replacement string; see
         * {@link java.util.regex.Matcher#replaceFirst}.
         * Use {@link java.util.regex.Matcher#quoteReplacement} to suppress the special
         * meaning of these characters, if desired.
         *
         * @param   regex
         *          the regular expression to which this string is to be matched
         * @param   replacement
         *          the string to be substituted for the first match
         *
         * @return  The resulting {@code String}
         *
         * @throws  PatternSyntaxException
         *          if the regular expression's syntax is invalid
         *
         * @see java.util.regex.Pattern
         *
         * @since 1.4
         * @spec JSR-51
         */
        public String replaceFirst(String regex, String replacement) {
            return Pattern.compile(regex).matcher(this).replaceFirst(replacement);
        }
    

3. 编码习惯

  • 书写对人类友好的代码

    简而言之, 就是让我们的代码可读性增强

    • 按照命名规范编码

      • 所谓命名规范, 就是我上面提到的一些命名规范和注释的规范, 写代码的时候要遵守这些规范
    • 对变量名和方法/函数进行描述

      • 变量名描述: 一般对全局变量名进行描述
      • 方法/函数描述: 对每一个方法进行描述, 即添加注释, 避免方法名有歧义的地方
    • 做好代码的缩进和换行

      在编码过程中, 调整好代码的缩进和换行也是增强代码美观的方式, 体现程序员的专业素养

      • 缩进: 缩进可以采用tab键的方式进行缩进, 也可以采用多个空格造成的缩进的方式, 但一定要注意不要两者混用. 并且在一个代码块中缩进要一致
      • 换行: 适当的换行也可以增强代码的可读性.
  • 在一定高度上思考

说白了就是把握好全局

  • 不要在一个文件中写太多代码: 多见于编程的初学者

  • 高内聚, 低耦合: 内聚, 就是一个功能在一个代码块/文件中实现, 一个代码块只实现这一个功能, 尽量不要牵连到其他内容, 低耦合就是各个功能之间尽量做到关系降到最低

  • 编码之前做好计划

    • 先写需求文档: 当我们做一个项目之前, 先写一下需求文档, 将所有的突发情况都想到之后我们再写代码.
    • 做功能之前先写demo: 当我们学习一个东西, 或者要添加一个功能时候, 先写一个小demo, 测试通过了再加入到正式代码中.
    • 写bug文档: 在有可能出现bug的地方写出来
  • 编写可扩展性的代码

    当我们写完一个代码之后, 想要为这个代码增加新功能的时候不需要重新写代码就性

  • 不要乱加功能

    • 只需要满足自己的需求就行
    • 记住, 为什么要写一个你几乎不会用的功能呢? 只能说明你会, 而不是你应该做这个事
  • 学会快速查找错误并解决

    • 会debug, 会设置断点, 会看错误信息/日志
    • 会过滤错误, 找出根源错误: 对于发生的多个错误, 要找出核心错误, 很有可能你的这一个核心错误, 造成了其余的所有错误.
  • 会版本控制工具:

  • 会学习

    • 多看一些开源项目: 为开源框架找找bug, 学习GitHub上星星多的代码, 不会上Github的去Gitee上看看也行
    • 一旦你入了程序员这一行, 就永远不要停止学习, 必须与时俱进, 永远站在时代的前列, 不然的话就会在裁员的浪潮中渣都没有剩下.

一旦你入了程序员这一行, 就永远不要停止学习, 必须与时俱进, 永远站在时代的前列, 不然的话就会在裁员的浪潮中渣都没有剩下.

作者联系方式

作者联系方式: qiaoguangtong@aliyun.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值