处理源代码中的亵渎行为


34

人们如何处理源代码和VCS注释中的亵渎行为。保留还是删除?

像WTF或Arrgggh这样的软语词怎么办?

是不专业,令人反感的东西还是应该摆脱的东西?


15
逐案...注释是开发人员个性的途径。就像您必须处理N种类型的个性一样,您也必须处理N种类型的注释,这些注释会流失开发人员的个性。当您通过即时消息,电子邮件与他们进行口头交流时,如何使用亵渎语言对待给定的开发人员?
亚伦·

10
我不得不告诉一些Jr. devs之前不要在评论中发表亵渎言论。恕我直言,这是非常不专业的。如果您不想在同事或客户面前发誓,为什么要在注释/代码中发誓?而且,如果您在同事和客户面前发誓……那么您的工作环境比我要轻松得多。:)
Tyanna

4
@Tyanna:在我最后的工作场所中,我们甚至有些种族歧视!如果可以的话。我认为,日复一日相见的同事之间,政治上的正确性是可怕的。您会害怕每天向您看到的某人讲种族主义笑话10个小时吗?再说一次,我住在玻利维亚-我认为美国的起诉心态要强得多,这就是为什么没人愿意踩脚趾的原因。

4
@Anna Lear:从来没有人因为讲过一个恶作剧而在丹麦被起诉。但是,美国……这完全取决于您所处的氛围。美国对人力资源无人机的重视程度更高,它们可以监控每件事。

10
只需grep f.ck在Linux内核的源代码上执行即可。如果对他们足够好,对我也足够。但是,永远不要在客户几乎没有机会发现它的地方发动任何令人反感的事情。我做了一次,幸运的是我们在最后一分钟设法完成了更新,但这并不有趣。(嗯,实际上是后来的。)
biziclop 2011年

Answers:


41

应该轻轻地劝阻

..您可能无法知道谁将在源代码的生命周期中看到源代码。

尽管对一个特别复杂或过时的代码感到沮丧是所有工作的一部分,并且希望对此一饱口福,但是在源代码中添加粗话/粗俗/ ASCII艺术/恶作剧/粗话/冒犯性言论既不专业,又根据我的经验,这是个坏主意。有时,撰写评论的工程师会忽略他的评论可能产生的最终影响-这只是我看到的一些问题:

  • 作为公开源代码/示例代码向公众发布的代码中的大量专有名词。
  • 恶作剧的笑话对一些团队成员造成了严重的冒犯,从而导致了产业法庭。
  • 丢掉的言论实际上是种族主义/性别歧视/性别歧视,导致人们被解雇。

尽管我们所有人都需要一些挫折/娱乐/跳跃的渠道,但IMO并不是源代码。您不会在合同,帮助页面,蓝图或其他专业文档中添加粗话/笑话/冒犯性注释,即使这些文档的阅读频率可能低于源代码。

如果团队负责人对此事全力以赴,那将会很沮丧,所以我说,通过与问题工程师保持沉默的态度来“勉强劝阻”,并提供合适的发泄机制以释放动力,无论是Facebook,即时消息,曲棍球或沙袋。

说注释被编译出来是没有道理的-JavaScript或任何其他动态客户端代码如何?

以下是一些我的现实生活经验,这些经验已经影响了我的观点:

  • 虽然在微软工作,我发现了一个软件工程师不知道正确的拼写“不能” -他错过了O,L和d -和曾与他多久解释他的大部分代码穿插不能使X工作,因为Y人引起了问题Z。他的代码很棒;他的拼写不太好。可以说,此代码的任何后续审阅者(例如,我)都被警告看到该代码中出现大量随机宣誓。这些代码中的一些继续显示给合作伙伴(驱动程序编写者)。想象一下他们对看到这些咒骂的恐惧。理想情况下,授权人应该以口头形式向项目经理咨询(在这种情况下,可能会请Y人参与讨论)或提交消息,但不要在消息源中发信息。

  • 在一家公司中,一个会说外语的人加入了一个主要说英语的团队。他用他的语言写评论,以为没有其他人可以阅读它们。很好,直到Babelfish / Google Translate发布了他的语言的“英语翻译”选项,此时团队的其余成员翻译了一些评论,并对那个家伙对公司所做的肮脏且经常贬损的评论感到震惊,他的团队和一位女性同事。尴尬的

  • 在另一家公司中,一个人真正被ASCII艺术所吸引,并将各种各样的艺术放入他的源代码中,而未被代码审查者发现(或称赞)。过了一会儿,出于某种原因,他通常以某种标语线住在龙上。后来,威尔士人加入了团队。威尔士的国徽是一条红色的龙,所以这个新家伙最初对照片感到高兴,但后来当一些愚蠢的标语可以被认为是令人反感的时候就冒犯了。是的,需要一些团队负责人进行调解,但这不应该发生。


