问题标签 [code-reuse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1153 浏览

python - django 站点范围公告的可重用应用程序,每个用户仅显示一次消息

我只想在我的 django 应用程序中向注册用户显示各种消息。我发现django-announcements 似乎可以满足我的要求 - 但我在测试中发现它使用会话变量将消息标记为已读,如果用户注销,该变量就会消失。这意味着如果用户在登录、注销然后再次登录时将其关闭,则会再次向用户显示一条消息。

我想知道是否有人知道我可以在这里使用而无需重新发明轮子的应用程序。

0 投票
8 回答
284 浏览

php - 跨语言开发问题

我正在从事一个涉及数据库 (My SQL)、网站 (PHP) 和自定义高性能服务器应用程序 (C++) 的项目。C++ 应用程序(及其附带的客户端应用程序)构成了项目的主要部分,数据库为其存储长期数据。该网站主要用于显示各种统计数据和管理。

1) 我希望 PHP 脚本和 c++ 应用程序能够以某种方式进行通信,因为数据库仅用于持久数据,另外 c++ 应用程序可能会缓存一些东西,因此在某些情况下需要告知重新加载数据. 它们很可能在不同的机器上,甚至可能在不同的操作系统上。我一直在考虑 TCP 可能是一些简单命令的最佳选择 - 响应协议?

2) 编写一次通用数据库接口代码并能够在 PHP 网站和 c++ 应用程序中使用它的最佳方法是什么?

0 投票
2 回答
441 浏览

python - 将 django-notification 设置为 opt in 而不是默认的 opt out

我正在使用django-notification允许我的用户选择退出我在我的 web 应用程序中生成的某些警报。

默认情况下,当我创建新通知类型时,它会在用户通知界面中启用而不是禁用(选中)

我想让一些警报选择加入,而不是默认选择退出。我查看了文档,但无法看到这样做的方法,还有其他人设法做到这一点吗?

0 投票
4 回答
1175 浏览

c++ - C++内部代码重用:编译一切还是共享库/动态库?

一般问题:

对于非托管 C++,内部代码共享哪个更好?

  1. 通过共享实际源代码来重用代码?或者
  2. 通过共享库/动态库(+所有头文件)重用代码

不管它是什么:你减少重复代码(复制粘贴综合症)、代码膨胀的策略是什么?


具体例子:

以下是我们在我的组织中共享代码的方式:

我们通过共享实际源代码来重用代码。

我们使用 VS2008 在 Windows 上进行开发,尽管我们的项目实际上需要跨平台。我们有许多项目(.vcproj)提交到存储库;有些可能有自己的存储库,有些可能是存储库的一部分。对于每个可交付的解决方案 (.sln)(例如,我们交付给客户的东西),它将 svn:externals 从存储库中获取所有必要的项目 (.vcproj) 以组装“最终”产品。

这很好用,但我很担心最终每个解决方案的代码大小会变得非常大(现在我们的总代码大小约为 75K SLOC)。

另外需要注意的一件事是我们防止所有传递依赖。也就是说,每个不是实际解决方案 (.sln) 的项目 (.vcproj) 都不允许 svn:externals 任何其他项目,即使它依赖于它。这是因为您可能有 2 个项目(.vcproj)可能依赖于同一个库(即 Boost)或项目(.vcproj),因此当您将 svn:externals 两个项目合并为一个解决方案时,svn:externals 将执行两次. 因此,我们仔细记录每个项目的所有依赖项,并由创建解决方案 (.sln) 的人来确保所有依赖项(包括传递性)都是 svn:externals 作为解决方案的一部分。

如果我们通过使用 .lib 、 .dll来重用代码,这显然会减少每个解决方案的代码大小,并在适用的情况下消除上面提到的传递依赖(例外情况是,例如,使用dll 像 Intel TBB 和默认的 Qt)


附录:(如果您愿意,请阅读)

GUI 博士可能最好地总结了共享源代码的另一个动机:

最重要的是,C++ 使简单的不是创建可重用的二进制组件。相反,C++ 使得重用源代码变得相对容易。请注意,大多数主要的 C++ 库都是以源代码形式提供的,而不是编译形式。为了从对象正确继承,经常需要查看该源代码——当您重用它时,依赖原始库的实现细节太容易(而且通常是必要的)。好像这还不够糟糕,修改原始源代码并进行库的私有构建通常很诱人(或有必要)。(有多少 MFC 的私有版本?世界永远不会知道......)

也许这就是为什么当您查看诸如 Intel Math Kernel 库之类的库时,它们的“lib”文件夹中的每个 Visual Studio 版本都有“vc7”、“vc8”、“vc9”。可怕的东西。

或者这个断言怎么样:

C++ 在插件方面是出了名的不适应。C++ 是极其特定于平台和编译器的。C++ 标准没有指定应用程序二进制接口 (ABI),这意味着来自不同编译器甚至同一编译器的不同版本的 C++ 库是不兼容的。除此之外,C++ 没有动态加载的概念,每个平台都提供自己的解决方案(与其他平台不兼容),您就可以了解情况。

