рекомендации по записи в файл несколькими способами - PullRequest
0 голосов
/ 19 ноября 2010

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

Я хочу распечатать результаты этих тестов в файл, но я не уверен, что лучший способ это сделать. Например ...

  • Должен ли класс содержать переменную экземпляра для файла, и каждый метод открывает / добавляет / закрывает файл? (Проблема в том, что методы иногда вызывают другие методы, так что это выглядит немного грязно?)
  • Должен ли каждый метод передавать файл в качестве параметра? (Кажется, грязный.)
  • Должен ли каждый метод возвращать строку, а "центральный" метод, который вызывает все остальные тесты, выводит все эти строки в файл?

Я не очень знаком с использованием библиотек логгеров - это будет решением?

Мой конкретный контекст

У меня есть скребок, который извлекает данные с различных сайтов и сохраняет их в базе данных. Веб-сайты постоянно меняются, поэтому я пишу программу «Scrape Checker», которая проверяет мои сообщения на наличие различных вещей, таких как:

  • количество пустых результатов
  • длина результатов
  • странные символы в результатах
  • и т. Д.

Итак, у меня есть такие методы, как:

  • check_num_empty_results
  • check_weird_characters
  • check_scrape (вызывает кучу других чеков)
  • check_scrape_pair (иногда я хочу проверить пары скрепок, например, чтобы сопоставить результаты друг с другом, так что это разные проверки каждой из них в отдельности)
  • и т.д.

Я хочу, чтобы моя программа "Scrape Checker" распечатала файл, в котором перечислены все проверки.

Ответы [ 3 ]

2 голосов
/ 19 ноября 2010

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

1 голос
/ 19 ноября 2010

Похоже, что каркас каротажа будет идеальным решением для этого. Если вы используете Java или .NET, log4j и log4net являются в значительной степени де-факто стандартами для этого.

1 голос
/ 19 ноября 2010

В конечном счете, это зависит от того, какой язык вы используете.

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

Тем не менее, большинство зрелых языков имеют модули, которые сделают большую часть этой работы за вас;вне всяких сомнений, Perl и Python подходят к этой задаче (хотя, если хотите, вы можете использовать Java или что-то еще).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...