一、好代码的评判标准

1,可维护性:在不破坏原有代码设计,不引入新的bug情况下,能够快速的修改或者添加代码。

2,可读性:代码是否符合编码规范,命名是否答意,注释是否详尽,函数是否长短合适,模块划分是否清晰,是否符合高内聚低耦合等等

3,可扩展性:在不修改或者少量修改原有代码的情况下,通过扩展点的方式添加新的功能

4,可复用性:尽量减少重复代码的编写,复用已有的代码

面向对象中的继承,多态能让我们写出可复用的代码;变成规范能让我们写出可复用的代码;设计模式中的单一职责,DIY,基于接口而非实现,里氏替换原则等可以让我们写出可复用,灵活,可读性好,易扩展,易维护的代码;设计模式可以让我们写出易扩展的代码;持续重构可以时刻保持代码的可维护性等等

 

二、设计原则与思想:面向对象

1,什么是面向对象:它以类和对象作为组织代码的基本单元,并将封装、继承、抽象、多态作为代码设计和实现的基石

①封装:信息隐藏或者数据访问保护

②继承:主要解决代码复用问题

③抽象:一方面提高代码的可扩展性、维护性;另一方面也是处理复杂系统的有效手段,能有效地过滤掉不必要的关注信息

④多态:多态可以提高代码的扩展性和复用性,是很多设计模式、设计原则、编程技巧的代码实现基础

2,面向对象与面向过程

①什么是面向过程编程与面向对象编程

struct User {
  char name[64];
  int age;
  char gender[16];
};

struct User parse_to_user(char* text) {
  // 将text(“小王&28&男”)解析成结构体struct User
}

char* format_to_text(struct User user) {
  // 将结构体struct User格式化成文本("小王\t28\t男")
}

void sort_users_by_age(struct User users[]) {
  // 按照年龄从小到大排序users
}

void format_user_file(char* origin_file_path, char* new_file_path) {
  // open files...
  struct User users[1024]; // 假设最大1024个用户
  int count = 0;
  while(1) { // read until the file is empty
    struct User user = parse_to_user(line);
    users[count++] = user;
  }
  
  sort_users_by_age(users);
  
  for (int i = 0; i < count; ++i) {
    char* formatted_user_text = format_to_text(users[i]);
    // write to new file...
  }
  // close files...
}

int main(char** args, int argv) {
  format_user_file("/home/zheng/user.txt", "/home/zheng/formatted_users.txt");
}
面向过程代码

相关文章: