Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 19:11   #21
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

У меня есть тетрадка, я в ней пишу все над чем нужно думать. Мне легче думать когда информация перед глазами, а не в уме. Бывают и файлы текстовые рядом с проектом, и тоже плюсиками отмечаю что сделано. Тоже стараюсь тут же записать что нужно сделать, как только подумал об этом, потому что потом забываю. И тоже люблю начинать разработку, если это возможно, с интерфейса, а потом постепенно одну фичу за другой приделываю, так оно как-то наглядно получается, и все действия юзера повторяешь постоянно во время разработки, что облегчает в дальнейшем отладку.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 01.12.2009, 19:25   #22
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Потихоньку, тщательно кажду функцию приложения, сделал, забыл (ну не совсем разумеется, вы ведь писали знаите что и как) и так дальше. В процессе разработки обязательное тестирование (причем лучше жеще программу гонять). Это мой подход слишком много раз уже приходилось переписывать огромные куски кода, теперь это намного реже, в основном из-за "идей" работадателей не хотим ведь сразу обосноватся с ТЗ, а нее, лучше давайте по ходу дела и будем выдумывать.
BOBAH13 вне форума Ответить с цитированием
Старый 03.12.2009, 00:58   #23
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Я придумываю в основном всё на ходу, иногда делаю пометки в тетради, специально выделеной под эти нужды . В последнее время начал комментировать код, ну так как тут выкладывали, тоже выложу
Код:
procedure TFormMessage.CreateMessage(Alarm : TClock; IndexList : TListItem; TestMode : boolean);
var IndexAlarms : integer;
    I : Integer;
    H, M, S, Ms : string;
begin
  if Alarm.FModeMessage = MINI_1 then
  begin
  if not TestMode then
  begin //Эта часть должна быть выше, чем присвоение указателя на текущую форму
    try //так как этот указатель по идее останавливает таймер повтора воспроизведения у предидущей формы
      TFormMessage(Form1.PMsgForm).TimerRepeat.Enabled := False;
    except

    end;
  end;
    Form1.PMsgForm := Pointer(Self);
    CountInterval := 0;
    CountQuantity := 0;
    Self.Tag := 1; //значит тестовый режим, нужно для закрытия этой формы
    ReserveVol := 0;
    Self.Width := 255;
    Self.Height := 222;

    Self.MemoMessage.Color := Alarm.FAppearanceMsg.ColorBackground;
    Self.Color := Alarm.FAppearanceMsg.ColorBackground;
    Self.AlphaBlendValue := Alarm.FAppearanceMsg.AlphaBlendValue;
    Self.MemoMessage.Font.Name := Alarm.FAppearanceMsg.FontText;
    Self.MemoMessage.Font.Color := Alarm.FAppearanceMsg.FontColor;
    Self.MemoMessage.Font.Size := Alarm.FAppearanceMsg.FontSize;

    Self.MemoMessage.Clear;
    Self.MemoMessage.Text := Alarm.FTextMessage;

    if Alarm.FMusicEnabled then //если воспроизведение музыки выбрано, то...
    begin
      Form1.MP.FileName := Alarm.FMusicWay;
      Form1.MP.Open;
      if Alarm.FNeedRepeat then
      begin
        QuantityOfRepeat := Alarm.FQuantityOfRepeat;
        RepeatInterval := Alarm.FRepeatInterval;
        Form1.MP.Play;
        TimerRepeat.Enabled := True;
      end else Form1.MP.Play;
    end;

    if Alarm.FChangeSound then //если изменение громкости выбрано, то...
    begin
      ReserveVol := FormNewClock.GetVolume;
      waveOutSetVolume(WAVE_MAPPER,Alarm.FVolume);
    end;
  end;

if not TestMode then  //если сработал будильник, а не нажали кнопку "Тест"
begin
  Self.Tag := 0; //Значит сработал будильник, нужно для закрытия формы
  if Alarm.FMode = ONE_ALARM then 
  begin
  Form1.TimerAlarms.Enabled := False;
  with Form1.ListViewAlarm do
    begin
      IndexAlarms := Alarms.IndexOf(Alarm);
      Alarms.Delete(IndexAlarms);
      Alarms.Pack;
      Alarms.Capacity := Alarms.Count;
      IndexList.Delete;
    end;
  end;

  if Alarm.FMode = EVERY_DAY then
  begin
    Alarm.FDateAlarm := Date; //дата срабатывания устанавливается на следующий день
    IndexList.SubItems.Clear; //Очищаем строку
    with IndexList do
    begin
      Caption := Alarm.FTextMessage;
      SubItems.Add('завтра ');
      if Alarm.FMin < 10 then M := '0'+IntToStr(Alarm.FMin)
                         else M := IntToStr(Alarm.FMin);
      if Alarm.FSec < 10 then S := '0'+IntToStr(Alarm.FSec)
                         else S := IntToStr(Alarm.FSec);
      
      SubItems.Add(IntToStr(Alarm.Fhour)+':'+M+':'+S);
      SubItems.Add(Alarm.FPeriodAlarm);//добавляется периодичность срабатывания
      Checked := True;
      Alarm.FHandled := False;
      Alarm.ClockEnable;
    end;
  end;

  if Alarm.FMode = EVERY_WEEK then
  begin
    Alarm.FHandled := False; //будильник не был вызван
    Alarm.ClockEnable; //включить будильник (пока не используется по назначению)
    Alarm.FDateAlarm := Date; // если дата сегодняшняя, то этот будильник
