オープン クローズドの原則に従って、新しい関数やコンテンツを追加するときにクラス、インターフェイス、コードなどを変更する必要があることはわかっていますが、この場合もファイルですか?
私はゲームを設計していました。ゲームにはいくつかのモンスター情報があり、追加または更新する新しいモンスターがある場合、ゲーム (クライアント側) は一部のファイルをダウンロードまたは置換する場合があります。
モンスター情報のフォーマットをどうするか悩んでいたのですが、モンスター情報を1ファイルにするか、モンスターごとに個別ファイルにするか。
1. すべてのモンスター情報を 1 つのファイル (例:monsterlist.json) に保存します。新しいモンスターを追加するたびに、ファイルが置き換えられます。
{
"monsterList":[
{
"id":1,
"hp":100,
"attack":230,
},
{
"id":2
"hp":500
"attack":980
}
]
}
2.各モンスターには個別のファイルがあり、新しいモンスターを追加するたびに、新しいモンスターjsonも追加されます。
モンスター1.json
{
"id":1,
"hp":100,
"attack":230,
}
モンスター2.json
{
"id":2,
"hp":500,
"attack":980,
}
最初は、モンスターを追加または更新するときにmonsterlist.jsonを置き換えるだけでよいため、ケース1が最も便利だと思いますが、ケース2の場合、どのjsonが新しいかを知る必要があります(更新ステータスを保存するために追加の行が必要になる場合があります)サーバー データベース内)。
しかし突然、オープン クローズの原則を思い出しました。何か新しいものを追加しても現在のコンテンツは変更されるべきではありません。新しいモンスターが追加されたときにファイルを置き換えるのは合理的ではないようです。
上記は、「ファイル」がオープンクローズの原則に含まれていると私が考える理由の単なる例であり、どちらの形式が優れているかを尋ねるものではありません。私が聞きたいのは、どのファイル形式が優れているかではなく、オープンクローズド原則の定義です。「ファイル」に言及している定義が見つからないため、確認されれば、どのファイル形式を使用するかを推測できます。