У меня большой беспорядок в коде. По общему признанию, я написал это сам - год назад. Это не очень хорошо прокомментировано, но это не очень сложно, так что я могу понять это - просто не достаточно хорошо, чтобы знать, с чего начать, чтобы провести рефакторинг.
Я нарушил все правила, о которых читал за последний год. Есть классы с множественными обязанностями, есть косвенный доступ (я забыл термин - что-то вроде foo.bar.doSomething()
), и, как я сказал, это не очень хорошо прокомментировано. Кроме того, это начало игры, так что графика связана с данными, или места, где я пытался отделить графику и данные, я сделал данные public
, чтобы графика могла иметь доступ необходимые данные ...
Это огромный беспорядок! С чего мне начать? Как бы вы начали что-то вроде этого?
Мой нынешний подход заключается в том, чтобы взять переменные и переключить их на приватные, а затем реорганизовать фрагменты, которые разбиваются, но этого, по-видимому, недостаточно. Пожалуйста, предложите другие способы пробраться через этот беспорядок и превратить его во что-то чистое, чтобы я мог продолжить с того места, на котором остановился!
Обновление через два дня: Я рисовал UML-подобные диаграммы своих классов и по пути ловил некоторые из "Низко висящих фруктов". Я даже нашел несколько фрагментов кода, которые послужили началом новых функций, но, пытаясь все уменьшить, я смог удалить эти фрагменты и сделать проект более понятным. Я, вероятно, собираюсь провести рефакторинг как можно больше, прежде чем собирать тестовые наборы (но только те вещи, которые на 100% уверены, что они не повлияют на функциональность, конечно!), Так что мне не придется рефакторинг тестовых наборов, так как изменить функциональность. (Как вы думаете, я делаю это правильно или, по вашему мнению, мне было бы легче смириться с этим и сначала написать тесты?)
Пожалуйста, проголосуйте за лучший ответ, чтобы я мог отметить его справедливо! Не стесняйтесь добавлять свой собственный ответ и к группе, для вас еще есть место! Я дам ему еще один день или около того, а затем, вероятно, отмечу ответ с наибольшим количеством голосов как принятый.
Спасибо всем, кто ответил до сих пор!
25 июня 2010 г .: я обнаружил пост в блоге , который прямо отвечает на этот вопрос от человека, который, кажется, довольно хорошо разбирается в программировании: (или, возможно, нет, если вы читаете его статью :))
Для этого я делаю четыре вещи, когда
необходимо изменить код:
- Определите, для чего предназначался код
- Нарисуйте UML и диаграммы действий участвующих классов
- Найдите подходящий дизайн
- Определение более четких имен для текущих классов и методов