您对上述说法有何看法?像 Java 或 .NET 这样的东西会面临这些问题吗?例如,如果我从 Netbeans 生成一个 JAR 文件,如果我将它导入 IntelliJ,只要我确保两者都具有兼容的 JRE/JDK,它会起作用吗?

0 投票
3 回答
2733 浏览

c# - 合并具有完全相同代码的 catch 块?

出于代码重用的原因,我想在以下代码中合并 catch 块:

像这样:

这有可能吗?

谢谢。

0 投票
1 回答
254 浏览

shared-libraries - 构建代码资产库

我一直在考虑为我所在组织的所有内部开发软件建立某种库。我想收集优秀的 SO 人可能对这个话题有的任何想法。

我想,向开发人员灌输编写可重用代码的好处有什么意义,如果在下一个项目中开发人员做的第一件事是文件 -> 新的,因为缺乏对哪些代码已经存在可重用的了解。

作为一个额外的好处,我认为只有这样的库会鼓励开发人员在编写代码时更多地考虑可重用性

我想让这个库尽可能简单,也许我唯一的两个要求是:

  • 搜索设施
  • 可用于多种类型的组件:程序集、Web 服务等

我看到每个资产/组件所需的基本信息是:

  • 名称和版本
  • 描述/目的
  • 依赖项

你会记录更多信息吗?

什么是最好的平台,即维基、论坛等?

是什么让像这样的软件库成功与不成功?

非常感谢所有想法。

谢谢

编辑:

发布后发现这些类似的问题:

您如何确保正确重用代码?

您如何促进在您的组织中使用共享组件?

0 投票
3 回答
7567 浏览

android - Android:自定义时钟小部件服务解决方法?

我有兴趣为主屏幕开发时钟小部件,在阅读主屏幕小部件教程后,我想知道是否有一个预先存在的Service我可以参考来更新当前时间而不是重新发明轮子?

我在我的安卓手机上下载了复古时钟应用程序,并注意到当我点击它时,它会弹出闹钟设置,但使用默认的谷歌模拟时钟小部件,点击后什么也不做。

那是因为Retro Clock小部件实现了闹钟服务吗?如果是这样,我该如何去引用该服务?还是我把这一切都错了和误解了?

任何帮助表示赞赏。

编辑:

我相信实施更新时钟的服务会极大地消耗电池寿命,任何解决方法的想法或有助于阐明使用的任何性能问题Service

0 投票
2 回答
124 浏览

.net - 在 dll 中存储类文件并将 dll 用于 asp.net 中的多个网站

我想在 VS2005 中创建一个类文件,并能够在我的计算机/生产服务器上的其他网站中使用它。如何创建此 dll 并将其存储在我可以在开发时以及在生产服务器上引用它的公共位置?

0 投票
3 回答
4421 浏览

jsp - 如何在页面中重用 HTML/JSP?

我是 JSP 的新手,我正在尝试减少大量剪切和粘贴的代码。
在项目的每个页面上,大约有 25 行混合的 JSP、Struts 标签、JSTL 标签和 HTML,它们在页面的各个点被剪切和粘贴。这大约 25 行重复使用的代码在每一页(大约 250 页)之间甚至都不相似,但在每一页中完全相同。最终,这个(业务逻辑)代码应该从视图中移出,但是这样做会是一个比我目前计划允许的更大的项目,所以我想知道是否有一种简单的方法来重用混合标签+JSP在页面内,作为临时修复,以便在时间允许的情况下分阶段重构代码。

为清楚起见,我正在寻找一种无需创建新文件(/本地到页面范围)即可封装代码的方法 - 即它应该在调用它的同一页面中定义。

有些人建议这可以用 Tiles 来完成 - 如果是这样,请告诉我如何。

0 投票
3 回答
214 浏览

python - 如何处理多个常见的用户界面?

我正在开发一个在 2 个不同平台上运行的 python 应用程序,即常规桌面 linux 和 Maemo 4。我们在两个平台上都使用 PyGTK,但在 Maemo 上,有一些小调整使它看起来不错,实现如下:

大约有 15 个这样的 if 语句需要让 UI 在 Maemo 4 上看起来和工作得很好。

这一直是非常易于管理的。问题是不久前发布了一个新版本的 Maemo(5,又名 fremantle),它与 Maemo 4 相比有一些很大的不同。我不想在整个 GUI 代码中添加一堆检查以让所有 3 个平台使用相同的代码库很好地工作,因为那样会变得混乱。我也不想为每个平台创建原始 GUI 代码的副本,而只是针对特定平台对其进行修改(我想尽可能多地重用代码)。

那么,有哪些方法可以让基于相同核心 UI 代码的不同平台的 UI略有不同?我不认为这是一个特定于 python 或 Maemo 的问题,我只是想知道这是如何完成的。