代码之家  ›  专栏  ›  技术社区  ›  mouche

为任务列表程序设计函数的参数和返回值

  •  1
  • mouche  · 技术社区  · 14 年前

    我正在做一个任务列表程序,以便在上课前复习我的C。我有两个结构,任务和任务列表。

    任务结构如下:

    typedef struct task
    {
      char name[100];
      bool completed; /* bool is described as an enum in an included header file */
      date due_date; /* date is a described as a struct in an included header file */
    } task;
    

    我有以下工作职能:

    • 列表项
    • add_task():将任务添加到任务列表
    • print\u tasklist():打印类似于普通待办事项列表的任务列表,其中包含每个项目的复选框、名称和截止日期
    • print\u task():打印给定任务的详细信息

    我想将这个任务列表用于cli界面,然后将其更改为GUI,因此我想使之成为一个简单的切换。

    一开始,我需要add \u task()malloc()-调用一个新任务并返回指向该任务的指针,然后delete \u tasklist()递归地遍历并释放()内存,因为它删除了任务列表。我从我的OOP和Java经验中得到了这种方法。

    用C语言设计这个的最好方法是什么?

    add\u task()函数应该采用一个任务结构来添加到列表中,或者仅仅是应该在任务中的变量,并让add\u task()函数初始化它?

    1 回复  |  直到 14 年前
        1
  •  2
  •   AmirW    14 年前

    add_task() 使用任务结构(任务列表不必知道任务结构的内部表示形式)。

    create_task() 方法,该方法接收任务字段并返回填充了这些字段的任务结构。

    创建任务() 属于任务结构,而 添加任务() TaskList.AddTask(task) ,和 Task.Create(name, dd, isCompleted)

    get_task() 方法,是您需要多次使用的方法(如您所述, print_stack() , delete_stack() ). 将此代码封装在函数中显然比代码复制好。(例如,如果你在这段代码中发现了一个bug,你将不得不修复它一次,而不是在你的程序中到处搜索)。另外,由于此代码具有“独立的含义”,因此很方便使用执行此代码的函数。