//сегодня уже не сработает
  end;

  if Alarm.FMode = EVERY_HOUR then
  begin
    Alarm.FHour:= HourOf(Now);
    Alarm.FHandled := False;
    Alarm.ClockEnable;
  end;

  if Alarm.FMode = EVERY_MONTH then
  begin
    Alarm.FHandled := False;
    Alarm.ClockEnable;
    Alarm.FDateAlarm := Date;
  end;

  if Alarm.FMode = EVERY_YEAR then
  begin
    Alarm.FHandled := False;
    Alarm.ClockEnable;
    Alarm.FDateAlarm := Date;
  end;

  if Alarm.FMode = OTHER then
  begin

  end;
    Form1.TimerAlarms.Enabled := True;
  end;
end;
как то так, иногда и побольше.


Иной раз пишу, думаю сижу, что-то не получается, лягу на кровать смотрю на монитор и обдумываю, как это сделать , бывает уже лягу спать, а компьютер я выключаю утром, когда он меня разбудит мной написанным будильником на работу. И думаю, вдруг посещает меня на мой взгляд гениальная мысль и я подрываюсь к компу и пока не забыл побыстрому начинаю писать код. Когда напишу какую нибудь функцию и не доконца уверен в её надёжности, начинаю тестировать работу программы, придумываю самые разные возможные ситуации и иногда нахожу невидимые на первый взгляд ошибки, как всё приходит в приличный и рабочий вид, продолжаю (как говорил уважаемый mihali4) наращивать "мясо".

Последний раз редактировалось Casper-SC; 03.12.2009 в 01:09.
Casper-SC вне форума Ответить с цитированием
Старый 03.12.2009, 22:35   #24
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Де-факто, только UML.

Всякие комментарии, тетрадки, файлики и прочее, в проектах которые рассчитаны на группу кодеров и длятся месяцами, на практике не помогают, а только усложняют и запутывают процесс разработки.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 03.12.2009, 22:39   #25
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Цитата:
И думаю, вдруг посещает меня на мой взгляд гениальная мысль и я подрываюсь к компу и пока не забыл побыстрому начинаю писать код.
Раньше почти всегда так и было, но теперь я понял, что это неправильно и начал исправляться
Цитата:
Де-факто, только UML.
+1024
///-
Позволю себе пару замечаний к коду:
Код:
ReserveVol := 0;
    Self.Width := 255;
Почему эти магические числа не в константах?
Код:
 Form1
What?
Код:
if Alarm.FMode = EVERY_HOUR then
  begin
А как же множественный выбор?

Код:
 Self.MemoMessage.Color := Alarm.FAppearanceMsg.ColorBackground;
    Self.Color := Alarm.FAppearanceMsg.ColorBackground;
    Self.AlphaBlendValue := Alarm.FAppearanceMsg.AlphaBlendValue;
    Self.MemoMessage.Font.Name := Alarm.FAppearanceMsg.FontText;
    Self.MemoMessage.Font.Color := Alarm.FAppearanceMsg.FontColor;
    Self.MemoMessage.Font.Size := Alarm.FAppearanceMsg.FontSize;

    Self.MemoMessage.Clear;
    Self.MemoMessage.Text := Alarm.FTextMessage;
Это я бы вынес в отдельную процедуру, да и вообще вся процедура ооочень длинная.
Код:
 if Alarm.FMin < 10 then
Тоже можно вынести отдельно.

Последний раз редактировалось Levsha100; 03.12.2009 в 22:51.
Levsha100 вне форума Ответить с цитированием
Старый 03.12.2009, 23:47   #26
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Цитата:
Де-факто, только UML.
Сразу видно кто здесь кто. Снимаю шляпу перед alexinspir. Он снова рулит

Цитата:
Код:

Form1

What?
Точнее: What it`s fucking object name? >:-(
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.

Последний раз редактировалось SunKnight; 03.12.2009 в 23:57.
SunKnight вне форума Ответить с цитированием
Старый 04.12.2009, 17:39   #27
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
А как же множественный выбор?
мне просто было лень мутить это case не удобно
Casper-SC вне форума Ответить с цитированием
Старый 04.12.2009, 18:18   #28
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Цитата:
мне просто было лень мутить это case не удобно
Ибо нужно было распихать внутренние блоки в функции
Levsha100 вне форума Ответить с цитированием
Старый 05.12.2009, 14:06   #29
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Чё за UML? Ну прочитал я в википедии чуток. Это программа в которой моделируешь приложение или о чём вообще речь?
Casper-SC вне форума Ответить с цитированием
Старый 05.12.2009, 20:51   #30
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Цитата:
Сообщение от Casper-SC Посмотреть сообщение
Чё за UML? Ну прочитал я в википедии чуток. Это программа в которой моделируешь приложение или о чём вообще речь?
Это не программа...Это графический язык моделирования.
С помощью него можно легко представлять все классы программы на одной странице.как-то так...

Посоветуйте пожалуйста генератор UML для Visual C++...
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BinToHex из Classes. Как юзать и скормить ей большой String Alex Cones Общие вопросы Delphi 5 05.11.2009 17:18
как ускорить работу с большой dbf базой? avfly БД в Delphi 22 13.10.2009 21:37
Как "протянуть" формулу без мыши, если столбец очень большой? zazuza Microsoft Office Excel 7 25.09.2008 10:19
FoxPro. Как записать в поле Memo большой текст? zag БД в Delphi 5 30.05.2008 06:10