名称/细节被删除,以保护无辜者。


1
我要补充一点,也不应鼓励在缺陷跟踪系统中使用亵渎语言。我一直可以要求提交者编辑评论以消除亵渎行为,所以我可以告诉您,对于主管/团队负责人/经理来说,这不是一个令人愉快的职位。尤其是当他们拒绝时。
quick_now 2011年

@quickly_now,那么您如何处理这种情况?

我又问了一次。当此人再次拒绝时,我自己编辑了注释以对它们进行消毒。我认为这不值得进行咨询/纪律处理(导致解雇的第一步),但我还向老板报告了我所发现和所做的事情。我们大家都同意,除非重复(而且不再重复),否则它不会走得更远。不好玩。[我还要补充说,亵渎的评论是由另一位有关工作人员向我报告的。那就是我要解决的问题。有时,高级职位不值得多花$ !!!]
quick_now 2011年

“但是当某些愚蠢的口号可能被解释为令人反感时,便冒犯了。” 您将必须是一个非常困扰的人,因为您是威尔士人,所以会被龙的画像所冒犯。
Miles Rout 2015年

24

如果您要出售源代码(即您是组件编写者),则可能不应该包含该源代码。

如果这是一个审慎的问题,那么无论如何,这取决于您。

如果您看到有人写了很多WTF,则可能是您应该与他们讨论他们所遇到的问题的信号。

如果某人将他们的攻击行为指向另一个人的代码,那么他们可能会骚扰那个人,您将面临完全不同的情况。也许他们有合法的投诉,却不知道该如何正确发声。也许他们只是个混蛋。

仅拥有某种内容过滤器是不明智的,开发人员编写的任何内容都很重要,它可以告诉您很多事情的进展。


1
+1表示不出售带有爆炸性的源代码。在交付代码之前,应彻底检查代码中是否包含此类注释。
FrustratedWithFormsDesigner

2
如果您是HTML开发人员,那么粗鲁的评论绝对不是一个好主意。:)
biziclop 2011年

@biziclop,这很不幸,因为HTML会使一种语言尽可能令人沮丧。查看@the jinx的链接,了解来源中的亵渎率。似乎Java并列第一(不确定这是否包括意外的最小化javascript触发)
Peter Turner

