问题标签 [codebase]

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 投票
7 回答
3291 浏览

codebase - 混合两种或多种语言(如 Java 和 C++)时组织源代码库

几天前,我不得不将 C++ 文件引入 Java 项目时遇到了一个问题。它首先需要测量 Java 进程的 CPU 使用率,然后决定采用 JNI 调用用 C 编写的本机库(Unix 机器上的共享库)。问题是找到一个合适的位置将 C 文件放在仅包含 Java 文件的源存储库(顺便说一下 Clearcase)中。

我想到了几个替代方案:

(a) 创建一个单独的目录,用于将 C 文件(具体来说,一个 .h 文件和一个 .c 文件)放在源代码库的顶部,例如:

/vobs/myproduct/javasrc /vobs/myproduct/cppsrc

我不喜欢这样,因为我只有两个 C 文件,而且像这样在语言级别拆分源代码库似乎很奇怪。如果项目的大部分内容或多或少都是用 C++ 和 Java 编写的,这可能没问题。

(b) 将 C 文件放入使用它的 Java 包中。

我在 /vobs/myproduct/com/mycompany/myproduct/util/ 中有调用 Java 类,C 文件也放在那里。

我也不喜欢这个,因为我认为 C 文件不属于 Java 包。

以前有没有人解决过这样的问题?一般来说,在组织混合两种或多种语言的代码库时,应该遵循什么好的策略?

更新:我没有任何计划在我的项目中使用任何 C 或 C++,也许是一些 Jython,但你永远不知道我的客户何时需要一个只能通过使用 C 来解决或最好通过使用 C 来解决的功能。

0 投票
19 回答
13640 浏览

legacy - 熟悉大型代码库的最佳方式是什么?

加入一个拥有庞大代码库的现有团队可能会令人生畏。什么是最好的方法;

  • 广阔; 尝试从代码中大致了解所有内容如何链接在一起
  • 狭窄的; 一次专注于一小段代码,了解它们是如何充分工作的
  • 选择一个功能来开发和学习
  • 尝试从类图和 uml 中获得洞察力,如果可用(并且是最新的)
  • 完全不同的东西?

我正在研究目前大约 20k 行的 C++ 应用程序和库(编辑:在宏伟的计划中很小!)。在行业中,我想您会得到一位经验丰富的程序员的介绍。但是,如果不是这种情况,您可以做些什么来尽快开始增加价值?

--
答案总结:

  • 在调试模式下单步执行代码以查看它是如何工作的
  • 与比您更熟悉代码库的人配对,轮流担任编码人员和观看/讨论的人员。在团队成员中轮换合作伙伴,以便知识传播。
  • 编写单元测试。从你认为代码如何工作的断言开始。如果结果如您所料,您可能已经理解了代码。如果没有,你有一个难题要解决和/或进行调查。(谢谢Donal,这是一个很好的答案)
  • 以与上述类似的方式检查功能代码的现有单元测试
  • 阅读 UML、Doxygen 生成的类图和其他文档以全面了解代码。
  • 进行小的编辑或错误修复,然后逐步建立
  • 记笔记,不要跳进去开始开发;花时间理解比生成混乱或不适当的代码更有价值。

这篇文章是the-best-way-to-familiarize-yourself-with-an-inherited-codebase的部分副本

0 投票
8 回答
1927 浏览

maintenance - 您如何熟悉没有文档的代码库?

我不知道,有人告诉我,以前的开发人员在学习并直接进入编码方面做得很好,没有什么大问题。我想知道我是否做错了,我要求我的经理在这里与一些高级程序员进行一些简短的会议。是谨慎地完成这个时间敏感的跟踪器,还是赶在最后期限前完成?

顺便说一句,以前维护这个应用程序的程序员都在公司不到一年就走了。不知道有没有什么关系。

0 投票
9 回答
408 浏览

regex - 在整个代码库中更改变量名称只是在要求灾难吗?

假设您决定将 Stack Overflow 的名称更改为 Frack Overflow。

现在,在您的代码中,您已经有几十个对象、变量和选择器,它们的名称有些变体“堆栈”。您现在希望将它们替换为“Frack”。

所以我的问题是,你会选择通过正则表达式过滤器运行整个代码库并更改所有这些名称吗?或者你会让他们这样吗?

0 投票
3 回答
416 浏览

open-source - 添加到维基百科的代码?

