Questions tagged «libraries»

库是提供用于开发独立软件的数据和/或服务的资源的集合。

14
为什么不使用Qt编写更多的桌面应用程序?[关闭]
据我对Qt的了解和了解,它是一个非常好易学习的库。它具有设计良好的API,并且是跨平台的,而这些只是使其具有吸引力的众多功能中的两个。我想知道为什么更多的程序员不使用Qt。是否有不足之处与之相反?哪些功能使其他库比Qt更好?问题与许可有关吗?
202 api  libraries  qt 

13
输入在技术上有效但不满意时,异常与空结果集
我正在开发要公开发布的库。它包含用于对对象集进行操作的各种方法-生成,检查,分区并将这些集投影到新形式。如果相关,它是一个C#类库,其中包含LINQ样式的扩展IEnumerable,将作为NuGet软件包发布。 该库中的某些方法可能会被赋予无法满足的输入参数。例如,在组合方法中,存在一种生成可以从m个项目的源集合构造的n个项目的所有集合的方法。例如,给定集合: 1,2,3,4,5 并要求2的组合将产生: 1,2 1,3 1,4 等... 5,3 5,4 现在,显然可以要求做一些无法完成的事情,例如给它提供3个项目的集合,然后要求4个项目的组合,同时设置说只能使用每个项目一次的选项。 在这种情况下,每个参数都是单独有效的: 源集合不为null,并且包含项 要求的组合大小为正非零整数 请求的模式(仅使用每个项目一次)是有效选择 但是,将这些参数的状态放在一起时会引起问题。 在这种情况下,您是否希望该方法引发异常(例如InvalidOperationException)或返回空集合?在我看来,任何一种都有效: 如果只允许每个项目使用一次,则不能从m个项目的集合(其中n> m个)中产生n个项目的组合,因此该操作被认为是不可能的。InvalidOperationException 当n> m时可以从m个项目中生成的大小为n的组合的集合为空集;无法产生任何组合。 空集的参数 我首先担心的是,当您处理大小可能未知的数据集时,异常会阻止惯用的LINQ样式方法链接。换句话说,您可能想要执行以下操作: var result = someInputSet .CombinationsOf(4, CombinationsGenerationMode.Distinct) .Select(combo => /* do some operation to a combination */) .ToList(); 如果您的输入集大小可变,则此代码的行为是不可预测的。如果少于4个元素.CombinationsOf()时引发异常someInputSet,则此代码有时会在运行时失败,而无需进行一些预检查。在上面的示例中,此检查是微不足道的,但是如果您在较长的LINQ链中途调用它,则可能会变得乏味。如果它返回一个空集,result则将为空,您可能会很满意。 例外的论点 我的第二个担心是,返回一个空集可能会隐藏问题-如果您在LINQ链的中途调用此方法,并且它悄悄地返回一个空集,那么稍后可能会遇到问题,或者发现自己为空结果集,鉴于您肯定在输入集中有某些内容,这种情况的发生可能并不明显。 您会期望什么,您对此有何看法?

9
当代码远离“干净代码”实践时,如何维护庞大的开源库?
我仍然缺乏编写高质量代码的经验,因此我阅读了解决诸如Robert C. Martin的Clean Code之类的问题的书籍,并不断检查著名库的代码以提高我的技能。 尽管许多开源库已经维护了多年,这意味着它们不太可能走在正确的道路上,但我发现其中许多代码与编写干净代码的原理相去甚远,例如包含数百行代码。 因此,我的问题是:干净代码的原则是否太受限制,我们可以在许多此类库中不使用它们吗?如果没有,如何在不考虑许多这些原则的情况下维护庞大的库? 任何简短的说明,我将不胜感激。如果这个问题对一个新手来说似乎很愚蠢,我深表歉意。 编辑 在Butterknife库中查看此示例-Butterknife库-Android社区中最知名的库之一。

