7

私は米国の大学にある小さな独立した科学研究所で働いていますが、バージョン管理システムへの毎日のチェックアウトなど、業界で表向きは従われている多くの慣行と比較して、すべての言語 (emacs など) に対して単一の IDE/エディターを使用するなど、私たちはかなりお粗末なプログラミング手法に従います。

そこで、すべてのプログラム、スクリプトなどをまとめて、合理化された環境を構築して生産性を高めようと考えていました。同じことについて、Stack Overflow の人々からの提案が欲しいです。これが私の主な計画です。: 私は MATLAB、C、および Python スクリプトを使用しており、単一のエディターからそれらを編集してコンパイルし、正しいバージョン管理を保証したいと考えています。

(質問/提案が欲しいものは斜体で表示されています)

1] Cygwin をインストールし、Windows でうまく動作するようにして、git または同様のバージョン管理システムを使用できるようにします ( Windows CLI から直接動作する DVCS があるので、Cygwin の手順をスキップできますか? )。

2] C、Python、および MATLAB ファイルで動作するように emacs をセットアップして、1 つのエディター (たとえば、emacs) から 3 つすべてを一度に編集およびコンパイルできるようにします。

(私は emacs メニューにあまり詳しくありませんが、特定の言語のコンパイラへのパスを設定する方法はありますか? これを Google で検索できることは知っていますが、これまでのところ emacs のドキュメントを読むのは非常に難しいことがわかっているので、誰かが簡単な言葉で教えてくれたらありがたいです)

3] 1 日または半日の終わりにコードのチェックインを開始し、コードの適切な進行状況を維持します (2 つの質問)。

  • 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

LabVIEWファイルをgitのようなDVCSにチェックアウトする方法はありますか?

LabVIEWファイルをDVCSに含めることができなかった理由はありません。私はMercurialを使用しています。ただし、LabVIEWファイルはバイナリファイルとして扱われるため、リポジトリのサイズは急速に大きくなります。

箱から出して、LabVIEWは3方向マージのみを提供します。2つのリビジョン間でdiff関数を使用するには、 LV-diffが必要です。ファイルの場所のみを変更するツール(ファイル名の複製など)をサポートするためのいくつかの調整が必要です。

また、無視リストに*.lvlpsと*.aliasesを追加することも重要です。これらのファイルは、別のコンピューターでは有用な意味を持ちません。

于 2010-05-19T21:07:21.833 に答える
0

他の人が述べたように、定期的にチェックインすることはそれほど重要ではありません。マイルストーンに達したらチェックインします (コードの残りの部分で機能する変更を行い、適切にビルドされます。自動ビルドはより重要です。関連するすべての変更をチェックインしたことを検証します。

ソース管理とソース管理のクライアントのホスティングについて少し混乱していると思います。CVS、SVN、Git などのクライアントは、ほぼすべての Windows で利用できます。ホスティングは、多くの Web ホスティング会社から提供されています。これは、コードベースのオフサイト バックアップを年間 100 ドルで効果的に提供するため、良いオプションかもしれません。または、ローエンドの PC にサーバーをロードしてクローゼットのどこかに置くこともできますが、電気代はおそらくホスティングに支払う金額と同じくらいです。

すべての言語に対して単一の IDE を使用することはまったく重要ではありません。同じ言語のプロジェクト内での一貫性は重要です。1 つの言語内のすべてのプロジェクトには、おそらく共通のコーディング標準が必要です。また、同じコンパイラでビルドするか、同じインタープリター/VM で実行し、使用する IDE の最新のプロジェクト ファイルを保持する必要があります (該当する場合)。

于 2010-05-09T18:02:04.680 に答える