今まで見た中で最高のオープンソースコードは何ですか?[閉まっている]


19

オープンソースの価値の一部は、新しいプラットフォームや言語を使い始めた人々に素晴らしいサンプルコードを提供することです。

あなたが出会った中で最高のオープンソースコードは何ですか、そしてなぜあなたはあなたの選択が好きですか?どの言語でもかまいませんが、特に指摘できるObjective-Cの最良の例に興味があります。

明らかにこれは自由回答形式の質問なので、しばらく質問を開いたままにして、どのような回答が得られるかを確認します。

ありがとう!

編集:「最高」のために、私は与えられた言語またはプラットフォームのイディオムに従うコードを考えていました。また、コードを「プロフェッショナル」にする部分を含める-良いドキュメント、テストスイートなど。非常に簡潔な、またはおしゃべりなコードよりも、あまり賢くないことをお勧めします。


4
「ベスト」の特定の定義はありますか?

あなたの質問は少し広範です。それを編集して、より具体的にし、「最良」があなたにとって何を意味するかを定義することができます。最高のUI、最高のデスクトップ/ウェブ/電話アプリ、最高の同時性、最高の視覚的に魅力的なコード?
ウォルター

良い質問には+1。特定の言語/技術に合わせて剪定することをお勧めします。Linux用のCとデータベースドライバ用のJavaの比較は、率直に言って一貫性のない考えです。
-Fanatic23

その説明を編集した場合、質問を読んでいる他の人にとって非常に役立ちます。:)
マイケルK

回答:


14

私は長年にわたってオープンソースコードの一部を見てきましたが、そのほとんどすべてに非常に失望しています。

私にとっての主なイライラは、通常、コメントが非常に少ないことです。多くの場合、唯一のコメントはいくつかの長くて合法的な著作権表示です。

Linuxカーネルは、ファイルに頻繁にコメントが含まれていない例です(たとえば、XYZのドライバーは、少なくともおおよそ正しい場所にいることを教えてくれます)。

私は、コーディング標準がコード単位が何をするかを言うだけでなく、賢明でわかりやすいコメントを必要とする商用および防衛プログラミングから来ましたが、コード全体を通して、アルゴリズム、方法、特異性、ハッキング/巧妙なことを記述するコメントのブロックが必要誰もが後を追う人が実際のコードを苦労して歩くのではなく、何が行われているのかを素早く見て理解できるようにするためです。

おそらく道徳は:あなたが何をしているか教えてください、私にそれを理解させないでください。

これをうまく行うオープンソースコードは見つかりませんでした。優れたコーディングプラクティスを学習する手段としてオープンソースを探している限り、私の慎重なアドバイスは次のとおりです。


オープンソースプロジェクトのコメントや文書化が不十分なことが多いことに同意します。しかし、彼らはすべてボランティアです。ボランティアが不快なことをするように動機付けるのは、通常、彼らが探している報酬(地位、社会、素晴らしいことを達成すること、または彼らが愛することをすること)なしでやるのは難しい。

@ pierre303-私はNoRMproject.orgを設立し、維持しています。主な仕事の1つは、コードを書くときにコメントを書くことです。これは役に立ちます。貢献者は、リーダーが強調する部分に取り組むと思います。NoRMの場合、それはTests、Comments、およびIdiomatic(c#への)コードでした。そのため、かなりプロフェッショナルで保守可能なコードベースがあると思います。
アンドリューテーケン

コードの作成中にコメントを書く必要があることに同意します。(主に利己的であり、コードのブロックの前に物語を書くのに役立つので、私はすべての自分のコードでもこれを行います-実際にそれを行う前に何をする必要があるかを自分の心で明確にします。)
すぐに

私がかつてぶつかったこのおもしろい引用を思い出させます:「もし私がそれを書くのに苦労したなら、彼らはそれを読むのに苦労するはずです。」
デニスドバーナーディ

+ 1、@ quickly_now-コードは十分に計画され、十分にテストされ十分にコメントされるべきだと思います!どんなクレイジーな惑星に住んでいますか?


5

ドナルド・クヌースは、出版社ができるよりも自分の本に数学の数式をタイプセットするのに役立つ2つのプログラムを書いた。

これらの2つのプログラム(最終バージョン)は、印刷されたタイプセットバージョンのソースコードを作成できるLiterate Programmingを使用して作成され、書籍として出版されました。これらは、これまでに読んだ中で最高の文書化されたプログラムです!

  • 「コンピューターと組版、ボリュームB:TeX:プログラム」
  • 「コンピューターと組版、ボリュームD:メタフォント:プログラム」

オンラインで読むことはできませんが、Amazonでは、http: //www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/のMetafontブックを「内部を見る」こともできます

警告:それは重いものです。そのため、各本は600ページで実行されます。


1
注:オンラインでは利用できないタイプセットバージョンです。このソースは完全に利用可能であり、わずかな労力で印刷バージョンを生成できます。

4

Beautiful Codeという本は、寄稿者がオープンソースプロジェクトからの美しいコードの模範であると考えるもののいくつかのサンプルでこの質問に答えようとしています。
代替テキスト


4
この本はチェックする価値がありますか?
オリバーワイラー

ただし、これは「現実の」オープンソースコードではありません。この答えは不正です!:P
ノルドリン

1
私はそれを所有していて、感銘を受けませんでした。ほとんどの章は退屈ですが、いくつかのハイライトがあります-正しく覚えていればmap / reduceが説明されています。
マーティンウィックマン

4

CodeIgniter

OSプロジェクトで見た、最もクリーンで、最も文書化されたソースコードの一部。


1
php&cleanest?
クーゲル

1
@Kugel:両方ともそうです。
ジョシュK

CodeIgniterのソースを見てみると、実際に非常によく構造化されており、きれいに見えます。私はあなたがPHPで取得できるように美しいと思います。:)そして、私はいつもソースコードでユーモアが好きでした: "// DBがまだ指定されていませんか?それらを無意味に打ち負かしてください... if(!isset($ params ['dbdriver'])..."
Bjarke Freund-Hansen