2
什么是“阴影” Java依赖项?
JVM开发人员在这里。最近,我在IRC聊天室甚至在我自己的办公室里看到了所谓的“ 阴影 ” Java库的玩笑。使用的上下文将类似于: “ 这样为XYZ提供了一个“阴影”客户端。 ” 完美的例子是针对HBase的Jira问题:“ 发布具有阴影依赖项的客户端工件 ” 所以我问:什么是阴影 JAR,“阴影”是什么意思?
74 java  libraries  jvm 

3
为什么JavaScript框架/库具有纯JavaScript中已经存在的功能?
我想知道为什么框架/库虽然本身已经存在,但是却有自己的帮助器。 让我们以jQuery和AngularJS为例。它们具有自己的each迭代器功能: jQuery.each() angular.forEach() 但是我们有Array.prototype.forEach。 同样, jQuery.parseJSON() angular.fromJson() 但是我们JSON.parse()在原始JavaScript中具有该功能。

2
仅标头库更有效吗?
假设条件 C ++的仅标头库的优点之一是它们不需要单独编译。 inline仅当函数在头文件*中定义时,在C和C ++中才有意义。 传统上,在C中,使用.c / .h布局,其中标头代表翻译单元的最小公共接口。同样,.cpp / hpp。 题 仅标头库通常比传统布局在代码和执行时间上更有效吗?如果是这样,是否是因为进行了广泛的内联或其他优化? *-在标头中定义函数使编译器可以在编译任何翻译单元时查看实现,并且实际上使内联代码成为可能
48 c++  c  libraries 

16
是否有具体原因不大量使用库和代码片段?[关闭]
总的来说,我从事编程工作已有大约8年的时间,在我看来,我越来越依赖开放源代码库和代码片段(该死的GitHub!)来“完成工作”。我知道我可以及时编写自己的实现,但我希望专注于总体设计。 这是正常情况(非公司环境)吗?如果我的“编程”仅是将不同的库粘合在一起,那会出什么问题? 我知道“不要重新发明轮子”,但是当您不再发明一个轮子时会发生什么呢?

5
从库中的STDIN读取是否被认为是反模式?
在为我正在工作的大型项目编写库时,出现了一个问题,该问题要求将令牌发送到电子邮件地址,然后传递回代码中,以供以后使用。 我的同事说,只是从STDIN中读取(使用Python:)code = input("Enter code: "),然后让用户传递它,但是对我来说,这似乎是一种不好的做法,因为该库可能(在这种情况下肯定会)用在服务器上的后台任务中。 我想知道这是否被视为反模式。

3
C ++ 11是否解决了在动态/共享库边界之间传递std lib对象的问题?(即dll等)?
我对C ++的主要抱怨之一是在实践中将标准库对象传递到动态库(例如dll / so)边界之外有多么困难。 std库通常是仅标头的。这非常适合进行一些很棒的优化。但是,对于dll,它们通常是用不同的编译器设置构建的,这可能会影响std库容器的内部结构/代码。例如,在MSVC中,一个dll可能会在打开迭代器调试的情况下构建,而另一个dll会在关闭调试器的情况下构建。这两个dll可能会遇到传递标准容器的问题。如果std::string在界面中公开,则不能保证客户端使用的代码与std::string库的完全匹配std::string。 这导致难以调试问题,头痛等。您要么严格控制组织中的编译器设置以防止出现这些问题,要么使用没有这些问题的更简单的C接口。或向您的客户指定他们应使用的预期编译器设置(如果另一个库指定了其他编译​​器设置,则很糟糕)。 我的问题是C ++ 11是否试图做任何事情来解决这些问题?
34 c++  libraries  c++11 

7
如果没有库就可以执行任务吗?[关闭]
我处于可以使用开源JavaScript插件完成任务的情况。但是,当我尝试使用它时,我发现自己不得不重新设计已经完成的很多工作,以我的拙见,这给项目增加了一定的复杂性。尽管我可以用干净的代码完成相同的任务,但我可以自己制作,而无需更改到目前为止的工作。 在这种情况下,您是否仍应选择一个库(例如,为了获得更好的质量代码?)


