7

我在美国一所大学的一个小型独立科学实验室工作,我注意到,与行业中表面上遵循的许多做法相比,例如每天检查版本控制系统,使用对于所有语言(如 emacs)等的单个 IDE/编辑器,我们遵循相当粗劣的编程实践。

因此,我正在考虑将我所有的程序、脚本等整合在一起,并构建一个简化的环境来提高生产力。我想从 Stack Overflow 上的人那里得到同样的建议。这是我的主要计划:我使用 MATLAB、C 和 Python 脚本,我想从一个编辑器编辑、编译它们,并确保正确的版本控制。

(我想要建议的问题/事情以斜体显示)

1] 安装 Cygwin,让它在 Windows 上正常工作,这样我就可以使用 git 或类似的版本控制系统(有没有可以直接从 Windows CLI 工作的 DVCS,所以我可以跳过 Cygwin 步骤?)。

2] 设置 emacs 以使用 C、Python 和 MATLAB 文件,这样我就可以从一个编辑器(比如 emacs)一次编辑和编译所有这三个文件

(我对 emacs 菜单不是很熟悉,但是有没有办法为某些语言设置编译器的路径?我知道我可以用谷歌搜索,但到目前为止,emacs 文档对我来说很难阅读,所以如果有人用简单的语言告诉我,我将不胜感激)

3] 在每天或半天结束时开始检查代码,以保持我的代码的正确进度(两个问题),

  • 你可以直接从emacs签出文件吗?

  • 有没有办法将LabVIEW文件检出到像git这样的DVCS中?

最后,我想为这个问题相当模糊的性质道歉,并希望随着时间的推移我会学会提出更好的问题。不过,如果人们提出他们的建议,并指出任何可以帮助我学习的资源,我将不胜感激。

4

5 回答 5

3

1) git 和 mercurial 都可以在 Windows 下运行——不需要 Cygwin——如果可能的话,我会避免这种环境。

2)不明白为什么你认为你必须使用emacs。

3)您不会在一天中的特定时间或以特定频率签入代码 - 当您进行了经过测试并且有效的明显更改时您会签入。或者,如果您在自己的分支机构,只要方便。

于 2010-05-09T17:26:01.250 回答
2

你走这条路真是太好了。以下是要添加到该列表中的一些内容:

1)将测试添加到您的工作周期中。也就是说,一旦编写了某个段,就让其他没有参与过它的人审查代码。然后编写测试以确保新代码与其他代码很好地集成并产生您希望看到的结果,最后使这些测试成为通宵构建过程的一部分。

2) 进行一夜之间的构建过程。或者至少是一些自动化过程,每次有人签入代码时都会重新构建您的代码。让它在该构建上运行您的所有测试。

于 2010-05-09T17:27:04.353 回答
2

尝试遵循某种最佳实践将使您受益匪浅,但您可能会发现很多人对遵循它们并不真正感兴趣。尝试以微妙的方式宣传这些好处,这样你就不会恐吓你的同事——如果他们喜欢他们所看到的,他们最终可能会采纳你的一些建议。

许多人只关心快速毕业或让他们的资助提案获得批准的科学环境似乎孕育了一种即时运行、牛仔风格的编码。如果你能让人们完全考虑质量和可重复性,你就已经赢了。

我发现有用的:

  • 始终尝试在您可以轻松测试的小型子项目中破坏您的代码。在每次签到时运行测试。您可以使用 git 的子模块来组装您的“应用程序”。
  • 如果多个人可以提交到存储库,请使用astyle具有一致格式的东西(对于 Python 代码来说可能不太成问题)。
  • 设置类似 gitweb/cgit/... 这样人们就可以获得代码的 tarball 并习惯源代码控制很有用的想法。
  • 尝试在您的小组/社区中寻找编码伙伴。在人们倾向于“完成它”的环境中进行代码审查是非常困难的,通常会抛弃良好的风格/常识。
于 2010-05-09T17:43:28.830 回答
0

正如其他人所提到的,定期检查并不是非常重要。当您达到里程碑时签入(您所做的更改适用于其余代码,并且可以正确构建。自动构建更为重要。它们验证您已签入所有相关更改。

我认为您可能对托管源代码控制与用于源代码控制的客户端有点困惑。CVS、SVN、Git 和其他客户端几乎普遍适用于 Windows。许多网络托管公司都提供托管服务。这可能是一个不错的选择,因为它还可以有效地为您的代码库提供大约 100 美元/年的异地备份。或者,您可以将服务器加载到低端 PC 上并将其放在某个壁橱中,尽管电费可能与您为托管支付的费用一样多。

为所有语言使用一个 IDE 根本不重要,相同语言的项目之间的一致性很重要。您使用一种语言的所有项目可能都应该有一个共享的编码标准。它们还应该构建在相同的编译器上,和/或在相同的解释器/VM 上运行,并且对于您使用的任何 IDE(如果适用)都有最新的项目文件。

于 2010-05-09T18:02:04.680 回答
0

有没有办法将LabVIEW文件检出到像git这样的DVCS中?

LabVIEW 文件没有理由不能在 DVCS 中,我使用的是 Mercurial。然而,由于 LabVIEW 文件被视为二进制文件,因此您的 repo 的大小将快速增长。

开箱即用的 LabVIEW 仅提供3 路合并,要在您需要LV-diff的两个版本之间使用差异函数,并进行一些调整以支持仅更改文件位置的工具(例如,重复文件名)。

将 *.lvlps 和 *.aliases 添加到您的忽略列表中也很重要,这些文件在另一台计算机上没有用处。

于 2010-05-19T21:07:21.833 回答