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

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

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

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

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. (数据科学学习手札115)Python+Dash快速web应用开发——交互表格篇(上)

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...

  2. 全网最详细的Linux命令系列-cd命令

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 命令格 ...

  3. 理解的shell父子关系

    今天我们谈谈linux系统的shell的父子关系,因为大家对手机都比较熟悉,手机本身也是一个linux主机,所以我们今天就拿手机来举个例子. 首先就是创建一个新的shell,你可以把它理解成一个手机打 ...

  4. Java代理模式,一次复习完4种动态代理实现方式

    代理模式也是一种非常常见的设计模式.了解Spring框架的都知道,Spring AOP 使用的就是动态代理模式.今天就来系统的重温一遍代理模式. 在现实生活中代理是随处可见的,当事人因某些隐私不方便出 ...

  5. OO_Unit2总结

    OO_Unit2总结 (1) 多线程协同控制设计策略 总体信号通讯策略 本单元作业,我采用的是生产者-消费者模式加类观察者模式. 通过分析指导书给出的需求,我将最终我要实现的程序简化为了"输 ...

  6. Java(171-194)【接口、多态】

    1.接口概述与生活举例 接口就是一种公共的规范标准 只要符合规范标准,就可以大家通用 2.接口的定义基本格式  public interface 接口名称 {       // 抽象方法      / ...

  7. Spring Boot 快速迁移至 Quarkus

    Quarkus 是一个目前非常火的 Java 应用开发框架,定位是轻量级的微服务框架.,Quarkus 提供了优秀的容器化整合能力,相较于传统开发框架(Spring Boot)有着更快的启动速度.更小 ...

  8. php引入html文件(或php文件)的方法

    php引入html文件(或php文件)的方法 一.使用fopen()函数  此函数主要传入的是头两个参数(第一个是文件地址,第二个是打开方式),可以读取任何一个文本文件,然后用while将fopen函 ...

  9. 100多个很有用的JavaScript函数以及基础写法大集合

    100多个很有用的JavaScript函数以及基础写法大集合 1.document.write("");为 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:docume ...

  10. 【golang】golang 相关问题?

    1.golang 官网下载很慢: 中科大镜像:http://mirrors.ustc.edu.cn/golang/ 2.go get 下载依赖很慢的问题: https://goproxy.io/zh/ ...