• [c++] 如何流畅地读写代码


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

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

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

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

     

    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

  • 相关阅读:
    VS2012 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
    什么是 Cookie
    Memcached的简介和使用
    visual studio 2012打开提示 未能将网站×××配置为使用 ASP.NET 4.5 和 尚未在Web服务器上注册,您需要手动将Web服务器配置为使用ASP.NET 4.5
    SQLServer中char、varchar、nchar、nvarchar的区别:
    Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版
    C#操作sql通用类 SQLHelper
    用C#写入Excel表并保存
    C# TreeView 控件的综合使用方法
    ADODB.Connection、ADODB.RecordSet
  • 原文地址:https://www.cnblogs.com/cxc1357/p/11894377.html
Copyright © 2020-2023  润新知