Kruczki odnośnie formatowania kodu

Kruczki odnośnie formatowania kodu
Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10286
0

Jakbyście sformatowali ten kod? Podobie jak ja? Wydaje mi się nieczytelny ale nie mam innego pomysłu. Może zapisać najpierw wynik do DialogResult?

Kopiuj
        private void askBeforeAdding(TrackMove move)
        {
            if (moveSequence[moveSequence.Count - 1].compare(move))
            {
                switch (MessageBox.Show(
                            "This frame is exactly as the one before, are you sure you want to add it?",
                            "Two exact frames",
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Question))
                {
                    case System.Windows.Forms.DialogResult.No:
                        return;
                }
            }
            moveSequence.Add(move);
        }
Endrju
  • Rejestracja: dni
  • Ostatnio: dni
0

Koniecznie zapisz ten wynik do czegoś, czego nie można zmieniać, ale ma swoją nazwę. Czyli w zasadzie tak jak wspomniałeś.

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
private void askBeforeAdding(TrackMove move){
    if(moveSequence[moveSequence.Count - 1].compare(move)){
        var DialogResult = MessageBox.Show(
            "This frame is exactly as the one before, are you sure you want to add it?",
            "Two exact frames",
            MessageBoxButtons.YesNo,
            MessageBoxIcon.Question)
        );
        if(DialogResult == System.Windows.Forms.DialogResult.No) return;
        moveSequence.Add(move);
    }
}

lub ewentualne odwrócenie warunku

Kopiuj
private void askBeforeAdding(TrackMove move){
    if(!moveSequence[moveSequence.Count - 1].compare(move)) return;
    var DialogResult = MessageBox.Show(
        "This frame is exactly as the one before, are you sure you want to add it?",
        "Two exact frames",
        MessageBoxButtons.YesNo,
        MessageBoxIcon.Question)
    );
    if(DialogResult == System.Windows.Forms.DialogResult.No) return;
    moveSequence.Add(move);
}
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12296
0

Po pierwsze wpakowałbym te literały do stałych, a po drugie wypierniczył ten switch; Kolejna rzecz to połączenie warunków (gdzie w drugim wykonywany jest MessageBox i sprawdzane jest czy zwrócił Yes) i wykonanie ostatniej linijki kodu tylko wtedy, gdy oba warunki będą spełnione;

Nie piszę w C#, więc nie będę kombinował z tym kodem, jednak moja modyfikacja pozwalałaby zamienić to (dla FPC):

Kopiuj
procedure AskBeforeAdding(AMove: TTrackMove);
begin
  if MoveSequence[MoveSequence.Count - 1].Compare(AMove) then
  begin
    case MessageBox('This frame is exactly as the one before, are you sure you want to add it?',
                    'Two exact frames', MB_ICONQUESTION or MB_YESNO) of
      IDNO: Exit();
    end
  end;

  MoveSequence.Add(AMove);
end;

na to:

Kopiuj
procedure AskBeforeAdding(AMove: TTrackMove);
const
  BOX_TEXT  = 'This frame is exactly as the one before, are you sure you want to add it?';
  BOX_TITLE = 'Two exact frames';
begin
  if (MoveSequence[MoveSequence.Count - 1].Compare(AMove)) and
     (MessageBox(BOX_TEXT, BOX_TITLE, MB_ICONQUESTION or MB_YESNO) = IDNO) then
    Exit();

  MoveSequence.Add(AMove);
end;
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
  1. Jedna linijka = jedna kropka;
  2. switch dla wielu możliwych warunków, nie dla jednego;
  3. unikaj return w środku metody;

A najlepiej to użyć kolekcji, która nie pozwala na wielokrotne dodawanie takiego samego obiektu.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10286
0

Ok, może wyjaśnię. Mam tą listę

Kopiuj
List<TrackMove> moveSequence;

Mają w niej być rzeczy (czasem mogą być te same kilka razy). I teraz chcę zrobić tak żeby dało się dodać kilka tych samych obiektów pod rząd, ale żeby program zapytał czy na pewno użytkownik chce to zrobić, tj
a) Jeżeli dodawany obiekt jest taki sam jak poprzedni:
a1) Zapytaj czy na pewno dodać?
Tak: dodaj
Nie: nie dodawaj
b) Dodaj bez pytania.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.