zoukankan      html  css  js  c++  java
  • 代码两三事

    一直有点代码洁癖,看到凌乱的代码就忍不住想改,但是有时候怕生变故也只能忍着不改,那种心情。。今天想谈谈我心目中的好代码是什么样的,希望能对大家有点帮助。

    从书本上读过,一个算法好坏,可以从正确性、可读性、健壮性、高效性和简洁性这5个方面来评价。算法也是通过代码实现的,那么算法的标准对于代码来讲也应该是通用的。精心设计的代码理应拥有以上特性。但是算法旨在描述一种逻辑思路,是一个完全独立的单元,所以他不是好代码的全部。而一个完整的代码不同,它还要关注可扩展性、可测试性。

    下面就接着以上特性做出描述:

    1. 可读性
      我是特意把这个放在第一条的,有人说代码首先是要给人家看的,这个我非常赞同。代码能否按照我们期望正确执行,很大程度上决定于人们对代码理解的程序。可读性主要有:
      • 逻辑清晰:清晰的思路就像与人对话,通过代码能理解你的想法,不会出现大的阅读障碍;
      • 关键注释:在关键的代码加上注释,写清楚需要注意什么,为什么要这么写。
      • 命名规范:这其实也算注释的一种。命名不规范是最让人头疼是一件事情,比如:词不达意,拼音英文混合双打,object1,a,b,x,y,z等。所以最好的情况是仔细斟酌命名,让人清楚的知道这个东东是干嘛的。
    2. 正确性和可测试性
      代码不止是给人家看的,是要给机器执行并且需要满足预期的。我们要保证程序按照我们期望的那样执行,那就需要确保代码是可以通过测试被覆盖到的。可测试性是指,写完了代码要有单元测试(或者其他比如直接main方法)覆盖到各个分支,绝大多数bug都可以通过单元测试这类手段来规避的。可测试性的代码决定了程序的正确性。
    3. 健壮性
      外界的一切输入都是不可信的,谁也无法保证进来数据都是正常,所以代码里需要对各种各样的情况做出恰当的处理。而不是出问题的时候怪别人搞事情。
    4. 高效性
      代码的高效性是指用尽量少的时间去完成一件事情,比如想要获取一个地区数据,每次都从数据库里查询,实际上这类数据并不是经常发生变化,那我们就可以把它加载到内存进行读取了。高效性的点是很多的,无法一下道来,要多写多看多想。
    5. 简洁性
      都是开车,手动挡得油离配合,各种加减档,而自动挡则是给油就走,对正常使用而言,我们自然愿意开自动挡。所以这个没有什么好说的。
    6. 可拓展性
      好的代码必然是模块化的、高内聚低耦合的。改一处代码,只需要在修改的位置做出简单的测试即可。而不是改一行代码,要牵扯到很多改动,这个也是一个很大的话题。

    从代码可能无法完全定位一个人的水平,但是可以了解一个人的基本素养。其实再往深了想依然有可以挖的,这里就不上升那种层次了。

    这篇文章不错,大家可以看一下:
    https://www.sdk.cn/news/4719

  • 相关阅读:
    spring-AnnotationConfigApplicationContext源码阅读
    图解http pdf
    paasone的创新(2):separated langsysdemo ecosystem及demo driven debug
    Plan9:一个从0开始考虑分布式,分布appmodel的os设计
    terra++
    qtcling
    terracling:前端metalangsys后端uniform backend免编程binding生成式语言系统设想
    ubuntu touch: deepin pc os和deepin mobile os的天然融合
    windows版gbc:基于enginx的组件服务器系统paas,可用于mixed web与websocket game
    WinPE VirtIO云主机版 支持west263 阿里云aliyun 送精简win2k3镜像
  • 原文地址:https://www.cnblogs.com/liushijie/p/6181065.html
Copyright © 2011-2022 走看看