zoukankan      html  css  js  c++  java
  • 写代码与写文章

    写代码和写文章非常相似,都利用电脑工作,都码字。判断一段代码好不好,能考评的也就是代码的格式,风格还有算法了,下面从这些方面来看看写代码和写文章是多么的相似。

    格式

    在写代码里主要指缩进,空格,空行,对齐等文本排版形式,这个是最最容易到达的一个代码好的指标,好多的IDE环境都是一键自动格式化。好的代码格式就像好的文章一样排版精美,段落清晰。代码的格式美观是形式美,是外在美。

    /** 差的格式举例 **/
    function swap(a, b)           {
    var           c=a;
      a=b;
              b=c;
          }
    
    /** 好的格式举例 **/
    function swap(a, b){
        var c = a;
        a = b;
        b=c;
    }

    风格

    作家写作有文风,编码也有码风,代码风格就包含更多的东西了,比如命名风格,比如实现方式。

    码风其实和文风是很像的,比如鲁迅散文诗集<野草>中的第一篇,名为<秋夜>。第一段原文如下:“在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。”那换一种文风来描述也可以是:“我家后院墙外种着两颗枣树。”

    排除需要表达的深层含义,这两种文字都表达了我家后院有两棵枣树,达到的目的是一样的。无法是采用的词汇语句不一样而已,即使得文风不同。在编码的时候,码风也是这样形成的,相同的功能需求,不同的人来编写,代码基本也都不是完全一样的,因为每个人都有自己的码风,这个码风就体现在了变量的命名,循环语句的偏好(for还是while)等等等等。

    举个不同码风的例子:

    /** 数组求和 **/
    function sum_for(arr){
        var sum = 0;
        for(var i = 0; i < arr.length; i++){
            sum += arr[i];
        }
        return sum;
    }
    
    function sum_while(arr){
        var sum = 0, i = arr.length;
        while(i--){
            sum += arr[i];
        }
        return sum;
    }

    算法

    写文章会有一个提纲一个骨架。写代码也是一样的,不过我们称之为算法,算法决定了整个代码的行文走向,是悲剧还是喜剧。如果你想写篇文章,因为你有个很好的想法需要表达给你的读者,但是由于你词句匮乏,成语还错用,写出来的文章就会总是文不达意。相同的写代码有时候也会文不达意,因为for语句的语法规则没弄清楚,处理流程便会出现了预期结果不一致的结果,这个时候我们称之为BUG了。算法是一段代码的灵魂思想,正如一篇文章,尽管文风平实,但思想深邃,构思巧妙,发人深省,影响深远。好的算法也有这种魅力,码风平实,但用途广泛,小如快速排序,泛如动态规划,好的算法甚至可以流芳百世,如好的小说被翻译成各国语言,好的算法也会被各种编程语言实现。编程语言说到底是一种表达工具,是为了表达我们心中的算法的工具。如果写代码只追求格式与风格(码风),毫不理会算法设计,那么就会像写文章只追求排版与辞藻却毫无思想,读完也会空洞无力。所以算法就像代码的灵魂,是一种内在的美。

    现实的世界

    现实的世界与理想的世界不同,不过写代码又一次神似写文章了,我们好多的程序员也是复制粘贴,引用第三方类库,自己组织的部分也仅仅是小部分,底层研发的程序员在业界也总是占小部分。从事编辑工作的大部分工作也是编辑转载,原创的编辑也是少之又少。

    最后

    虽然上面几段我把算法是夸了又夸,推崇至极,但是如果你和我一样都是创造不了伟大算法的那种平凡人,也就是我们只能在代码格式和代码风格上多做努力的朋友们。咱们晦涩难懂的码风还是少写一些,做程序员要厚道!以上纯属娱乐~~欢迎大家提供更多有趣的相似点

  • 相关阅读:
    mysql-Invalid use of group function-聚合函数不能直接使用在where后面-使用exists,外查询与子查询应条件关联
    python-数据库之pymysql模块(连接对象-游标对象-执行-获取值或者提交事务)
    python作业-99乘法表作业,注意制表符合print结束符以及外层和里层怎么确定的,以及闰年
    python学习笔记-if_while_for_break_continue
    python-python中的Debug大法
    python-常用的几种格式化方法
    python学习一周总结
    python学习笔记-列表,字典,以及函数返回值
    python-注释,变量命名和规范笔记
    OpenJudge 求重要逆序对数
  • 原文地址:https://www.cnblogs.com/binking338/p/4882964.html
Copyright © 2011-2022 走看看