代码不同于普通文字,阅读时注意两方面:

  • 符号含义:相同符号,上下文不同时含义也不同,如*和&
  • 阅读顺序:不总是按从左往右顺序阅读的,有时要倒着读或者跳着读逻辑才通顺
  • 适当省略:有些内容虽然写了,但不需要读出来
  • 分清主次:类似课文每段有中心句,代码也分主要逻辑代码和次要逻辑代码

读代码和写代码是两个相反的过程,要求是一样的

  • 读代码:代码——逻辑——这段代码干了什么(输入)
  • 写代码:要实现什么功能——逻辑——代码(输出)

1、符号含义:

Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){}

  • ::读作“的”,Student类的Student函数(类似“二班的小明”,其他班也可能有叫小明的)
  • ()读作“参数”,构造函数Student()有三个参数,分别是*name,age,score
  • *读作“指针”,表示参数是指针类型的
  • :读作“初始化”,后面的初始化语句以逗号隔开
  • ()读作“等于”,m_name=name
  • {}读作“函数体”,代表Student是个函数,函数体为空

一整句连起来读:

Widget::Widget(QWidget *parent):QWidget(parent),ui(new Ui::Widget){ui->setupUi(this)}

  • 创建Widget对象时执行以下内容:执行父类QWidget的构造函数,创建一个Ui::Widget类的对象ui,并执行Ui::Widget类的setupUi()函数

其他常见语句元素:

  • public:共有继承
  • explicit:显式
  • static:静态(隐藏)
  • <>:of
  • ->:的
  • =:如果前面是指针变量,读作“指向”

只有每个符号的含义明确了,才能流畅地阅读代码;同理,只有知道具体逻辑通过什么符号表达,才能流畅地写代码

2、阅读顺序:

删除二分搜索树中最小节点的代码:

 1 Node* removeMin(Node* node){
2 // 递归到底
3 if( node->left == NULL){
4 Node* rightNode = node->right;
5 delete node;
6 count --;
7 return rightNode;
8 }
9 node->left = removeMin(node->left);
10 return node;
11 }
  • 函数定义:跳读,先读函数名(要干的事),再读参数,最后读返回值类型
  • 赋值语句:从右向左读,如int* A= B,把B赋值给A,A是一个整型指针变量
  • 判断语句:从左向右读
  • 函数调用:跳读,先读函数名(要干的事),再读参数,最后读把返回值赋给谁

按逻辑顺序读代码才不累,写代码也一样,是按逻辑顺序跳着写的,而不是像写文章一样顺着写的

参考:

显式和隐式:

https://blog.csdn.net/zyw_ym_zone/article/details/9348415

[c++] 如何流畅地读写代码的更多相关文章

  1. PPM图片格式及其C读写代码

    PPM图像格式介绍 PPM图像格式是由Jef Poskanzer 大叔,在我出生那一年,也就是1991年所创造的,碰巧的是PPM也是天蝎座. PPM(Portable Pixmap Format)还有 ...

  2. linux scull 中的读写代码

    读和写方法都进行类似的任务, 就是, 从和到应用程序代码拷贝数据. 因此, 它们的原型 相当相似, 可以同时介绍它们: ssize_t read(struct file *filp, char   u ...

  3. Hadoop_HDFS文件读写代码流程解析和副本存放机制

    Hadoop学习笔记总结 01.RPC(远程过程调用) 1. RPC概念 远程过程指的不是同一个进程的调用.它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 不能直接拿到远 ...

  4. 10.3 io流 正篇 FileReader FileWriter读写代码

    一.FileWriter 小节: 1)FileWriter fw = new FileWriter("a.txt",true);//表示追加写入,默认是false.正常情况:执行多 ...

  5. HDFS API 文件读写代码演示

    一:准备工作 1.新建class类 2.开启HDFS服务 3.将配置文件拷贝进resources路径 方便了Configuration的读取配置. 二:读出HDFS文件系统中的文件到控制台 4.读出在 ...

  6. 012 HDFS API 文件读写代码演示

    一:准备工作 1.新建class类 2.开启HDFS服务 3.将配置文件拷贝进resources路径 方便了Configuration的读取配置. 二:读出HDFS文件系统中的文件到控制台 4.读出在 ...

  7. Python 代码风格

    1 原则 在开始讨论Python社区所采用的具体标准或是由其他人推荐的建议之前,考虑一些总体原则非常重要. 请记住可读性标准的目标是提升可读性.这些规则存在的目的就是为了帮助人读写代码,而不是相反. ...

  8. 在.net中读写config文件的各种方法

    阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...

  9. Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅

      Android 高手进阶(21)  版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处http://blog.csdn.net/xiaanming/article/details ...

随机推荐

  1. 第2课:操作系统网络配置【DevOps基础培训】

    第2课:操作系统网络配置 --DevOps基础培训 1. DNS配置 1.1 什么是DNS? 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP ...

  2. C. 【例题3】畜栏预定

    C . [ 例 题 3 ] 畜 栏 预 定 C. [例题3]畜栏预定 C.[例题3]畜栏预定 题解 考虑贪心 Code #include <bits/stdc++.h> using nam ...

  3. [矩阵乘法]裴波拉契数列III

    [ 矩 阵 乘 法 ] 裴 波 拉 契 数 列 I I I [矩阵乘法]裴波拉契数列III [矩阵乘法]裴波拉契数列III Description 求数列f[n]=f[n-1]+f[n-2]+1的第N ...

  4. [树形DP]电子眼

    电 子 眼 电子眼 电子眼 题目描述 中山市石一个环境优美.气候宜人的小城市.因为城市的交通并不繁忙,市内的道路网很稀疏.准确地说,中山市有N-1条马路和N个路口,每条马路连接两个路口,每两个路口之间 ...

  5. openGL官方Glut库配置教程

    在配置前要先安装好Visual Stdio环境 官方下载网站 注:一台Windows操作系统中可以存在多版本的Visual Stdio,多个版本之间互不干扰但不共享插件库,且高版本向下兼容,因此笔者更 ...

  6. tensorflow学习--数据加载

    文章主要来自Tensorflow官方文档,同时加入了自己的理解以及部分代码 数据读取 TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每 ...

  7. Oracle-buffer cache过小导致SQL执行时间长

    一.问题:客户反馈在生产库和测试库执行相同SQL,测试库执行比生产库慢一倍 问题摆在这里,需要进行分析? 啥??? 版本11.2.0.4,都是单实例,主机系统硬件配置差不多. 二.对比SQL的执行效率 ...

  8. Day17_106_IO_利用Buffered和BufferWriter完成复制

    利用Buffered和BufferWriter完成复制 代码示例: 用BufferedReader 和 BufferWriter完成复制 import java.io.*; public class ...

  9. Day17_103_IO_InputStreamReader 字符转换流

    InputStreamReader 字符转换流 * import java.io.InputStreamReader; 将字节输入流转换为字符输入流 * import java.io.OutputSt ...

  10. 数据结构(3):java使用数组模拟堆栈

    堆栈原理: 数组模拟堆栈: //数组模拟栈 class ArrayStack{ //栈顶 private int top = -1; private int maxSize; private int[ ...