面向过程编程常见问题

  • 函数与函数之间的高内聚、低耦合性问题
    实现函数要基于高内聚,低耦合的思想。
    高内聚低耦合指的是函数内部的代码要有高内聚性,而函数之间要保持低耦合性。

低耦合性指的是函数之间的依赖关系较弱,相对独立,一个函数的改动不会对其他函数造成过多的影响。
低耦合的函数在设计上应该尽量减少使用全局变量或直接修改其他函数的参数,而是通过参数传递和返回值来进行数据交互。

高内聚性指的是函数内部的代码逻辑和功能彼此相关,实现的是一个具体的功能或目标,各个部分之间密切配合。
一个高内聚的函数通常只完成一个明确的任务,并且其内部的代码逻辑清晰、简洁。
例如:学生信息管理系统中,添加学生个人信息的函数只实现一个具体的功能,添加学生信息

def add_stu(sid, exit_sid_list, name, exit_name_list, age, sex, add_stu_list):
    """
    添加新学生信息:函数参数为编号,姓名,年龄,性别四个参数,返回是否添加成功的结果,要求编号不可重复。
    :param sid: 新学生的学号
    :param exit_sid_list: 已存在的学生学号列表
    :param name: 新学生的姓名
    :param exit_name_list: 已存在的学生姓名列表
    :param age: 新学生的年龄
    :param sex: 新学生的性别
    :param add_stu_list: 待添加的学生个人信息记录列表
    :return: 返回是否添加成功的结果
    """
    while sid in exit_sid_list:
        sid = input("学号不可重复,添加失败,请重新输入学号:")
    else:
        exit_sid_list.append(sid)
    if name not in exit_name_list:
        exit_name_list.append(name)
    stu_ele = {"sid": sid, "name": name, "age": age, "sex": sex}
    add_stu_list.append(stu_ele)
    print("添加成功!")
    return add_stu_list

低耦合的函数在设计上应该尽量减少使用全局变量或直接修改其他函数的参数,而是通过参数传递和返回值来进行数据交互。
例如:学生信息管理系统中,各个功能模块的函数都只使用局部变量,并且功能模块函数之间是通过参数传递和return返回值进行数据交互

    if select_op == '1':
        sid = input("请输入新学生学号:")
        name = input("请输入新学生姓名:")
        age = input("请输入新学生年龄:")
        sex = input("请输入新学生性别:")
        add_stu_list = add_stu(sid=sid, exit_sid_list=sid_list, name=name, exit_name_list=name_list, age=age,
                               sex=sex, add_stu_list=stu_list)
        print_all_stu(all_stu_list=add_stu_list)

    def add_stu(sid, exit_sid_list, name, exit_name_list, age, sex, add_stu_list):
    """
    添加新学生信息:函数参数为编号,姓名,年龄,性别四个参数,返回是否添加成功的结果,要求编号不可重复。
    :param sid: 新学生的学号
    :param exit_sid_list: 已存在的学生学号列表
    :param name: 新学生的姓名
    :param exit_name_list: 已存在的学生姓名列表
    :param age: 新学生的年龄
    :param sex: 新学生的性别
    :param add_stu_list: 待添加的学生个人信息记录列表
    :return: 返回是否添加成功的结果
    """
        while sid in exit_sid_list:
            sid = input("学号不可重复,添加失败,请重新输入学号:")
        else:
            exit_sid_list.append(sid)
        if name not in exit_name_list:
            exit_name_list.append(name)
        stu_ele = {"sid": sid, "name": name, "age": age, "sex": sex}
        add_stu_list.append(stu_ele)
        print("添加成功!")
        return add_stu_list