16
您有自己的“杂项工具”库吗?您最为哪一部分感到骄傲?[关闭]
我知道我们许多人使用经常使用的工具和实用程序来维护自己的小型个人图书馆。 我从16岁起就拥有我的,所以它的规模已经发展到相当可观的水平。此后,我写的一些内容已添加到框架中。我在LINQ之前就编写了自己的表达树的小实现,用于遗传算法,这在当时我很喜欢,并为此感到自豪-当然,现在它已经毫无用处了。但是最近我一直在研究它并升级到.NET 4.0,并重新引起了人们的兴趣。 所以我很好奇您使用库的目的。也许我们可以得到一些有用的小片段的好主意,并在我们自己之间分享。 所以我的问题是: 您是否有其他实用程序库? 您最为哪一部分感到自豪,为什么? 如果您愿意,请提供代码示例 :-)


1
发布使用Apache 2.0许可下许可的库的应用程序时要牢记什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5个月前关闭。 我正在创建一个即将准备发布的Android应用。 我将使用该库来实现选项卡系统。我读到它是根据Apache 2.0 License许可的。我从未对已分发的应用程序/程序/游戏使用过任何许可库(因为我还没有分发过),所以我对许可和许可库没有任何经验,所以我想知道是否有任何东西在分发使用根据Apache 2.0许可获得许可的库的应用程序时要牢记。 记住 我在StackOverflow上问了这个问题,但建议我改为将其移至Programmers,但在我发布之前,请先检查帮助中心是否该网站接受了此类问题。我做到了,据我所能看到和理解的内容,这种问题是允许的。 我已经阅读了几个类似的问题,并找到了一些问题的答案,但是我仍然想知道一些事情,我想清楚一点,所以我不会犯任何错误。 这些是剩下的问题 我读到“我的应用程序的用户必须收到Apache 2.0许可证的副本。为避免混淆,您还应说明许可证适用于发行版的哪一部分。” 仅在应用程序的“关于应用程序”页面上放置指向Apache 2.0许可证的链接,并连同链接一起告诉许可库的名称就足够了吗? 继续上述问题:我需要如何“声明许可证适用于发行版的哪些部分”。这是否意味着我将告诉我的应用程序的哪个部分已获得许可(换句话说,该库是许可的部分)? 我可以修改库的源代码,然后将修改后的版本包含在我的应用程序中并出售吗? (这与许可库无关)我是否需要为我的应用程序申请许可证?如果是,推荐哪个?将我的应用上传到Google Play商店后,会自动受到版权保护吗?建议采取什么措施来保护它免受“模仿者”的攻击? 有什么建议或指导方针吗?我想知道,这样我就不会犯任何错误,而要支付罚款或陷入麻烦之类的事情。谢谢! 更新:我阅读了amon的答案,发现了更多问题: 据阿蒙说的了解,我的应用自动受到版权保护。他还说,我可以注册版权,这可能会使我在某些司法管辖区受益。我在哪里注册版权? 我必须在“关于”页面上打印出许可证的哪些部分?是否可以将其(从Apache 2.0 Library网站获得)放在库的信息文本下方,并使用完整的Apache 2.0许可证将链接放置到单独的页面(在应用程序中)? 版权[yyyy] [版权所有者名称] 根据Apache许可版本2.0(“许可”)许可;除非遵守许可,否则不得使用此文件。您可以在以下位置获得许可的副本: http://www.apache.org/licenses/LICENSE-2.0 除非适用法律要求或以书面形式同意,否则根据“许可证”分发的软件将按“原样”分发,没有任何明示或暗示的保证或条件。请参阅许可证,以了解许可证下管理权限和限制的特定语言。 可能还会有更多问题。

1
Vanilla JS是否仍被视为库?
最近,我发现VanillaJS(文档?)是一个仅与99%的浏览器捆绑在一起的库,并且不完全是本机JavaScript(我一生的震惊)。在编写自己的库时,我通常会避免所有有用的事情,主要是库。现在我有三个问题: VanillaJS仍然被认为是库吗? 没有VanillaJS,有没有办法对DOM做任何事情? 是基于VanillaJS或本地JS的主要库(无文档资料)

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.