Модульное программирование для учета будущих изменений (программное обеспечение для очистки веб-сайтов) - PullRequest
1 голос
/ 31 июля 2011

Я разработал программное обеспечение на C # с использованием Windows Forms для очистки выбранных веб-сайтов для изображений.

  1. Первая проблема, с которой я сталкиваюсь, заключается в том, что сайты, которые я отслеживаю, постоянно меняют свой внешний вид и, следовательно, требуют обновления моего кода. Я перешел на использование XPath для изоляции нужных мне div'ов, но они тоже меняются. Я думал об использовании текстового файла с div xpath для каждого сайта, через который программа будет читать, таким образом экономя время на редактирование и перекомпиляцию кода. Есть ли лучший способ решить эту проблему? Может быть, CodeDom?

  2. Во-вторых, поскольку каждый веб-сайт использует различное форматирование и кодировку, мне пришлось переписывать части кода с помощью HtmlDocument, HtmlWebResponse, HtmlNodes и других для каждого из них, что в итоге составило почти половину моего кода. Я не мог собрать их вместе, так как некоторые нуждаются в дополнительной очистке и разбивке на страницы, а некоторые нет. Есть ли способ сделать, чтобы упростить эту проблему?

  3. Наконец, у меня есть весь код в одном файле класса с примерно 600 строками кода. Единственные методы, которые у меня есть, - это фоновые работники, обработчики событий пользовательского интерфейса, метод очистки для каждого сайта и один метод для сохранения изображений. Хорошо ли иметь весь код в одном классе? Когда я писал на Java, я часто использовал несколько классов и называл их объектами, что помогло упростить внесение изменений в определенные разделы. Могу ли я сделать то же самое с C #?

Есть ли более эффективный подход к созданию программного обеспечения? Я думал о создании класса для каждого сайта, чтобы можно было вносить изменения непосредственно в рассматриваемый класс, но это привело бы к повторению множества строк в каждом классе. Или можно хранить все в одном файле класса?

Спасибо.

PS: Это программное обеспечение для личного использования, но я думаю, что это хорошая возможность изучить и применить хорошее программирование.

...