SQLiteのソースコードを読むことはIMOのミッションでは不可能です。ただし、他のコードからダウンロード、コンパイル、使用できる非常に複雑なソフトウェア(結局は本格的な組み込みデータベース)の使用可能な部分であり、常に更新されます。
このように非常に複雑で読みにくいコードを、どのように書いて維持するのでしょうか?
SQLiteのソースコードを読むことはIMOのミッションでは不可能です。ただし、他のコードからダウンロード、コンパイル、使用できる非常に複雑なソフトウェア(結局は本格的な組み込みデータベース)の使用可能な部分であり、常に更新されます。
このように非常に複雑で読みにくいコードを、どのように書いて維持するのでしょうか?
回答:
ComplexとComplicatedには大きな違いがあります。次のリンクについて要約します。:)
http://codebetter.com/blogs/dru.sellers/archive/2009/09/25/complex-vs-complicated.aspx
より個人的な注意として、私は100万行を超えるコードのコードベースに取り組んでいます。1行目から現在の状態に移行しました。農民が多いほど(コード内で長く読んでいるほど)簡単になります。すべての行が何をしているのかを説明することはできませんが、特定のタスクまたはバグの検索を開始することはできました。それは自然に来るだけです。
物語の教訓は、プログラミングの世界のあらゆるものと同様に時間がかかるということです。SQLiteを見て、それを知って、理解することを期待するなら、あなたは自分をからかっているでしょう。すべてがどのように連携するかを理解するには時間がかかります。良いコードと悪いコードの違いは、そのプロセスにかかる時間です。
最後に、一部の開発者はコードベースに飛び込んで理解を開始することができません。多くの人は、コードベースの大きさやアーキテクチャに圧倒されます。他の人はそれに飛び込むだけで問題ありません。それはすべて開発者の強さに依存します。
SQLiteの特定のケースでは、開発およびメンテナンスで使用するために選択した主なツールは自動テストです。彼らは、テストスイートで100%のカバレッジ(ステートメントカバレッジではなくブランチカバレッジ)に誇りを持っています。彼らによると、それは世界で最もテストされたソフトウェア製品の一つです。そのため、追加または変更したものがリグレッションを引き起こした場合、すぐに認識し、その結果として大胆に展開できます。
http://sqlite.org/testing.html
非常に驚異的な数です。テストコードの行数は、実稼働コードの約640 倍です。
編集:この質問は死者から提起されたようです!そして、1年を少し過ぎて、同じページが、本番のテストコードの1177倍の行を持っていると報告しています!
プロジェクトを維持するために、プロジェクト全体をよく理解する必要はありません。通常、大規模で複雑なソフトウェアを使用する場合、人々は自分の面倒を見る独自の特定の「領域」を持ち、システムの残りの部分の「合格」知識しか持っていません。
SQLiteは、「大規模なソフトウェアプロジェクト」の規模で、実際には比較的小さいですが、あなたは、Windowsオペレーティングシステムのようなものを見れば、あなたは人誰でしょうただ、カーネル、人々誰の作業だけでシェル、人々誰の作業だけで仕事をInternet Explorerでは、ウィンドウマネージャーなどで作業するだけです。「シェル」で作業する人は、カーネルのバグをすぐに修正することはできません。
また、これらのプロジェクトは時間とともに進化するという利点もあります。常に複雑なプロジェクトから始まったわけではありません。つまり、新しい開発者は通常、経験豊富な開発者によって「トレーニング」を受けることができます。
大規模な開発者チームに参加すると、プロジェクトの特定の側面(バグまたは新機能の可能性があります)が与えられ、最初の数回の反復で別の開発者が「仲間」になります。あなたの仲間はあなたが働いている地域をよく理解していて、あなたがあなたの道を見つけるのを助けることができます。
SQLiteのようなオープンソースプロジェクトの場合、既存の開発者が新しい開発者を「トレーニング」する動機がないため、実際には少し難しくなります。それで、あなたはあなたがもう一人でいることに気付くでしょう。しかし、開発者フォーラムやメーリングリストで引き続きヘルプを見つけることができます(たとえば、「このような機能を実装したい」、「バグXYZを見つけました。どこから探し始めますか?」などの質問を投稿すると、何らかの形のヘルプ。
他の回答で言及されていないことの1つは、「自然に彼らにやってくる」ことです。ほとんどの人は良いコードを書きたいと思っていますが、悪いコードを書くように調整されています。私が出会ったプログラマーの中には、当然のことながらLINEARの思想家+時々、非常に意図的に複雑なソリューションを考え出す人がいます。そのような人々のほとんどは、仕事が必要とするときに、学習する本を読んだり学習したりするのに時間を費やしません。