65.9K
CodeProject 正在变化。 阅读更多。
Home

CodeProject 论坛指南

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (14投票s)

2008 年 9 月 3 日

CPOL

19分钟阅读

viewsIcon

88177

在 CodeProject 讨论论坛发帖的约定俗成社交礼仪。

引言

CodeProject 是专业开发者和业余爱好者共同的优秀资源,它建立了一个庞大而充满活力的在线社区,供大家交流思想。就像一个真实的社区一样,有一些公开的 规则[^](通常称为服务条款)应该被社区成员遵守,并且,因为 CodeProject 是一个在线或虚拟社区,CodeProject 会遵循一些 政策[^],以确保社区的隐私和安全。除了这些明确的规则和政策之外,任何社区,无论是虚拟还是实体,都会发展出一套社会可接受的规则或习俗,称为 风俗[^]、习俗[^] 和 禁忌[^]。

提供一些快速定义

习俗 是社会中常规行为的模式,适用于日常事务的规范[^]。

风俗(发音为/ˈmɔːreɪz/[^])是规范或习俗。风俗源于社会既定的实践,而非其书面法律。它们由共享的理解构成,关于在特定情境下可能引起赞许、不赞许、容忍或制裁的行为类型。风俗与习俗的区别在于它们所引发的反应的严重程度。打破习俗可能会引起路人侧目,而打破风俗则会冒犯旁观者,甚至可能带来惩罚。这是因为风俗表达了社会的基本价值观,而习俗是更细微的行为准则。

禁忌 是对被某个群体、文化、社会或社区视为不受欢迎或冒犯的词语、物品、行为或讨论的强烈社会禁止(或封锁)。打破禁忌通常被认为是不恰当或令人厌恶的。

讨论论坛类型

CodeProject 社交方面更重要的部分之一就是讨论论坛。有两种讨论论坛可用:

  • 文章特定
  • 社区广泛

文章特定讨论论坛在每篇文章底部提供,应用于联系文章作者或就文章直接相关的问题、评论或其他反馈进行发帖。

社区广泛论坛可直接从 CodeProject 主页访问,使用“消息板”导航 链接[^]。这些讨论论坛按类别细分,然后在每个类别中按更具体的议题组织。目前类别包括:

  • 一般讨论
  • 通用编程
  • 数据库和系统管理
  • 图形与设计

这些论坛并非用于与作者就特定文章进行交流。相反,它们是为社区提供的,用于提出具体问题、交流想法、提供有益于社区的建议,或仅仅是表达一些不满,并且每个活动都有特定的论坛。

论坛礼仪

为了保持论坛的实用性,CodeProject 社区已经形成了一套习俗、风俗和禁忌,可以统称为论坛 礼仪[^]。大多数论坛都有一个“如何获得问题答案”的 帖子[^],它始终出现在论坛的第一页。Pete O'Hanlon 也有一篇出色的 文章[^],提供了发帖指南。

本文与 Pete 的文章类似,但结合了“如何...”帖子、Pete 的文章、其他一些资源和我自己在论坛中的经验。

决定何时撰写论坛帖子

在实际开始撰写论坛帖子之前,有几件事你应该先做。这几项简单的操作将有助于避免论坛充斥着一遍又一遍的相同问题,并帮助你获得有用的答案。

  • 搜索互联网(Google、Live Search、Yahoo!搜索或你最喜欢的搜索引擎)
  • 搜索 CodeProject,包括文章和论坛
  • 首先尝试自己解决问题
  • 如果是家庭作业,请勿发帖

前两点对于确保论坛不杂乱以及你获得有用答案至关重要。这里有很多人多年来一直在回答问题,甚至更长时间地编程。对于这些人来说,当有人没有首先尝试查看问题是否已被回答时,通常非常明显。如果你正在查找有关错误的(尤其是带有错误代码的)信息,那么很可能互联网或 CodeProject 上已经有相关信息。

首先尝试自己解决问题。我见过无数帖子询问 C# 中是否可以做某事,而帖子中实际上包含了 C# 代码。如果发帖人花时间在 Visual Studio 的示例项目中编写这段代码,他们会很容易发现编译器是否允许该语法,以及它是否具有期望的行为。在这些情况下,撰写帖子可能比在 Visual Studio 中完成花费的时间更长,并且浪费了许多人回答问题的时间。

最后,如果你要发布家庭作业……不要。如果你在作业的某个特定部分遇到困难,请随时发帖提问。要清楚这是一个家庭作业问题,并指明你遇到的具体问题领域。不要期望别人直接为你解决作业或仅仅给你答案。我们会为你指明正确的方向,但这通常仅此而已。如果你只是发布作业寻求帮助,你会得到很多回复,但很少有答案。

