gpt4 book ai didi

c - 在 C 语言中,为什么更多的函数比更复杂的函数更可取?

转载 作者:行者123 更新时间:2023-12-02 09:17:08 24 4
gpt4 key购买 nike

我以前多次遇到过这种现象,但没有一个像下面这样清楚地证明了我的观点:

source code for pwhois有两个功能:

w_lookup_all_pwhois(whois_session_params * wsess, char *addr)
w_lookup_as_pwhois(whois_session_params * wsess, char *addr)

这些是 40 到 60 行的函数,除了 ...as_pwhois 之外都是相同的。函数仅保存“origin-as”字段,而 ...all_pwhois保存所有字段。

如果我正在编写这些,我会编写一个函数,并使用另一个变量来表示是获取所有字段还是仅获取单个字段。根据应用程序,此变量甚至可以标记要获取哪些字段。一个优点是,当从头开始读取代码时,我不必读取两个相同的函数(它们在代码中不相邻)来找出它们执行完全相同的操作。此外,当更改某个功能的功能时,我不必访问每一个相关功能,也不必修改那里的代码。缺点:功能更复杂——看似很小的缺点。

但是,从互联网上可用的开源代码来看,我公司的大多数开发人员似乎更喜欢多功能方法,其他地方的情况似乎也是如此。结果,pwhois有大约 50 个函数,我必须记住哪一个函数做什么——而 10 个多功能函数就可以轻松完成这项工作。我错过了什么,这使得 50 功能方法更可取?有没有一种方法可以从头开始读取源代码,从而避免多次读取这些非常相似的函数? (由于这些函数在代码中并不相邻,我猜想可能有一些我还没有遇到过的“标准”注释文件。)

最佳答案

拥有多种协同工作的功能可以做很多事情。

  • 首先,它创建了更多可重用的组件。程序运行中可能包含的功能不仅可供程序本身访问,而且任何想要查看并修改它的开发人员都可以访问。
  • 其次,它分解了任务,使之更易于管理。如果您有一个大功能,则需要大量代码才能和谐地工作而不会出现错误,但是当采用更加模块化的方法时,就有更多的回旋余地。

想一个需要做一些困难数学运算的程序。您会采取哪种方法?

  1. 一种基于固定公式计算输出的函数,该公式几乎是唯一的并且只有一个应用程序。所有数学运算都是私有(private)定义的。
  2. 一种基于固定公式计算输出的函数,该公式几乎是唯一的并且只有一个应用程序。 但是,所有数学运算都被分解并可重用。

这个想法是,当您稍后工作或尝试修复错误时,您永远不知道以前编写的函数何时会派上用场!这是 DRY(不要重复自己)编程方法的一部分,并且 I'd recommend reading this article帮助减少您的工作量并保持代码高效! :D

关于c - 在 C 语言中,为什么更多的函数比更复杂的函数更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com