Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/function/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 声明函数以提高可读性的模式 在调用函数之前需要声明的C++函数。这可以通过函数签名解决,但在大多数情况下,新的编程语言、C#、Python等不再需要函数签名 然而,在阅读其他人、代码和在一个类中构造函数时,我发现我忽略了C++中存在的一致性。_Design Patterns_Function_Code Readability - Fatal编程技术网

Design patterns 声明函数以提高可读性的模式 在调用函数之前需要声明的C++函数。这可以通过函数签名解决,但在大多数情况下,新的编程语言、C#、Python等不再需要函数签名 然而,在阅读其他人、代码和在一个类中构造函数时,我发现我忽略了C++中存在的一致性。

Design patterns 声明函数以提高可读性的模式 在调用函数之前需要声明的C++函数。这可以通过函数签名解决,但在大多数情况下,新的编程语言、C#、Python等不再需要函数签名 然而,在阅读其他人、代码和在一个类中构造函数时,我发现我忽略了C++中存在的一致性。,design-patterns,function,code-readability,Design Patterns,Function,Code Readability,在保持可读性和对代码结构的理解的同时,存在哪些模式来声明/排序函数 编辑1 这是一个粗略的例子 class A { private FunkB() { ... } private FunkC() { ... } public FunkA() { FunkB(); FunkC(); } public FunkD() { FunkC(); ... } } v、 美国 编辑2 这将是编写代码的指

在保持可读性和对代码结构的理解的同时,存在哪些模式来声明/排序函数

编辑1


这是一个粗略的例子

class A
{
  private FunkB()
  {
    ...
  }

  private FunkC()
  {
    ...
  }

  public FunkA()
  {
    FunkB();
    FunkC();
  }

  public FunkD()
  {
    FunkC();
    ...
  }
}
v、 美国

编辑2



这将是编写代码的指南,而不考虑编辑器。较新的编辑有很好的“去定义”功能,图书标记也有助于实现这一点。然而,我对独立于编辑器的模式感兴趣

在IDE中,方法的顺序对我来说似乎无关紧要。我不阅读整个源代码,而是像这样进行:阅读一个方法,发现一个有趣的函数调用,让IDE打开该函数的声明(很可能在另一个源代码中)。或者找到一个有趣的函数,想知道它在哪里使用,让IDE列出引用

IDE通常显示类中方法的摘要列表,并以各种方式对其进行排序和过滤,因此再次不需要端到端读取

我唯一想要的是“这门课是为了什么”的理解。有两件事可以帮上忙:接口编程和良好的类文档


因此,我鼓励明确记录类的职责,通常用特定接口表示。源代码中方法的顺序对我来说不太重要

在单独读取方法的代码时,您希望了解该方法的意图。如果方法内部的抽象级别良好,并且所有其他被调用方法的名称在其上下文中都有意义,那么您就不需要了解它们来理解代码。你会像对待黑匣子一样对待他们

一些有助于在小型计算机中实现更高可读性的原则:


别忘了,一定要用好名字!这就是为什么您的示例不适合本次讨论的原因。

如前所述,使用任何像样的IDE,文件中函数的顺序就不成问题了。面向对象语言的情况尤其如此,其他导航方法比顺序读取更有用。例如:阶级继承权;课程大纲;称为继承人。如果你真的错过了函数定义,那么也许语言中有某种东西可以满足这个目的,例如:C++中的纯虚拟类(如果是这样的话)或java接口。 然而,尽管如此,每当我重新组织源文件中的文本时,我总是倾向于根据函数的内聚性来排序函数[1]。之后,我按照函数生成的顺序进行。如果,像你的例子一样,我有一个函数,其他较小的辅助函数都是从这个函数中产生的,我会把它们放在它们被提取的下面。我只是觉得先看重要的东西更直观,在我需要了解之前忽略较小的细节,而先看较大的方法通常可以做到这一点。这看起来更像您的第二个示例

总而言之,我会选择先大后小,或者先公共再私人帮手


[1] 如果一个类/文件中有太多的分组,这是一种代码味道,建议将它们拆分为更小、独立的单元

匿名函数是函数式语言(如Lisp)的核心部分。如果你搜索函数式编程设计,你可能会找到一些关于最佳实践的信息。t洛奇:他说的不是匿名函数,而是转发声明。是的,在我现在回顾的代码中有很多函数,但它们分散在源文件中。我正在寻找一种方法,以相关的方式对它们进行排序,以便下一个必须阅读它的人更容易阅读。这些功能非常有用,尤其是在处理大块代码时。这些特性确实表明,当没有适当的编码模式允许某些人理解代码时,这些功能是有效的。
class A
{
  public FunkA()
  {
    FunkB();
    FunkC();
  }

  private FunkB()
  {
    ...
  }

  private FunkC()
  {
    ...
  }

  public FunkD()
  {
    FunkC();
    ...
  }
}