我知道wiki 的概念是让来自世界各地的人们做出贡献和一切。现在有没有办法向维基百科的代码库添加代码(“贡献”)?开源?

例如。我想在他们的用户页面上向每个维基百科人(注册用户)提供一个民意调查,询问他们是删除者(相当少)还是添加者(相当多)

我敢肯定,很多人都会有很棒的想法,他们可以做出贡献……比如 FireFox 插件。

有什么方法可以添加或添加到维基百科软件?即使您一直处于节制状态并且每项更改都经过维基百科员工的验证,哎呀,您可以更新维基百科!

0 投票
11 回答
6755 浏览

wine - 了解大量未记录的源代码?

我一直对Wine感到惊讶。有时我想破解它,修复一些小问题并大致了解它是如何工作的。所以,我下载了 Wine 源代码,然后我就感到不知所措。代码库非常庞大,而且 - 与 Linux 内核不同 - 几乎没有关于代码的指南。

理解如此庞大的代码库的最佳实践是什么?

0 投票
2 回答
4370 浏览

.net - 为什么我的 App.Config 代码库不能帮助 .NET 定位我的程序集?

我有以下客户端应用程序及其相应的config文件:

AssemblyPrivate.exe没有公钥,也不位于 GAC 中。据我所知,运行时应该先解析app.config文件,然后再在客户端应用程序目录中查找程序集。

未处理的异常(为便于阅读而包装)是:

为什么它不工作?我需要使用动态绑定(不是静态的)。

亲切的问候,PK

0 投票
2 回答
505 浏览

c# - 远程代码库

我有一个dll。该dll被上传到服务器上。我希望每次应用程序开始从服务器获取“最新”dll,所以我在我的 app.config 中使用了以下代码。为什么它不起作用?

这是 app.config 文件:

0 投票
2 回答
115 浏览

architecture - 合并核心库

大约一年前,我们公司推出了一个较大的软件包,主要由两名高级开发人员编写。为了便于演示,我将其称为“项目 A”。从那时起,我们一直在开发一个新的软件包,“项目 B”,在它的树中是项目 A 的一个分支。

项目 B 有对项目 A 的引用,但是现在我们即将结束项目 B,我们还需要从 A 中引用 B。因此,在合并 A 的分支之后,在与 B 上线之前,我们想合并两个项目之间的核心库。

对于这种情况,您有哪些经验?这个项目有哪些最佳实践和经验教训?我们如何才能最好地合并核心库,同时对项目 A 中的其余源代码影响最小?

编辑: 您对保留项目 A 的命名空间但将代码定位在项目 B 的核心库(最终将成为公司的核心库)中的可行性有何看法?从那里,只需在遗留项目中引用新的公司核心库......

编辑2: 感谢您的回复。也许需要更多的技术说明。这两个项目密切相关,但每个项目都有自己的 .NET 类库项目作为核心库。除此之外,每个库都被其他各种 .NET 项目引用;内部和外部 Web 应用程序、表单应用程序等。我的更多问题是源代码应该放在哪里 - 我不认为它们应该保持两个独立的 .NET 项目,但一个项目包含两者,最初保留现有的命名空间. 随着我们继续开发,我们将重构、组合命名空间、清除重复功能等。毫无疑问,两个现有库中包含的功能将在即将到来的项目中有用,并且在现有的两个库之间共享也出现了新的需求“核心”库。

0 投票
1 回答
1128 浏览

java - Javascript_Java_Interaction 小程序“代码库”问题

我今天在以下位置看到了一篇关于 Javascript_Java_Interaction 的文章:

==================================================== ===========================================

==================================================== =========================================

它在页面 [Javascript_Java_Interaction.html] 上显示了小程序,但是如果我输入一些文本并单击按钮,则没有任何反应,问题出在以下行:

所以我将类文件复制到与 html 文件 [C:/Dir_Fit/] 相同的目录中,并将上面的行更改为:

现在它可以工作了,它将显示一个警报窗口。

所以,我的问题是为什么当我指定代码库时它不起作用?根据Java文档,如果类文件位于不同的目录中,您可以通过代码库告诉它,小程序将显示,但如果您输入一些文本并单击按钮,则不会发生任何事情,我尝试了不同的方法来指定代码库:

然而,它们都不起作用,为什么?我不希望类文件与 html 位于同一目录中。有什么解决办法?

坦率