Джанго: как оценить проект для рефакторинга - PullRequest
8 голосов
/ 28 июля 2010

Кто-нибудь из вас делал оценку проекта django и как улучшить / реорганизовать его кодовую базу? Любимый проект в компании, в которой я работаю, становится все более широко используемым, и было бы неплохо улучшить его качество до дальнейшего развития. Существуют ли какие-либо методы или методологии анализа django проектов, прежде чем мы начнем вкладывать в них все новые и новые функции? Нам не хотелось бы внезапно осознавать, что из-за плохого выбора мы вынуждены жить с чем-то действительно плохим.

Ответы [ 2 ]

8 голосов
/ 28 июля 2010

То, что я заметил после работы более года на довольно большом сайте, касалось в основном нашего дизайна / кодирования. Это не связано просто с рефакторингом, и, возможно, вы уже много знаете, но, возможно, это поможет:).

  1. Самое главное, мы не всегда помещали наш код в нужное место. В методах представления было слишком много функциональности, слишком мало в формах и моделях. Я вижу эту проблему много раз. Для обработки ввода используйте формы, чтобы отформатировать / настроить / ... данные модели, использовать методы или свойства модели. Серьезно, в какой-то момент я сократил просмотр примерно с 150 строк до 20, просто поместив код в лучшие места. Очень хорошо улучшает ремонтопригодность и читаемость
  2. Во многих кодах, которые мы написали, на самом деле не использовались все силы python и / или django. Во-первых, чтение чего-то вроде Dive Into Python было очень полезно, во-вторых, я просто отследил все сложные конструкции, которые мы построили (в основном унаследованный код из 0.96), и посмотрел, есть ли альтернативы в Django Docs. Конечно, не тратьте свое время, пытаясь свести все к одной строке, но, безусловно, с устаревшим кодом это может помочь улучшить читаемость и удобство обслуживания.
  3. Всегда смотрите на такие сайты, как django-snippets , google code , ... если есть достойные существующие проекты django, которые могут лишить вас многих функций. Зачастую на эти проекты смотрят больше людей, и поэтому они более стабильны и эффективны. Если проект не удовлетворяет всем вашим требованиям, то может быть хорошей идеей просто добавить свои требования самостоятельно, а не делать все индивидуально для вашего сайта.
  4. Постарайтесь сохранить минимальные перекрестные зависимости приложения. Когда вы рисуете граф зависимостей (например, связывая каждое приложение, имеющее внешние ключи друг с другом), оно все равно должно быть ясным, а не то, где каждое приложение связано с каким-либо другим приложением. Обычно у вас есть несколько «вспомогательных» приложений (например, пользовательская система, тегирование), которые используются многими, и все остальные приложения на самом деле зависят только от этих приложений.
  5. Пишите тесты, у django отличный набор тестов, так что используйте его. Конечно, для частей кода, которые являются общими для многих приложений и могут измениться. На самом деле, ничто так не раздражает, как внезапное замечание ошибки, которую вы фактически исправили 4 месяца назад, и у вас нет ни малейшего понятия, какое обновление с тех пор сломало его снова.
  6. Еще раз взглянем на нормализацию базы данных, модель django по-прежнему тесно связана с реляционными базами данных, и поэтому это важная концепция, конечно, когда вы работаете с моделями, которые, вероятно, будут расширены позже.

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

3 голосов
/ 28 июля 2010

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

На самом деле это очень широкий вопрос. Помните, что:

Преждевременная оптимизация - корень всех зло - Дональд Кнут

Лично я считаю, что это также справедливо для (преждевременного) рефакторинга.

РЕДАКТИРОВАТЬ: это также хороший ресурс о запахах кода: http://www.codinghorror.com/blog/2006/05/code-smells.html

...