Модераторы: THandle, bems
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Покритикуйте класс и код 
:(
    Опции темы
VladBD
Дата 3.4.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: нет
Всего: 5



RAD 2010, прога - помощник для игры Сапер
писал для того чтоб разобраться с некоторыми моментами.
просьба оценить класс и высказать критику

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  source.zip 8,95 Kb
PM MAIL   Вверх
RomanEEP
Дата 15.4.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 1
Всего: 8



Отлично написано!
PM MAIL   Вверх
cemick
Дата 21.4.2010, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Если хотите что бы по придерались, то выскажу свою субъективное ИМХО на основе внешнего вида кода, не вдаваясь в логику
и работу программы:

1. Все поля я бы обозначал префиксом F, это касается и
Код

    cEMPTY_RECT : TRect;
    aOffsetRange : array[0..7] of TPoint;

2.  Почему это 
Код

caBorder   = 99;
    caInit     = 9;
    caEmpty    = 0;
    caMine     = 10;
    caFlag     = 11;
    caQuestion = 12;
    caDigit1 = 1;
    caDigit2 = 2;
    caDigit3 = 3;
    caDigit4 = 4;
    caDigit5 = 5;
    caDigit6 = 6;
    caDigit7 = 7;
    caDigit8 = 8;

было не объявить перечислением?
3. Параметры методов принято начинать с префикса "A"
4.  Всегда операции (:= = + * < и т.д) обрамлять пробелами
5.  Вот это 
Код

      if (X1<X) and (X<X2) and (Y1<Y) and (Y<Y2) then FMap[Y, X] := caInit 
      else FMap[Y, X] := caBorder;

выглядело лучше хотя бы вот так
Код

      if (X1<X) and (X<X2) and (Y1<Y) and (Y<Y2) then 
        FMap[Y, X] := caInit
      else 
        FMap[Y, X] := caBorder;

6. Забавное название метода procedure THelper.FMapInit;
7. Подобного рода конструкции 
Код

clBlue   : begin FMap[Y, X] := caDigit1; changeCell := True; Break; end;
 
ужасны, лучше вот 
Код

clBlue   : 
  begin 
    FMap[Y, X] := caDigit1; 
    changeCell := True; 
    Break; 
  end;
 
И что тут делает Break?
8.
Код

 if not(changeCell) and (Pos('990000000000', S)>0) then begin FMap[Y, X] := caInit; changeCell := True; end;
      if not(changeCell) and (Pos('033003300330', S)>0) then begin FMap[Y, X] := caDigit3; changeCell := True; end;
      if not(changeCell) and (Pos('077000077770', S)>0) then begin FMap[Y, X] := caDigit7; changeCell := True; end;
      if not(changeCell) and (Pos('088008800880', S)>0) then begin FMap[Y, X] := caDigit8; changeCell := True; end;
      if not(changeCell) and (Pos('777777777777', S)>0) then begin FMap[Y, X] := caMine; changeCell := True; end;
      if not(changeCell) and (Pos('033333777770', S)>0) then begin FMap[Y, X] := caFlag; changeCell := True; end;
      if not(changeCell) and (Pos('070007770770', S)>0) then begin FMap[Y, X] := caQuestion; changeCell := True; end;


тоже самое что и предыдущий плюс добавить else (т.е. если выполниться первое условие, то зачем проверять следующие?)
И вместо Pos я бы использовал AnsiContainsText.
9. В названиях подобных функци isInitAnyCells лучше не использовать вопрос
10. Незабываем про сообщения компилятора, и подчищать код (проект не собирал наверняка их не мало):
Код

procedure THelper.Run;
var
  aStep, screenStep : TPoint;
begin
  Prepare;
  while (Mode=hmRun) do
  begin
    // считываем карту
    Prepare;
    //
    if not(SetCells) then Exit;


  end;
end;

11. Если уж показываем код людям то больше комментариев
12. Не понятно зачем тут S
Код

function THelper.MapToString : String;
var
  I, J : Integer;
  S : String;
begin
  S := '';
  // инициализация
  for J := 0 to High(FMap) do
  begin
    for I := 0 to High(FMap[0]) do
      S := S + IntToStr(FMap[J, I])+'|';
    S := S+#13#10;
  end;
  Result := S;
end;

13. Есть такая функция Format

ps Большинство придирок наверно мелочны и получены простым пробеганием взгляда по коду

Это сообщение отредактировал(а) cemick - 21.4.2010, 14:17
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle

Добро пожаловать в форум группы "Delphi".

В разделе разрешается:

  • Флудить (в приемлемых величинах)
  • Обсуждать модерирование данного раздела (но не его модератора)
  • Добавлять свои правила если они не противоречат существующим
  • Делать наезды на пешеходов***

Строго запрещено:

  • Размещать рекламу
  • Совершать оскорбления личностей
  • Материться
  • *** Пешеходами не являются (ко)модераторы, админы, участники клуба.

Если Вам понравилась атмосфера форума, заходите к нам чаще! Люблю, целую, вечно Ваш, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Форум группы: delphi | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.