[C#] Поругайте код
От: Любопытный  
Дата: 23.03.11 06:18
Оценка:
Всем привет.

Начал учить шарп, естественно, возникают вопросы, типа, а как правильно делать.
Итак, есть код. Идея простая и, видимо, набившая все оскомину
В приложении две формы: главная и форма логина. Нужно сначала залогиниться и по результатам показать главную форму или закрыть приложение.
Вот код:

namespace Test
{
  public class MyApplicationContext : ApplicationContext
  {
    private LinkedList<Form> forms = new LinkedList<Form>();
    private void FormClosed(Object sender, FormClosedEventArgs e)
    {
      LinkedListNode<Form> current = forms.Find((Form)sender);
      if (current.Value != forms.Last.Value)
      {
        this.MainForm = current.Next.Value;
      }
      this.MainForm.Show();
    }
    public void AddForm(Form form)
    {
      if (forms.Count == 0)
      {
        forms.AddFirst(form);
        this.MainForm = form;
      }
      else
      {
        forms.AddAfter(forms.Last, form);
      }
      form.FormClosed += this.FormClosed;
    }
  }
  static class Program
  {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      MyApplicationContext ctx = new MyApplicationContext();
      ctx.AddForm(new fmLoginForm());
      ctx.AddForm(new fmMainForm());
      Application.Run(ctx);
    }
  }
}


Ну и вопрос: что здесь не так? Нет ли проблем с памятью? Может, есть какие-то Best Practices для таких ситуаций?
Может, надо использовать List вместо LinkedList? Ну, и так далее.
Анализатор кода в VS предлагает создание форм завернуть в using, хотя сама VS генерит примерно такой же код.


24.03.11 11:57: Перенесено модератором из '.NET' — TK
Re: [C#] Поругайте код
От: AlexNek  
Дата: 23.03.11 11:16
Оценка:
Здравствуйте, Любопытный, Вы писали:

Л> Всем привет.


Л> Начал учить шарп, естественно, возникают вопросы, типа, а как правильно делать.

Л> Итак, есть код. Идея простая и, видимо, набившая все оскомину
Л> В приложении две формы: главная и форма логина. Нужно сначала залогиниться и по результатам показать главную форму или закрыть приложение.
Л> Вот код:
Вообще то непонятен сам принцип работы. А если форма логина просто закроется?
И в терминах MVC, где инициализация модели? Ну, для проверки логина нужны какие-то данные. Да и сведения о пользователе должны попасть в программу. А как переключать пользователей во время работы?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[2]: [C#] Поругайте код
От: Любопытный  
Дата: 24.03.11 06:28
Оценка:
Здравствуйте, AlexNek, Вы писали:
AN>Вообще то непонятен сам принцип работы. А если форма логина просто закроется?
AN>И в терминах MVC, где инициализация модели? Ну, для проверки логина нужны какие-то данные. Да и сведения о пользователе должны попасть в программу. А как переключать пользователей во время работы?

Ну, это ж пока набросок. Чтобы уяснить для себя — а можно ли так делать? Насколько это правильно? Понятно, что понятие "правильности" у многих может быть сильно разным.

А откуда будет брать форма логина данные? Ну, например, при старте из файла конфигурации или еще откуда. Ну то есть на данном этапе для меня это не принципиально. Я ж только учусь
Re[2]: [C#] Поругайте код
От: HowardLovekraft  
Дата: 24.03.11 07:03
Оценка: +3
Здравствуйте, AlexNek, Вы писали:

AN>И в терминах MVC, где инициализация модели?

ТС что-то говорил об использовании MVC или его модификаций?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.