注意:我为了简洁起见,在这篇WIKI中编写了UsB首字母缩略词,但不要指望在其他地方看到它被使用。
我知道这可能看起来是其他帖子的重复(最接近的一个是this),但在任何人将其标记为重复之前,请考虑我已经找到的所有材料存在哪些问题(我将把这篇文章制作成社区WIKI)。
过多的散乱示例。示例并不是坏事,但有时候人们找不到一个很好地适用于自己问题的示例,所以它们可能会让人感到困惑(尤其是对于新手来说)。
示例通常只有代码,解释很少。在这些微妙的问题上,尤其是对于(相对)新手来说,一种更自上而下的方法可能更好:首先提供一个清晰、简单的解释和一个抽象(但不是法律主义)的描述,然后提供一些简单的示例,并解释为什么它们会触发某些行为。
有些帖子经常混合使用C和C++示例。C和C++有时候对于他们认为的UsB、UB和IDB的定义不一致,因此一个示例可能会误导那些不精通两种语言的人。
当给出UsB、UB和IDB的定义时,通常只是引用标准,这有时可能对新手来说不太清楚或难以理解。
有时候标准的引用是不完整的。许多帖子只引用了与手头问题有关的部分标准,这是好的,但缺乏普遍性。此外,标准的引用通常没有任何解释(对于新手来说不好)。
鉴于我自己对这个主题并不是超级专家,我将创建一个社区WIKI,以便任何感兴趣的人都可以贡献和改进答案。
为了不破坏我的目的,即创建一个结构化的适合初学者的WIKI,我希望张贴者在编辑WIKI时遵循一些简单的指导方针:
分类您的用例。 如果可能的话,请将您的示例/代码放在已存在的类别下,否则创建一个新的类别。
首先是简单的描述。 首先用简单的话语描述(当然不要过于简单化 - 质量第一!)您试图说明的示例或观点。 然后提供代码示例或引用。
引用参考标准。 不要发布各种标准的片段,而是给出清晰的引用(例如C99 WG14 / N ...第1.4.7节,第...段),并发布相关资源的链接,如果可能。
优先选择免费在线资源。 如果您想引用书籍或非免费资源,那么可以(并且可能会提高WIKI的质量),但请尝试添加一些免费资源的链接。这对于ISO标准尤其重要。欢迎添加官方标准的链接,但请尽量添加等效的免费草案链接。请不要替换草案链接为官方标准的引用,请增加它们。甚至有些大学的计算机科学系都没有ISO标准的副本,更不用说大多数程序员了!
仅在必要时发布代码。 仅在仅使用普通英语解释会很尴尬或不清楚时才发布代码。尽量将代码示例限制为一行代码。发布其他SO Q&A的链接。
不要发布C ++示例。 我希望这成为C的常见问题解答(如果有人想开始一个C ++的双线程,那就太好了)。欢迎提供与C ++相关的差异,但仅作为侧注。也就是说,在您彻底说明C案例之后,如果这有助于C程序员转向C ++,则可以添加一些关于C ++的陈述,但我不希望看到超过20%的C ++内容的示例。通常,像“(在这种情况下,C ++的行为不同)”这样的简单说明加上相关链接就足够了。
由于我在SO上还比较新,希望这种方式发起问答没有违反任何规则。如果有的话,请见谅。版主可以让我知道。