Эволюция или Оборот для фиксации плохо написанного кода

Подпись для события щелчка имеет объект «отправитель». Вы можете использовать это для справки. Приведите его к соответствующему типу, и вы сможете напрямую получить доступ ко всем его открытым свойствам.

Вы должны быть в состоянии сделать что-то вроде:

protected void pictureClick(Object sender, EventArgs e) {
    PictureBox pic = sender as PictureBox;

    if (pic != null) {
        // set the image based on which players turn it is.
    } 
}

, и теперь у каждого графического блока будет событие onClick, установленное на эту одну функцию pictureClick.

--- Редактировать ---

Я также добавил бы, что использование независимых элементов управления пользовательским интерфейсом крайне неэффективно для больших игр с тайлами. Для сетки 3x3 крестики-нолики это, вероятно, хорошо, но для чего-то вроде шахматной доски 8x8 время обновления для всех 64 квадратов будет заметным, потому что каждый компонент пользовательского интерфейса на странице имеет свой метод Paint (), вызываемый, когда окно обновляется. Я говорю из опыта здесь. Однажды я пытался использовать такой подход, чтобы иметь сетку из 10 × 10 компонентов Panel с пользовательскими методами рисования, основанными на данных состояния игры, и каждый раз, когда окно изменялось, игра зависала на несколько секунд, пока все обновлялось.

6
задан MighMoS 17 February 2009 в 20:13
поделиться

9 ответов

Осуществите рефакторинг старый код (эволюция). Перезапись кода всегда представляет проблемы, о которых Вы не думали. Я уверен, что были обновления существующего кода, и много тех обновлений является улучшениями исправлений ошибок и т.д. Вы не можете знать, почему Вы внесли изменение в то время, но Вы должны были, и перезапись кода могла удалить то необходимое изменение.

Делание небольших шагов также помогает Вам избежать, "О, 'восполняющего'" сценария, где Вы пытаетесь внести некоторое значительное изменение и встретиться с ситуацией, где это не ведет себя они способ, к которому Вы ожидаете это. С эволюцией можно отступить изменение и все еще иметь рабочую систему, так как архитектура несколько завершена.

4
ответ дан 16 December 2019 в 21:46
поделиться

Как Вы исправляете большой, дрянной проект? Ну, как Вы вычищаете Авгиевы конюшни...

Стабильно убирающие методы:

  1. Если Вы - Hercules, Вы делаете все это сразу в большом показном, er, роскошном пути.
  2. Если Вы не Hercules, Вы захватываете лопату и медленно начинаете улучшать вещи один угол за один раз.

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

2
ответ дан 16 December 2019 в 21:46
поделиться

Зависит от Вашей ситуации - если у Вас есть время, чтобы переписать... и менее очевидно ПЕРЕПРОТЕСТИРОВАТЬ все.... сдувают его и запускаются новый. Но будьте честны с собой о том, на что то время собирается быть похожим.

Эволюция работает намного лучше обычно - потому что время является деньгами, и запускающийся с нуля может представить огромные инвестиции....

Другой бит, который много людей не получает - эволюция, может на самом деле работать Очень хорошо - это просто берет более мысль... необходимо выяснить, где, как построить существующие вещи из модулей - но обычно это очень возможно - только дополнительное время в электронной доске.

1
ответ дан 16 December 2019 в 21:46
поделиться

Разработайте, как Вы действительно хотели бы сделать это. Сделайте схему, что Вы ставите стену, пытаетесь думать обо всех подробностях.

При внесении изменений попытайтесь узнать, как каждое изменение может приблизить Вас в конец цель. Если у Вас есть эта цель в Вашем уме при внесении изменений, можно и кодировать и протестировать материал, который согласовывается с тем, где Вы хотите пойти. Часто я нахожу, что могу представить некоторые менее радикальные (но необходимый) изменения и все еще нажиться на преимуществах.

Таким образом, я защищаю эволюционный, но с ясной перспективой того, где Вы (думаете), что хотите пойти. Вы собираетесь закончить где-то в другом месте так или иначе.

1
ответ дан 16 December 2019 в 21:46
поделиться

Обычно, я использую эволюцию, но на больших шагах, так и то и другое.

0
ответ дан 16 December 2019 в 21:46
поделиться

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

Так как Вы не описываете свою платформу, я не знаю, какое программное обеспечение доступно для рефакторинга поддержки. Существует много для Java, например, но чините мало для C++.

Почти ничего не зная о Вас и Вашем проекте, я предложил бы осуществить рефакторинг более эволюционным способом и сделать его справедливо быстро, прежде чем Вы станете чувствующими отвращение к старому коду или напишете слишком много нового кода, который полагается на плохие старые вещи. Можно найти код, это слишком ужасно для проживания и нуждается в переписывании; в этом случае, разрешение.

0
ответ дан 16 December 2019 в 21:46
поделиться

Проблема с оборотом, что будет требоваться много времени, во время которого никакое значение не производится конечным пользователям. С возрастающими изменениями (эволюция) возможно улучшить систему и поддерживать его в рабочем состоянии в любом случае.

Мысли дяди Bob о вопросе: http://blog.objectmentor.com/articles/2009/01/09/the-big-redesign-in-the-sky

0
ответ дан 16 December 2019 в 21:46
поделиться

В (перефразируемых) словах Fred Brooks, "Планируют выбросить первый". Если Вы не запланировали сделать так, Вы в конечном счете выбросите его так или иначе. Единственный вопрос, после сколько работы?

0
ответ дан 16 December 2019 в 21:46
поделиться

Я думаю, что это зависит от нескольких факторов:

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

Во всех случаях знайте, куда Вы направляетесь перед запуском!

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

0
ответ дан 16 December 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: