web-dev-qa-db-ja.com

ベース/フォークアプリケーションからのシームレスなアップグレードを可能にする方法は?

ベース/スケルトンのユーザーベースのWebアプリを作成しました。サインアップ、ログイン、ログアウト、パスワードの忘れ、メールアドレスの確認などが必要です。ベースアプリの上に開発することで、ユーザーベースのアプリを簡単に構築できるようになりました。たとえば、ソーシャルネットワークやメッセージボードを構築できます。

しかし、ベースアプリをアップグレードする場合、「子」アプリはどのようにアップグレードする必要がありますか?

ベースアプリはフレームワークを使用しません。しかし、それはほんの一部の関数、クラス、ライブラリです。したがって、アップグレードを容易にするための可能な方法として、関数を簡単に編集したり、クラスを拡張したりすることができます。

Gitでフォークすると、アップストリームアプリを同期できることを読みました。しかし、それだけで実行可能な解決策ですか?

これを可能にするために、プラグインシステムまたはフレームワークを考え出す必要がありますか?

それをより基本的に保ち、関数とクラスメソッドを編集するだけでそれを行うことはできますか?

2
Ryan

そのための魔法のツールはないと思います。

フォークを元のアップストリームと同期させる(例: BitBucket または GitHub ))は、共通の共有ベースファイルを同期するために設計されており、変更されたソースをインテリジェントに更新するためではありません。このアプローチには 多くの制限 があり、フォークされたコードの大きな変更に対処することはできません。

したがって、これを実現するための良い方法は、拡張性のためにコードを設計することであり、その結果、簡単に拡張できるクラスを設計するために、可能な限りオープン/クローズの原則を使用します。その場合のルールは、元のコードを決して変更しないことです。それは「スケルトン」の可能性というよりも「基本」の哲学です。もう1つのポイントは、堅牢なAPIを定義することです。

このようにして、コードの元の(変更されていない)バージョンを常に同期し、顧客の変更を他のファイルに入れ、必要に応じて元のクラスをオーバーライドし、予期しない基本的な変更を保持したままにすることができます。

1
Christophe