我以为我试图这样问,但似乎不像是合适的地方。我认为诸如Google Code,Github,SourceForge等源站点在编程历史上发挥了重要作用。但是,我发现这类网站还有另一件坏事,也就是说,您几乎可以从任何人那里“复制”代码,不知道它是否好(测试)源。

这种思路使我相信源代码网站倾向于导致许多开发人员(最有可能没有经验)复制/粘贴大量代码,我觉得这完全是错误的。

我真的不知道如何很好地集中这个问题,但是基本思想是:

这个可以吗?开源为此做出了贡献,或者我只是看到鬼魂...

希望人们对此感兴趣,因为我认为这是一个重要的主题。

有帮助吗?

解决方案

相关并不意味着因果关系。开发人员复制他们不了解的代码,因为他们是不好的开发人员。此类代码的可用性并不能使开发人员不利。

如果没有开源项目,仍然会有一个带有代码片段或编程书籍的论坛帖子。因此,我们回到了我的第一段:坏开发人员会找到一种在编写代码方面变得不好的方法。复制和粘贴代码的责任在于这样做的开发人员,而不是源代码存储库。

其他提示

我认为没有太多的开发人员从大型开源项目中复制paste。在数千行代码中找到正确的位置是太多的工作,并且找出要复制哪个部分可能会有所不同(至少对于不良的开发人员而言)。他们宁愿复制在论坛,文章,示例等上发现的小剪,其中一切都很好地放在其中。

对于只复制/粘贴代码而不知道他在做什么的100名程序员,几乎没有一个没有。

在Google代码之前 et similia 人们复制/粘贴的网络周围都有摘要,因此我并不认为问题与这种网站相关。

编码“不要重新发明轮子”的主要原则之一吗?

如果您复制不良代码并且不从中学习,那是您的不好。如果您复制出色的代码并从中学习,那么您是一个很好的程序员。

我认为有好的开源项目和不良的开源项目。可以在Git Hub等网站上找到的好的开源项目的可用性,可以使某种程度上的程序员有一天最终成为一个好的程序员,可以拥有几乎无尽的良好代码来源,可以进行研究和研究(如果需要的话) ) 复制。事实是,最终成为优秀程序员的人几乎无法仅复制和粘贴代码。他们想查看它并将其拆开,修改并理解是什么使它变得更好,什么可以使它变得更好,什么会使它变得更糟。到完成后, 这是他们的代码 他们了解它的工作原理。

这确实使坏程序员成为糟糕的程序员更加方便,但是呢?有点像JavaScript中的缺陷

i = 1

创建一个全局变量 i

var i = 1

创建一个适当的局部变量。这使得所有无意间的全局变量都可以在一秒钟内发现废话代码。1. 。这一事实更容易复制和粘贴项目意味着更容易发现废话代码,因为它会散布着适合其来自的条件而不是当前生活的条件的遗迹肢体。

1当然,缺乏全球变量并不意味着代码很好,但这是一个有希望的迹象

每个人都有某种动机,以使其其他人可以使用,修改和重新分配其代码的方式。

一些原因:

  • 您认为代码很有用,对他人很有用
  • 您认为这个想法很有用,希望更多的人能够完善实施
  • 您有义务获得您分发的修改后的二进制可执行文件的代码
  • 您希望该代码的可用性将有助于提高您的业务

其他原因当然会发挥作用,或者可能是原因。您的问题似乎取决于假设代码释放到野外 应该 具有最低质量,我认为这是过于理想主义的。

此外,我认为更多的“复制和粘贴”编码是通过阅读某人在博客上发布带有摘要的“教程”而导致的,而不是来自那些花时间通过github来寻找可能解决问题的东西的人。但是,使用您在二手书店购买的五岁“快速开始”指南中的示例可能同样危险。

好的程序员避免了没有经验的程序员倾向于犯的错误,这将永远是这样。您经常学习如何通过掉入它们来避免这些陷阱。

首先,没有确切的良好代码定义。您可以采用两部分好代码并将它们组合在一起,并获得不良的代码。仅仅因为代码样式不同。

坏程序员复制纸质不良代码,编写不良代码。

好的程序员复制好的代码,编写好代码。好程序员不会粘贴不良代码。

但是,开源给我们的机会不是一次又一次地编写相同的代码,而是

这个问题是不可能回答的。

但是,如果您尊重自己,例如“是否能够解决我要处理的问题的免费代码,会使我成为一个较差的开发人员,”那么,有一个非常简单且协作的解决方案来解决您的焦虑。

查找您使用,支持或查找有趣的项目,看看您是否可以参与其中。编写一些代码,编写一些测试用例或提供一些文档。无论您最终做什么,都将与您一起使用并评估所使用的代码,并帮助您支持的项目。

开源趋于良好的编码,因为您无法将不良代码隐藏在工作应用程序后面,因此您需要很好地编码,否则您将无法使用游戏。理解和复制/粘贴良好的代码不会使开发人员变得更糟(不要将复制/粘贴混淆而不是进行适当的设计)。而且,正如另一个答案中提到的那样,如果没有可用的源代码,则糟糕的程序员将找到另一种方法来产生不良代码。

西奥多·斯特金(Theodore Sturgeon)说,“所有东西中有90%都是Crud”,这适用于开源软件。 SourceForge上有很多项目,这些项目是一个或两个人未完成的代码的转储,自第一次上传以来,什么都没发生。

这并不意味着开源软件本质上是不良或质量较低的。好的项目有 更高 质量是因为

  • 如果您没有获得货币的报酬,那么您获得的奖励就是合作者的尊重
  • 每个人都可以看到您的工作
  • 版本准备就绪时会发布,不是因为某些商业命令迫使它们被释放半对方

如果您要评估可能要采用的开源软件,则要找出是否有足够大的社区使用它,因此,如果当前的开发人员不能或不支持它,则会有足够的兴趣和需求维护和开发它的替代方法。您会问有关商业软件的同样问题。

我想强调Apache软件基金会的工作,以确定有希望的开源项目,为他们提供资源并通过“孵化器”阶段帮助他们支持他们,以便他们可以发展足够的动力以长期可行。当然,虽然周围还有许多其他出色的开源项目,但如果一个项目已经达到了ASF顶级状态,则您可以对其质量和生存能力充满信心。

许可以下: CC-BY-SA归因
scroll top