zoukankan      html  css  js  c++  java
  • 程序之美(转自知乎)

    因为程序是逻辑的集合,是一种结构化的事物,因此程序的美往往体现了某种秩序。

    1. 基本的秩序是基础 CS 理论的应用,比如程序中实现了一某种数据结构,针对数据结构的某种算法,这些结构和算法都具备一些固定的性质。你的程序具备了这些性质,就在一定层面上(这里是运行时)具备了秩序。数据结构和算法的秩序,就是你的代码“美”的体现;

    2. 紧接着就是代码的可约性。也就是你的逻辑是不是可以再化简的,一个等式越化简越接近结果,一段代码越化简越接近本质。你实现的基本算法和数据结构,每一行代码都是必须的吗?如果能够化简,说明逻辑是可约的。如果你能保证代码再简单不过了,你就对自己代码有了自信;

    3. 普适性。一段代码是否可以适用于多种类型的输入,比如泛型算法;

    4. 对称性。对称性看的往往不是代码逻辑,而是代码本身。最典型的,平移对称。处在同一层次上的所有函数/类的命名、注释风格相同,内部相似(不是相同)逻辑顺序相同,那么可以认为具备平移对称。对称性的好处不仅仅是代码好看,它通常意味着管理一处代码的经验可以不经改变的应用到另一处。从代码阅读/重构,到用正则对代码做静态分析,再到抽象出程序库或者框架,都依赖于这种平移对称。除了代码外,系统本身也有对称性。代码或系统的对称性和可维护性通常是正相关的。

    一段代码或者系统能够保证的性质越多,也就是越具备秩序。就越给人以“美”感觉。相反,如果自己写出来的代码不能保证秩序,就会给他人甚至自己以“丑”的感觉。没有秩序的代码,也就是混沌代码。不断发现和学习更多的性质,并练习如何在代码里保证这些性质,就是将代码由“丑”,变“美”的过程。

    http://www.zhihu.com/question/20674623

  • 相关阅读:
    IE8上传插件jquery-form.js上传请求参数设置type为post失效问题
    路径参数汉字兼容问题
    vue-cli2移动端适配
    事件委托原生、jQuery实现
    new Date()在移动端的问题
    create-react-app配置less
    删除左右两边空格
    日期转换
    Git 常用命令
    单页面应用
  • 原文地址:https://www.cnblogs.com/code-style/p/3279239.html
Copyright © 2011-2022 走看看