选择正确的论坛

这可能是发帖讨论问题最重要的步骤之一。如果问题专门针对一篇文章,请使用该文章的讨论论坛;否则,请选择最能匹配你使用的技术或产品,或者你试图解决的业务/编程问题的论坛。

例如,如果你有一个关于如何在 C++ 中编写最高效的双向链表的问题,请使用 C++ 论坛,而不是 VB/VB.NET 论坛。

通过正确选择问题的论坛,你将大大提高问题得到解答的机会。虽然有一些人精通多种语言,甚至还有专家,但在 C++ 论坛中找到 C++ 专家的机会要大得多。

此时,谈论交叉发帖、重复发帖和论坛无关话题很重要。交叉发帖是指在多个论坛中发布相同的问题,而重复发帖(或重复发布)是指在同一论坛中反复发布相同的问题。这两种行为都被认为非常不礼貌,通常只会导致你无法获得问题的答案。你可能会收到很多回复,但不是很多实际的答案。

请记住,这里每个人都是纯粹志愿回答问题,并且分布在世界各地。因此,人们可能不会(也可能根本不会)在你期望或认为可接受的时间范围内做出回应。在多个论坛发帖或多次发帖不会帮助你更快地得到答案。

无关话题帖子是指那些被放到错误论坛的帖子。有时这是不可避免的,尤其是当不清楚帖子应该属于哪个论坛时。尽量猜测。如果它最终被放到错误的论坛,通常会有人指出正确的论坛。(他们可能不会总是以最礼貌的方式这样做,但这是在线社区的后果,它提供了一定程度的匿名性,所以尽量不要将这些回复视为人身攻击。)

在某些情况下,交叉发帖是可以接受的,只要是负责任地进行。这些情况发生在问题确实跨越多种技术,并且不清楚问题所在时。在这种情况下,选择你认为最有可能正确的论坛,并在那里发布原始消息。在其他论坛中,发布一个标题相同的消息,但内容表明该消息是故意交叉发帖的,并包含原始消息的“永久链接”地址。这指示任何想要回答的人,他们应该回复原始帖子,从而创建一个带有多个指针的单一永久记录。

以下是一个可能的合法交叉发帖问题的示例

论坛: C++
主题: C++/C# 互操作问题
消息:我有一个 C# P/Invoke 互操作代码调用 Win32 SendMessage API 的问题……

附加论坛: C#
主题: C++/C# 互操作问题
消息:此消息来自 C++ 论坛,因为它涉及两种语言,我不确定问题出在 C++ 代码还是 C# 互操作代码。请将所有回复都引导至[原始消息][^]。

在此示例中,[original message][^] 文本实际上是原始消息的永久链接地址。

撰写主题行

既然你已确定正确的论坛,就需要撰写一个有意义的主题行。请记住,这通常是你获得帮助的第一个(有时也是唯一一个)印象。使用一个清晰简洁地描述问题的标题。尽量将其保持在 20 字以内(如果可能),并且多于一个字。主题行越长,困惑的可能性越大,主题行越短,被注意到的可能性就越小。

使用完整的单词作为主题行,而不是短信语[^]或 SMS 语言。这种“快捷”语言(如果还能这么称呼的话)并非社区中的每个人都能理解。(请记住,这里有来自世界各地的人。)同样,不要使用空主题行。

同样,即使这里有来自世界各地的人,也要尽量在主题行中形成完整的想法,并在可能的情况下遵循正确的英语语法。我知道这并非总是可能,尤其是在英语不是你的第一语言或母语的情况下,但英语是 CodeProject 的“事实上的”标准语言,所以请尽量做到清晰。大部分情况下,这里的人们都能理解实际的意思,但有时也会出现不理解的情况。如果英语是你的第一语言或母语,没有任何借口不写一个连贯的主题。

由于这里每个人都是志愿者,他们会在自己的时间回答问题。每个人都理解问题可能很紧急,你需要帮助,所以你不需要在主题中写这些。主题中也没有大喊大叫的必要。如果你不知道如何在论坛帖子中“大喊大叫”,用全大写字母写作被视为大喊大叫

一些要避免的具体词语

  • 紧急
  • 提问
  • 求助(或任何变体,如请帮忙)
  • C#(或任何其他语言名称,特别是当它就是整个主题时)

一些糟糕的主题行示例(摘自实际消息)

  • 有人能帮帮我吗?
  • 请帮忙
  • (空白)(实际帖子 在此处[^] 提供。)
  • JPEG 压缩,帮帮我!

好的主题行示例(也摘自实际消息)

  • 字符串前面的“@”符号到底有什么作用?
  • 如何清空 MemoryStream?
  • OpenFileDialog 示例
  • 关于开源许可的问题

