系统程序员成长计划读书笔记 1章 2章

《系统程序员成长计划》读书笔记-第0,1,2章

语言、开发环境等,无需赘述

1章

代码风格:

我觉得不一定要遵循作者的代码风格,但一定要和团队的习惯保持一致,自己的代码风格也要统一。代码要整洁、美观。

封装:

这是面向对象程序设计的基本原则之一,可以隔离变化,降低复杂度。封装的方法:隐藏数据结构,隐藏内部函数(用static修饰),禁用全局变量,这三个方法都是实现封装的必要手段。

通用链表:

  1. 存值还是存指针?
    存值时复制一份数据,保存数据的指针和长度。考虑到复制数据会带来性能开销,不考虑。只保存指向对象的指针,存取效率高。
  2. C++可以调用
    C++为了实现函数重载,编译器会把函数名重新编码。重新编码后就合原来的函数名不一致了,链接的时候就找不到相应的函数。为了让c++可以调用,需要在C的头文件中加上:
    1
    2
    3
    4
    5
    6
    7
    8
    #ifdef __cplusplus
    extern "C"{
    #endif
    ...

    #ifdef __cplusplus
    }
    #endif
  3. 通用链表的打印函数
    链表中可能存放多种数据类型,如何实现一个通用的打印函数?实现多个,爱用哪个用哪个?这种做法会导致大量的重复代码,并且每次添加新的类型时,都要改实现。
    比较好的方法:调用dlist的接口函数获取每一个位置的数据并打印出来。但是因为数据类型不确定,所以需要调用方自己提供一个打印的回调函数。
  4. 不要写重复的代码
    重复的代码更容易出错,且经不起变化。所以累加链表中的整数和找出链表中的最大值这两个函数是非常类似的,都可以通过写一个遍历链表的函数然后通过回调函数来解决。

2章

主要讲了代码写的又好又快的方法。
作者讲了自己的经验之谈,比如阅读自己的代码,避免常见错误。