TL; DR
Лучше поместить ваш код в свои собственные классы, а не непосредственно в консольное приложение, если это не тривиально.
Насколько это практично, наш код не должен знать, выполняется ли он в консольном приложении, веб-приложении и т. Д.
Итак, хотя нет какого-то правила, вот предложение о том, куда поместить ваш код:
- Лучший - создать отдельную библиотеку классов и поместить туда свой класс.
- Второй лучший вариант - создать приложение для модульного тестирования и поместить туда свой класс. Вы можете переместить его позже.
- Третий лучший - создать отдельный класс в вашем консольном приложении. Вы можете переместить его позже.
- Дальний четвертый, не идеальный: поместите его прямо в
Program
класс.
Причина, по которой помещение ее в отдельную библиотеку классов помогает, заключается в том, что она поможет вам избежать случайной записи в вывод консоли (Console.WriteLine
) в вашем классе, поскольку ваш класс не знает, выполняется ли он в консольном приложении. или где-то еще.
Независимо от того, где вы размещаете классы, отдельные классы лучше, потому что это побуждает вас разбивать даже небольшие функциональные возможности на отдельные блоки. Я не говорю, что мы должны быть жесткими по этому поводу, но это облегчает жизнь.
Например, вы можете создать один класс, который выполняет только часть ReadFiles
, а другой - для части PushToDb
. Если вы создадите такой класс:
public class FileReader
{
public string[] ReadFile(string filePath)
{
// read some files and populate some data
}
}
Тогда гораздо проще протестировать только эту его часть. Когда мы напишем все это, мы сделаем крошечные ошибки как в части, которая читает данные, так и в части, которая сохраняет их в базу данных. Вместо того, чтобы пытаться работать с обоими одновременно, это позволяет нам работать только над одной частью за раз и проверять ее перед переходом к следующей части.
Причина, по которой я упоминаю проект модульного тестирования, заключается в том, что также проще тестировать отдельные фрагменты кода в проекте модульного тестирования, чем в консольном приложении. Если вы хотите протестировать фрагмент кода в консольном приложении, вы должны отредактировать его для запуска этой части, затем снова отредактировать для запуска этой части и т. Д.
Но если вы пишете модульные тесты, вы можете запустить один тест, запустить другой тест, снова запустить первый тест или запустить все тесты вместе. В отличие от консольного приложения, вам не нужно постоянно изменять код, чтобы сообщить ему, какую часть запустить.
И, хотя я не включил в этот ответ никакого реального объяснения модульных тестов, это действительно отличная привычка. Мне бы хотелось знать о них годами, когда я постоянно писал консольные приложения для тестирования своего кода. Модульные тесты - это отличная привычка, которую некоторые разработчики, как я, учат поздно, а некоторые никогда не учатся. Если вы привыкнете рано, это сделает ваше будущее программирование намного веселее и проще.