代码之家  ›  专栏  ›  技术社区  ›  pete blair

你写过很长的函数吗?若然,原因为何?

  •  5
  • pete blair  · 技术社区  · 6 年前

    我正在写一个关于 extremely long functions in the Linux kernel .

    为了这个目的,我在寻找现实生活中非常长的例子(几百条代码行),这样你就不会考虑糟糕的编程(也就是说,它们不会从分派表的分解或使用中获益)。

    你曾经写过或看过这样的代码吗?你能发布或链接到它,并解释为什么它这么长吗?

    我从这里的社区得到了惊人的帮助——任何将被纳入该项目的想法都将得到适当的认可。

    谢谢

    Udi

    7 回复  |  直到 8 年前
        1
  •  10
  •   Dan Andreatta    15 年前

    我写过的最长的函数都有一个共同点,一个非常大的switch语句。有时,您必须打开一长串的项,如果您试图将其中的一些选项重构为单独的函数,这只会使事情更难理解。拥有大型switch语句会使圈复杂度达到极限,但它通常比其他实现更好。

        2
  •  4
  •   Darius    15 年前

    这是我被解雇前的最后一次。

        3
  •  3
  •   Loren Pechtel    15 年前

    以前的工作:非常长的案例陈述,IIRC 1000多行。这是很久以前的事了。每个选项只有几行长。拆散它会让事情变得不那么清楚。实际上,有一对这样的例程对同一组底层数据类型执行不同的操作。

        4
  •  2
  •   David    15 年前

    我不认为最长的函数是一个定制CPU虚拟机的关键方法。与@epotter一样,这涉及到一个大的switch语句。事实上,我要说的是,我发现很多方法都涉及到switch语句,它们不能被彻底分解或提高可读性。

        5
  •  1
  •   Drew Hoskins    15 年前

    不幸的是,如果这种类型的子例程是在构建步骤中使用某种代码生成器自动生成的,那么您通常不会在某处签入或发布。

        6
  •  1
  •   Quincy    15 年前

    除了性能,我认为内核空间中调用堆栈的大小是8K(请验证大小)。而且,据我所知,内核中的代码是相当具体的。如果某些代码不太可能在将来重复使用,那么考虑到函数调用开销,为什么还要麻烦将其设置为函数呢。

        7
  •  0
  •   Ben Ben    15 年前

    推荐文章