2
私はソースコードを覗きましたが、それはよく文書化されており、簡単に理解でき、OS PHPからそれを期待してなかったことを認めなければなりません。
OnesimusUnbound

2
もう1つの優れたOS PHPフレームワークはfuelphp(fuelphp.com)で、これも文書化され、きれいにレイアウトされており、髪を引き抜かないように命名規則を使用しています。これは、スパゲッティコードの原因がPHPではないことを証明しているだけです。通常は、コードを書いている人たちです。
マイケルJV

3

非常によく構成された2つのプロジェクトを見てきました。

  1. ジャンゴ
  2. Chromiumプロジェクト

特に、2つ目はいくつかの点に基づいて非常に興味深いものです。

  • 多くのこと(タブ、プラグイン)のためにプロセスを使用する方法と、それがどのように適合するか
  • Windows、Mac、LinuxごとにネイティブGUIを備えたマルチプラットフォーム
  • ウェブキット統合

また、Postgreは(MySqlとは対照的に)きれいに書かれていると聞きましたが、私はそれを読んでいません。


1
PostgreSQLコードの場合は+1。それは非常にきれいで読みやすいです。
デニスドベルナルディ

2

Linux KernelのCコードはかなり良いと言う人もいます

(私がそのことを理解しているわけではありません!それはおそらく、最高の書かれたオープンソースCプロジェクトです。)


1
最適化されたコードには最適です。私の経験では、読みやすさはそれほど良くありません。もちろん、私は何も書いていません、ただ読んでください…
マイケルK

1
本当だよ。残念なことに、この質問は実際には「最良」を定義していなかったため、私は独自の定義を採用しています。:)
ノルドリン

2

私が見つけたLLVMのソースコードは非常に読みやすいように。私が見た中で最もクリーンなC ++であると確信しています。慣れていない場合は、基本的にコンパイラ構築ツールキットです。

  • 広範なテストスイートがあります。実際、少なくとも2つあります。1つは機能のテスト用、もう1つは(LLVM自体とそれが生成するコンパイル済みプログラムの)パフォーマンスのテスト用です。
  • コードはよくコメントされています。
  • 非常に反復的なコード(さまざまなバックエンドでの命令マッチングなど)は、高レベルのDSL(TableGenと呼ばれる)記述から自動生成されます。
    • これにより、同じ記述から複数のばらばらのコードを生成することもできます。たとえば、バックエンド仕様はコンパイラーのバックエンドの一部として使用されますが、アセンブラーと逆アセンブラーにも使用されます。
  • かなり良いドキュメントがあります。

しかし、これはかなり大きなプロジェクトなので、すべてがどのように機能するかを正確にすばやく理解できるとは思わないでください。しかし、概要を簡単に把握できるはずです。


1

大規模なプロジェクトではありませんが、SubSonic ORMは非常に簡単にハッキングできました。これは、私が必要に応じて正確に変更することができた最初の本当のオープンソースプロジェクトでした。他のほとんどの人はソースを見て、頭を壁にぶつけてしまいました。数時間以内にPostgreSQLを部分的にサポートしました(SQL Serverプロバイダーの事柄に基づいて)。これは私が今まで見た中で最もよく組織化されたプロジェクトです...しかし、私は多くのオープンソースプロジェクトを見たとは言いません。


0

最初の簡単な例:イベント処理システムzope.eventのコード。別のイベントリスナーにイベントをディスパッチする他のイベントシステムを使用していました。zope.eventコードを見たとき、それはfacepalmの時間であり、いくつかのことがいかに簡単であるかを理解しました。

これはPythonで書かれており、コード全体は次のとおりです。

subscribers = []

def notify(event):
    """ Notify all subscribers of ``event``.
    """
    for subscriber in subscribers:
        subscriber(event)

サブスクライバーを追加するには、次を実行します。

from zope.event import subscribers
subscribers.add(MySubscriber())

私が見たKISSの最良の例。

次に、より複雑な例:火星のコードベースは、Pythonの巧妙なハックを使用しているにもかかわらず、非常に見やすく、読みやすいです。同じことは、火星を使用して構築されたGrokのほとんどのコードにも当てはまります。


3
このコードの優れた点がわかりません。私はpythonを知りませんが、ここではオブザーバーパターンの簡単な使用法しか見ることができません。
バルジャック

他のイベントシステムと比較しましたか?簡単にするために、別のPythonの例を取り上げ
レナートレゲブロ

1
美しい-私は実際にjavascriptで非常に似たものを書いた。私は賢いと思いますか?;)
マイケルK

はるかに悪いイベントシステムがあるからといって、これが優れたコードであることを意味するわけではありません。私はまさにこのコードをたくさんの言語で見ました。さらに重要なことは、タイプセーフな実装を見たことです。
back2dos

@ back2dos:これはタイプセーフです。
レナートレゲブロ

0

この本The Architecture of Open Source Applicationsを読むことを検討してください。本で説明されているプロジェクトで設計の決定が行われた理由と方法についての批評を提供する必要があります。

長い間あなたを避けることができる最高のものを探すのではなく、おそらく本の範囲を超えて、いくつかのプロジェクトの設計を試してみてください。これは、これらのプロジェクトの失敗を繰り返す(または、一般的に呼ばれているように、車輪を再発明する)のではなく、これらのプロジェクトの成功を積み上げるのに役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.