消息内容

现在该撰写实际的消息内容了。这包含问题的详细信息,但不要写得太详细,以免你的问题接近于一篇论文[^]。你需要具体说明问题是什么以及你需要什么帮助。不要仅仅请求别人发送代码来创建一个执行“X”的应用程序。

请务必包含你已经尝试过的任何解决方案。这有助于所有人,因为可能回答你问题的人就知道不提供你已排除的可能解决方案。如果问题很容易重现,请务必包含重现问题所需的步骤。这有助于回答问题的人了解导致问题发生的一系列事件。

如果你必须发布代码,请务必将其包含在“<pre>”标签中,并使用“代码块”格式选项(如果代码超过一行)。如果你想包含空行,它们必须至少包含一个空格,而不是真正的空行,否则该行将被格式化逻辑删除。对于行内代码,请将其包含在“<code>”标签中,并使用“行内代码”格式选项。

使用代码块格式对于大段代码来说极其重要,以使其可读。许多人不愿意花时间阅读你包含的代码,如果格式不正确,这可能会延迟(有时会阻止)你的消息得到回复。

如果你在询问为什么代码的特定部分产生了意外结果、无法编译、抛出运行时异常或类似情况……请务必实际包含相关的代码部分。除非存在适用于该特定代码部分的商业秘密[^]限制(变量名或函数名通常不构成安全或商业秘密侵犯),否则不要使用单字母类名或函数名来“简化”你的代码;请按原样展示你的代码。

发布代码时,不要包含整个文件的内容。只需包含使某些人能够完整了解代码在问题背景下如何工作的片段即可。我们不需要看到设计器生成的 InitializeComponents 调用的内容。

我在谈论如何创建有意义的主题行时提到了这一点,它同样适用于你的消息内容。不要在消息中使用短信语[^]或 SMS 语言。这种“快捷”语言(如果还能这么称呼的话)并非社区中的每个人都能理解。(请记住,这里有来自世界各地的人。)同样,不要使用空主题行。

同样,即使这里有来自世界各地的人,也要尽量形成完整的想法和句子,并在可能的情况下遵循正确的英语语法。我知道这并非总是可能,尤其是在英语不是你的第一语言或母语的情况下,但英语是 CodeProject 的“事实上的”标准语言,所以请尽量做到清晰。大部分情况下,这里的人们都能理解实际的意思,但有时也会出现不理解的情况。如果英语是你的第一语言或母语,没有任何借口不写一个连贯的消息。

再说一次,每个人都理解问题可能很紧急,你需要帮助,所以你不需要在消息中写这些,也没有大喊大叫的必要。(请记住,论坛帖子中的“大喊大叫”就是用全大写字母写作。)

消息回复

我以前已经说过几次了,但这是一个重要的概念。这里每个人都是志愿回答问题的。没有人有义务回答你的问题。事实上,许多问题无人回答。这些问题无人回答的原因有很多,包括:

  • 由于论坛中问题数量众多,消息被遗漏。
  • 社区中没有人能够提供有意义的答案。
  • 没有人能够足够理解问题以提供答案。

即使有人提供了答案,它也可能不是高质量的答案,甚至与问题无关。这不是一个付费的技术支持论坛,所以在很多方面,“买者自慎”[^]的理念适用。每个回答问题的人通常都会尽量提供帮助,但有时你会得到错误、令人困惑或无益的回复。不要认为这是你问题不重要或 CodeProject 上的人不专业,他们可能只是对你的特定问题不了解。(这尤其适用于那些通过重复(或“鹦鹉学舌”)他人的回复或提供无意义回复来回应消息的个人。不幸的是,这些人中的大多数是在公然增加他们的发帖量,不应被视为有意义和富有成效的成员。)

你偶尔会看到一些旨在针对个人进行人身攻击的回复。这种行为称为人身攻击[^]。这不应与咆哮[^]混淆,因为咆哮通常是一种独白,不呈现有据可查或冷静的论点,而是对某个想法、人或机构的攻击,并且通常缺乏有据可查的说法。人身攻击通常是两个(或更多)用户之间敌对和侮辱性的互动,不构成建设性回复。

在某些情况下,人身攻击者(进行人身攻击的人)故意这样做是为了激怒和冒犯其他论坛成员,在这种情况下,他们被认为是网络巨魔[^]。如果你怀疑你正在与巨魔打交道,最好的办法是忽略他们。巨魔喜欢关注(任何形式的),他们收到的回复越多,就越会受到鼓励继续下去。至少,你可以将帖子报告为“滥用”(使用“报告消息”链接)以引起 CodeProject 管理员的注意。如果你遭到人身攻击,尽量不要将其视为个人攻击,也不要纠结于此。

