2014-08-28 5 views
0

Я недавно был мастерить вокруг с C# и столкнулся с проблемой:член частного класса по сравнению с методом с возвращаемым типом

У меня есть четыре класса:

  • программа: с основным методом.
  • Игра: место, где все происходит.
  • Сущность: основной класс сущностей.
  • игрока: полученный из объекта

(Оба Entity и игрока находятся в классе Game)

Теперь мой вопрос, что лучше:

  1. Чтобы сделать частный объект игрока в моем классе игры и доступ к указанному объекту с помощью некоторых общедоступных методов или ...

  2. Чтобы сделать некоторые общедоступные методы и вернуть новый объект Player из тех, которые будут доступны во всем классе?

Это может быть плохо объяснено, так вот пример:

К 1:

namespace Test 
{ 
    class Game 
    { 
     public Game() 
     { 
      createChar(); 
     } 
     private Player player; 

     public class Entity 
     { 
      public string type; 
     } 
     public class Player : Entity 
     { 
      public string name; 
     } 

     private void createChar() 
     { 
      player = new Player(); 

      Console.WriteLine("What type of being is your character?"); 
      player.type = Console.ReadLine(); 
      Console.WriteLine("Name your character."); 
      player.name = Console.ReadLine(); 
      Console.WriteLine(); 
     } 

     public void run() 
     { 
      Console.WriteLine("Your character's name is:"); 
      Console.WriteLine(player.name); 
     } 
    } 

    class Program 
    { 
     public static void Main(string[] args) 
     { 
      Game game = new Game(); 
      game.run(); 
     } 
    } 
} 

К 2:

namespace Test 
{ 
    class Game 
    { 
     public class Entity 
     { 
      public string type; 
     } 
     public class Player : Entity 
     { 
      public string name; 
     } 

     public Player createChar() 
     { 
      Player player = new Player(); 

      Console.WriteLine("What type of being is your character?"); 
      player.type = Console.ReadLine(); 
      Console.WriteLine("Name your character."); 
      player.name = Console.ReadLine(); 
      Console.WriteLine(); 

      return player; 
     } 

     public void run(Player player) 
     { 
      Console.WriteLine("Your character's name is:"); 
      Console.WriteLine(player.name); 
     } 
    } 

    class Program 
    { 
     public static void Main(string[] args) 
     { 
      Game game = new Game(); 
      Game.Player player = game.createChar(); 
      game.run(player); 
     } 
    } 
} 

Этот вопрос не должен быть открытые, и я приношу свои извинения, если это похоже, но чтобы мой вопрос был более конкретным, вот список всех вопросов, которые я рассматриваю в g этот код:

  1. Какая программа лучше 1. или 2.?
  2. Какая программа более масштабируема?
  3. Есть ли еще лучший способ написать программу?
  4. У меня отсутствуют какие-либо вопросы, которые, вероятно, следует задать?

Кроме того, пожалуйста, игнорируйте пустоту классов Entity и Player.

+3

Пойдите с 2 - сделайте 'класс Game' в статический класс и извлеките из него' Player' (зачем их вставлять?) – Carsten

+1

Взгляните на [Рекомендации по вложенным классам в компонентах] (http: // msdn. Microsoft.ком/EN-US/библиотека/s9f3ty7f (v = vs.71) .aspx). –

+0

Этот вопрос не соответствует теме, потому что речь идет о просмотре кода. – BradleyDotNET

ответ

0

Вариант второй звучит лучше, потому что в классе Game требуется меньше кода (вам не нужны методы для каждой части данных, которые вы хотите, чтобы пользовательские классы игры имели доступ к игроку), и она более гибкая (изменения для класса Player не нужно иметь методы, измененные в классе Game).

Единственная причина, по которой я могу видеть вариант 1, заключается в том, что если у вас есть другой класс, который напрямую обращается к данным о объекте Player (так что без прохождения класса Game), и эти данные действительно не должны быть доступны классы, которые используют класс Game для доступа к данным Игрока, поэтому оправдывают использование методов в игре, которые позволяют игровым классам Game получать доступ к определенным данным от Игрока.

Смежные вопросы