一、好代码的评判标准
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"); }