如果有人回复你的问题,要求澄清或表示不理解你在问什么,不要将其视为攻击或人身攻击。通常,这是因为有人想帮助你,但需要更多信息才能感到自在/能够提供有意义的回复。有时在进行此类澄清后,对方根本无法帮助你。再次强调,这不应被视为某人无助于或构成攻击;通常是这样的人认为他们可以提供帮助,但在完全理解问题后,才意识到他们无法提供帮助。

对于那些实际上在回复帖子的人来说,请记住……这里的人们来自世界各地,他们对英语的了解可能不如你。提问的人可能也不知道英语语言的细微差别,而你认为正确的求助方式在你看来可能像是被命令回复。虽然这种情况偶尔会发生,但绝大多数情况下是由于沟通和文化差异造成的。不要因为某人英语不正确而攻击他们。如果必须这样做,请通过询问澄清性问题或改述相关句子来确保其被正确理解。

仅仅因为你的帖子收到了回复,并不意味着该回复就是你问题的答案。如果你在错误的论坛发帖,使用了糟糕的主题行,重复了帖子,或者以其他方式未能遵守社会可接受的礼仪规则,回复可能是告知你这些事实。即使你遵守了所有规则发帖,你可能仍然觉得回复不可接受。如果你觉得是这样,请再次查看回复。有时,回复是更完整的解决方案、文档链接,或者可能是解决同一问题的其他方法。如果有人在回复中发布链接,请务必点击该链接并阅读提供的信息,然后再决定该回复无益。

如果你不理解回复或需要更多信息,只需回复该回复即可。你不必开始一个新的帖子(发布新问题)来回复回复。CodeProject 的讨论论坛支持“主题式[^]”对话,这意味着用户之间关于特定问题的所有交互都被逻辑地分组在一个嵌套的“树状”视图中,显示帖子之间的关系。

重复提问

仅仅因为你在认为可接受的时间范围内没有得到答案,并不意味着你应该第二次发布问题。虽然重复提问确实会将其移到论坛的第一页(至少暂时),但这并不能保证你会得到答案。事实上,你发布的相同问题越多,收到答案的可能性就越小。

然而,有时重复提问是可以接受的。这一点有些主观,但有一些通用指南:

  • 消息至少一周没有收到任何回复(且论坛非常活跃)
  • 你意识到消息放错了论坛

在这两种情况下,你的新消息都应包含原始消息的永久链接地址。如果消息没有收到任何回复,可能是因为没有人能理解你的问题,所以请务必尝试澄清你的问题。

删除问题

总的来说,几乎从来不接受删除问题。尤其是当问题已经有回复时,即使它们不是答案。

如果你意识到(或被告知)问题放错了论坛,请回复或修改原始问题(使用“编辑”链接),并包含新问题的永久链接地址。

唯一被认为可以删除问题的情况是,当问题还没有回复时。

对问题或回复进行投票

CodeProject 实施了讨论帖子的投票系统。虽然投票机制一直备受争议,但请尽量负责任地使用它

如果有人提供了好的答案,无论是直接回复还是提供正确解决方案的链接,“点赞”该消息,使用“好问题”(或“有用答案”)链接或数字投票评分。数字评分范围是 1 到 5,其中 1 是“完全不好”,5 是“完全好”。

如果一个问题完全不恰当或具有攻击性,请使用“报告消息”链接,或使用“差问题”(或“无用答案”)链接或数字投票评分(评分为 1)对其进行“点踩”。

结论

遵循既定的论坛发帖礼仪将帮助你获得问题的答案,帮助你成为 CodeProject 社区的 productive 成员,并帮助你赢得社区同行的尊重。永远记住,这些礼仪规则不仅适用于提问,也适用于回复。

快速总结论坛礼仪最重要的方面

  • 发帖前请搜索互联网和 CodeProject 以查找问题。
  • 选择正确的论坛。
  • 使用有意义、正确且简洁的主题行。
  • 不要大喊大叫。
  • 不要使用短信语(或 SMS 语言)。
  • 陈述问题时要清晰。
  • 需要时提供代码示例,并使用“代码块”格式选项将它们包含在“<pre>”标签中。
  • 尽可能使用正确的语法并构成完整的句子(或至少完整的想法)。
  • 不要期望在你的时间范围内得到答案,这里的人都是志愿者。

最后还有一点值得一提:不要使用讨论论坛(无论是文章特定还是社区广泛的)进行广告宣传。如果你想宣传你的产品,请联系 CodeProject 洽谈购买[^]广告位。

© . All rights reserved.