加入已经存在大型代码库的现有团队可能会令人生畏.什么是最好的方法;
我正在研究目前大约20k行的C++应用程序和库(编辑:在宏观方案中很小!).在工业界,我想你会得到一位经验丰富的程序员的介绍.但是,如果不是这种情况,您可以做些什么来尽快开始增值?
-
答案摘要:
这篇文章是一个部分重复的 - 最好的方式 - 熟悉自己与继承的代码库
我有一个项目,将模板存储在\TemplatesDLL和EXE旁边的文件夹中.
我想在运行时确定这个文件路径,但使用的技术可以在单元测试和生产中使用(我不想在NUnit中禁用阴影复制!)
Assembly.Location 是不好的,因为它在NUnit下运行时返回阴影复制程序集的路径.
Environment.CommandLine 也是有限的用途,因为在NUnit等人它返回NUnit的路径,而不是我的项目.
Assembly.CodeBase 看起来很有希望,但它是一个UNC路径:
file:///D:/projects/MyApp/MyApp/bin/debug/MyApp.exe
Run Code Online (Sandbox Code Playgroud)
现在我可以使用字符串操作将其转换为本地文件系统路径,但我怀疑有一种更简洁的方法可以将它隐藏在.NET框架中.有人知道这样做的推荐方法吗?
(如果UNC路径不是file:///URL,则抛出异常在此上下文中绝对正常)
我有一个客户想要把他们的Rails应用程序在一个利基中成功并将其应用到另一个类似的利基市场.这个应用程序的新实例将开始非常相似:所有相同的功能,不同的徽标和颜色.但是,如果新网站成功,则不可避免地需要进行大量自定义,而这些自定义不应该应用于原始网站.同时,如果修复了错误并对一个应用程序进行了改进,那么这两个应用程序应该能够共享这些改进.
任何人都可以提出解决此问题的策略或资源吗?如何保持适用于这两个应用的更改花费更长时间来测试和实施?
是的,我知道答案涉及SCM,插件,宝石和Rails引擎.这些工具将被使用.但我想知道何时以及如何使用这些工具来解决这个问题.
也欢迎链接.
这个问题与以下不一样:
多个网站在相同的代码库上运行? 在我的问题中,我没有使用不同的设置运行完全相同的应用程序.
如何在多个代码库之间同步更改?我问了一个类似的问题,但我特别询问Rails应用程序.
我一直对葡萄酒感到惊讶.有时我想破解它,修复一些小东西并且通常理解它是如何工作的.所以,我下载了Wine源代码,之后我感到不堪重负.代码库是巨大的 - 与Linux内核不同 - 几乎没有关于代码的指南.
理解如此庞大的代码库的最佳实践是什么?
几天前,当我不得不将C++文件引入Java项目时,我遇到了一个问题.它首先需要测量Java进程的CPU使用率,并决定使用JNI来调用用C编写的本机库(Unix机器上的共享库).问题是找到一个合适的位置将C文件放入源存储库(顺便说一下Clearcase),它只包含Java文件.
我想到了几个选择:
(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解决的功能.
我们有相当大的代码库(150多个项目,400,000多行Java代码,一些Groovy和Gradle代码,一些Perl代码,一些XML,许多JSP等).我设法在Spring Tools Studio 2.6中打开所有这些项目,我还为Groovy,Perl,Checkstyle,PMD添加了一些插件.
问题是Eclipse一直在忙着占用我的CPU.当我更新某些东西时它真的很慢,它正在缓慢地构建,任何类型的UI操作都会延迟发生.
此外,我有相当不错的机器64位,8GB的RAM,我运行64位版本的STS,我给Eclipse 2GBs(但它不会高出1GB的堆).
所以,我的第一个问题是有一种方法来确定是什么让它变慢?你们中的一些人是否成功地在一个工作区中使用如此庞大的代码库?
我已经尝试查看运行Eclipse的JVM的线程(使用jconsole),但我找不到任何有用的东西.
作为程序员,我们阅读的内容比编写的要多.我开始在一家使用几个"大"Python软件包的公司工作; 具有较高KLOC的包裹或包裹系列.例证:Zope.
我的问题是我无法快速/轻松地浏览此代码库.我目前的策略是
或者:
这花费了大量时间,这对于大型代码库来说是可以理解的.但我觉得导航一个庞大而未知的Python代码库是一个常见的问题.
所以我正在为这个问题寻找技术工具或战略解决方案....
我无法想象使用上述策略的硬核Python程序员.
我不知道,我被告知以前的开发人员在接收和直接编码时没有遇到任何重大问题.我想知道我是否做错了,要求我的经理在这里与一些高级程序员进行一些简短的会谈.是否更加小心谨慎并完成这个时间敏感的追踪器,或者在截止日期前赶紧吃肉?
在旁注中,维护这个应用程序的以前的程序员在公司工作不到一年之后就已经消失了.不知道是否有任何关系.
有没有人有一个有效的替代方案,使用已注册的代码进入存储库以查找可查找性?
我问的原因是因为我最近与一位开发人员讨论过检查注释掉的代码.我的立场是,注释掉的代码永远不应该被检查到我们的VCS中,因为它在技术上不是代码库的一部分,因此令人烦恼的事情并不值得它占用的字节,可以这么说.
他的反对意见是,他检查过的一些注释掉的代码仍然说明了他希望将来修复的一些工作(在这一特定点上,评论发生在2年前,但除了这一点之外).他希望将它保留在代码库中,以便他可以轻松找到它,即使它目前无法编译,它仍然在全局范围内显示解决它的正确方法.
最后,他同意了,注释掉的代码不属于.但是当我们想到他可能的替代品时,我们的确很短.
我能想到的唯一选择是:
有没有人知道/使用任何替代品?我的两个选项听起来都比实际值得多,但这可能会因我的推理而倾斜,因为无论如何注释掉代码都是毫无价值的.我讨厌必须去"嘿,如果你现在没有时间来解决这个问题并不重要,无论如何都要留在代码库中"路线(但如果没有可行的替代方案,我会这么做).
对不起这个可怕的头衔,我无法想出一个更好的头衔
我有这个项目,我必须编写一个网站以及 ios 和 android 应用程序。
我必须在非常有限的团队(基本上是我自己)的帮助下完成这项工作。因此,我希望在这些平台之间共享尽可能多的代码,以避免尽可能地维护不同的代码库。
我开始考虑 flutter:dart 中的逻辑(以及与后端的交互)可以编译为 ios 和 android,也可以编译为 javascript 以供网站调用。我也喜欢使用 flutter 构建 UI 的方式。
对于网站,我知道有 flutter web 可用于制作网络应用程序,但我希望我的网站感觉更像是一个网站,而不是一个单页应用程序。我想过用React+Gatsby来做网站的ui,同时调用dart编译的js进行逻辑。这将实现高页面加载速度、良好的搜索引擎优化,同时通过 dart 到 js 编译保持 React 应用程序的交互性和单一代码库逻辑。
我想知道这对您来说是否是一个好方法,如果不是,您会如何做。
在这种方法中,我想知道是否可以将 flutter web 小部件嵌入到 React js 组件中,始终关注维护尽可能低的平台特定代码。除了将它们嵌入到 iframe 中之外,我还没有找到任何其他方法来做到这一点,这似乎不是一个好主意,不是吗?
codebase ×10
.net ×1
c# ×1
comments ×1
eclipse ×1
flutter ×1
flutter-web ×1
legacy ×1
legacy-code ×1
maintenance ×1
nunit ×1
performance ×1
polyglot ×1
python ×1
reactjs ×1
vim ×1
widget ×1
wine ×1