我们对詹金斯运行简单的内容过滤器有这个问题:无效pushItem(...
SAL

17

我在一家财富500强公司中工作,该公司设计,制造和销售具有µControllers内部运行代码的消费类产品。诉讼总是有可能的,要么是希望迅速致富的消费者,要么是声称侵权的竞争对手。因此,我们编写代码和所有注释时要知道,它可能(可能会)在某个时候受到敌对陪审员的审查。这意味着变量和函数名称不应包含煽动性用语,例如KILL_CHILD(int process_id)。尽管此示例功能的目的很可能是终止子进程,但是如果原告的孩子在使用产品时被杀,敌对的陪审团将如何看待该函数名称?

代码中的注释可能更糟。虽然一个体面的辩护团队可能会处理(从前面的示例中)解释一个子进程是什么以及为什么可能需要终止该子进程,但是几乎不可能针对这样的评论进行辩护:

// The following section of code is REALLY BAD!!!  I hope
//  it doesn't burn anybody's house down.

诸如此类的副手评论已成为实际法庭案件的决定因素。

在一个相关的话题上,在激烈的诉讼显微镜下,项目的名称也可能令人生厌。您还记得90年代中期科技新闻来源报道“ SATAN在互联网上释放”时,保守派人士的骚动吗?

<rant_mode_off>

综上所述,对于个人项目,您可以自由地执行自己喜欢的代码。


1
+1指出这种非专业行为的最危险方面。我曾在“尽职调查”团队工作,这些团队审查了我将要购买的F500公司的源代码。出于您提到的原因,我们寻找这类人员是很重要的事情,因为谁提供了持续就业机会,而谁没有在合并完成后就干了。具体来说,大公司(财大气粗)不会为了继承骚扰/敌对的工作环境诉讼而购买小公司,因此,在购买完成后,犯罪者将被解雇/裁员。
2011年

5
KILL_CHILD只是一个荒谬的例子。我希望看到“此类副手评论已成为实际法庭案件的决定因素”。(我不只是说作为STFU ...我真的很想阅读引用。)
Wolfger


1
“这意味着变量和函数名不应像KILL_CHILD那样包含煽动性的用语。”这是我读过的最愚蠢的东西,您甚至应该暗指KILL_CHILD对函数来说是个坏名字,对此您应该感到羞愧。
Miles Rout 2015年

9

如果这麻烦您,您是头号大佬,我不明白为什么您不能执行有关此事的规则。毕竟,您这种假设情况下的领导者。

但是,如果它只会打扰您,并且似乎没人在意,也许您应该把它吸干。


事情是这样的:我不“吸”东西。
gnasher729 '16

7

我可能不是一个合适的人,因为我经常轻声亵渎。

我认为这主要取决于您的环境的PC(政治上正确)。

如果我为一家西装革履的公司编写代码,我会尽量不要使用亵渎行为,但是如果是出于业余爱好之类的事情,或者我倾向于更自由地表达自己的想法。

在我看来,与我居住和工作的荷兰相比,在美国和其他一些国家,人们的PC(或被困住的人)要多得多。

另外,以下是一些有关亵渎行为的统计信息:http : //andrewvos.com/2011/02/21/amount-of-profanity-in-git-commit-messages-per-programming-language/


1
我认为它更依赖于部门-在金融等高压环境中,经常使用诱骗手段。
JBR威尔金森

它也高度取决于您认为“亵渎”的内容。就像在文章中链接的“ lol”和“ rofl”被选为亵渎话一样,当我们大多数人都不认为它们被归类时。
jwenting 2011年

它不关乎PC,而是关乎适当地使用语言(您完全不是PC,您仍然可以选择不使用亵渎语言-您可能会冒犯性和粗鲁,并且仍然不使用亵渎语言)。需要从不过度进攻的角度考虑这一点-不适当的进攻是因为几乎所有东西都对某人不利-但是我们大多数人都知道这条线在哪里,而且通常说脏话是在错误的一边。在这一领域进行约束很有用-如果您不经常发誓或发誓,那么当您注意到别人的时候……
Murph

6

我倾向于同意这可能是非常不专业的,但是每个人都不时在争吵,所以我尽量不要与他人争辩。就是说,代码库往往反映了该小组的整体专业水平,因此,一个充满负担的显式代码库可能反映了一个不专业的小组,可能需要开会才能“对该小组进行一些改进”。同样,如果代码中出现某些趋势,则可能表明该组中需要解决的一般问题(即,您使用的API的问题使开发人员感到沮丧)。

就代码库而言,我通常只编辑相关注释以确保工作安全,然后保留该注释。根据您使用的语言,这始终是一个好主意,因为您永远不知道在客户或客户面前会出现什么。


3
+1,有趣的是,我没有想到要使用特殊外观模式来跟踪特定功能/库的挫败感。
FrustratedWithFormsDesigner


5

这是不专业的,冒犯性的还是应该忽略的东西?

可能全部三个……取决于您的观点。

人们在某些情况下使用“丰富多彩的语言”表达自己是人类的天性。在某些文化中比在其他文化中更是如此,而在某些人中则比其他人更多。但是这种趋势是普遍的。

如果我是您,除非您愿意让自己的同事不欢迎您,否则我将不予理会。

但是,如果源代码/ VCS注释在组织外部发布,则基于对企业冒犯客户不利的影响,您的管理层可能希望采取更严格的措施。


这里的关键是“在某些情况下”-即在适当和可接受的情况下。我认为建议注释(代码或提交)不是真正可以接受的地方,因此是不合适的,这是合理的。
Murph

5

亵渎的问题之一是文化之间的差异。在美国,无辜的东西往往会“瘫痪”,而在其他国家,您经常可以听到议会讨论中交换的相同语言。

亵渎代码和提交注释非常普遍,可能是因为“没人愿意看到它”视图。我认为,现在大多数组织都将复活节彩蛋定为违法行为,这实际上更为普遍。

我个人认为,面向非客户的内容(例如内部提交材料)并不是什么大问题。

但是,大多数大型跨国公司都是由法律部门和“安全工作场所”以及所有类似的东西经营的,这意味着任何可能侵害至少一个人的事情都是一个问题,也是解雇的潜在原因。我不愿承认,但是我倾向于屈服于那些支付我工资的人的规定。

解决此问题的快速方法是在源代码控制系统上安装亵渎过滤器(作为预提交脚本或常规检查)。


2
我必须不同意您关于自动亵渎过滤器的建议。首先,您冒着遇到斯肯索普问题的风险,其次,正如史蒂芬·C(Stephen C)所说,亵渎行为可能是另一个问题的征兆,禁止它不能神奇地解决它。
Scott

2
+1对于亵渎过滤器,但要避免“clbuttic错误”是很重要的(thedailywtf.com/Articles/The-Clbuttic-Mistake-.aspx
rjzii

亵渎过滤器无效。他们倾向于阻止无辜的事情,让坏的事情过去。它们也往往很容易解决。
jwenting 2011年

cntd。我主持一个自然摄影论坛。当管理员决定安装亵渎过滤器时,所有有关海狸,人们的宠物猫咪,鸟类等的讨论都将受到审查。在再次将其删除之前,用户开始围绕过滤器开发方法。如果您不能谈论拍摄海狸的旅程(哎呀,用一个简短的句子讲三个坏话),那么您可以说是将tr.ip改为sh.oo.t be.ave.rs,而filter.ll太stu.pi.d(另一个被禁止的词)无法抓住它。
jwenting 2011年

对我来说,避免亵渎过滤器的理由“因为其中许多都是垃圾”与避免垃圾邮件过滤器,sql消毒器等一样有意义。那里有不错的第三方选择。如果仅使用正则表达式,那么您就是SOL。
Uri

3

我认为这没关系,只要它不会像扔f炸弹那样失控。我见过一个与我合作的人,在两个字符之间编写脚本,讨论它们各自代表的各种对象。在多行注释中,这两个字符中的30行相互交流。

/ * *伊戈尔:我可以当大众律师吗?*科学怪人:啊,伊戈尔,我将从你的最佳特质中继承下来... * /

这样持续了很长时间。他创建了两个对象,您猜对了:科学怪人检查中的科学怪人和伊戈尔。它实际上非常有创意,但是却浪费时间。我宁愿看到一些WTF或专有名词,也不愿看到两个C#对象之间的剧本...


那很好笑。无用,但有趣。
保罗·内森

@Paul:哈!抱歉,是的-效率不高,但是在浏览一些代码时看到这一天真是荒谬。
Nodey The Node Guy 2011年

2

取决于公司/客户的文化。例如,如果您要开发圣经软件,那么绝对不欢迎使用任何形式的亵渎语。另一方面,游戏开发人员可能不太在意(或走到另一个极端)。

我始终牢记任何注释(在代码或提交中)都应该有所帮助。某些词比其他词更能吸引我们的注意力-肯定会注意到粗话,甚至是软词。将注意力吸引到完全错误的事情上可能很有用,但是您尚无法解决。

也就是说,我不使用专有名词,但偶尔会使用“ Doh!”之类的东西。还是“嗯?” 在精神上并没有太大的不同。如果它使您感到困扰,请与违法者讨论-他/他可能没有考虑过。如果他们告诉您去远足,并且您对此有强烈的感觉,请向经理表示感谢。如果您没有得到经理的支持,那么您将必须学习与之共处或去其他地方。


抱歉,什么是“圣经软件”?(此处不是英语本地人)。
Rook

2
圣经是写下基督教教义的地方。圣经软件是基督徒可以用来交叉检查不同译文的文本,查找学者对某一段落的看法以及总体研究文本的软件。一部经文讲的是“别让腐败的信息从你的嘴里冒出来”,这是古英语,不要胡扯,或者谈论会使人失望的事情。我敢肯定,在其他宗教场合,诅咒同样是不受欢迎的。
Berin Loritsch 2011年

3
基督徒反汇编可执行文件以在源代码中搜索诅咒词吗?

嗯,评论不会被编译,因此甚至无法工作;)
JinX 2011年

5
因此,如果我编写圣经软件,我应该审查圣经中所有淫秽的东西吗?
Wooble

1

好吧,我不太确定您对这样的代码还有什么要说的:

tocommit = (n + (COMMITSIZE/PAGESIZE) - 1) & ~(COMMITSIZE/PAGESIZE - 1);

这段代码是从我最近一直在尝试优化的真实,极其繁琐的代码库中提取的。(该代码是开放源代码,因此在这里我不会透露任何雇主的机密。)


3
用火和磁铁杀死那只手淫!

1

正如其他人所说,这取决于工作场所以及谁将看到源代码。

如果我出售源代码,那么我将拥有仅发布版本的第二个存储库,并且在每个新版本所提供内容的描述之外,不允许任何签入注释。我每天所做的一切和所有的失误都是在我和我的团队之间,而不是我的客户之间。

目前,我的构建服务器报告OMG,WTF,kludge,混乱和TODO注释,作为保留清除的指标,现在它们是该过程的一部分。


1

如果您发现开源软件中存在亵渎行为,并且想要摆脱它,请为后推的可能性做好准备。不要只是编写三行错误报告,并希望它被接受。撰写一篇小文章,解释为什么亵渎和歧视性语言不好,并避免反驳。


0

我认为这是个人喜好问题。这些东西并没有真正打扰我,所以我可能会离开。甚至可能给我提示代码中问题区域的位置。

他们会打扰吗?从您问这个问题的事实来看,我猜他们确实如此。在这种情况下,请删除它们或将它们清理成更适当的注释,以解决问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.