#java #android #c_sharp #архитектура #шаблоны
Как правильно раскидывать классы на папки и namespace в VS и package в Java? То
есть, другими словами, рекомендации по организации структуры проекта.
Какие вообще есть стандартные папки (Часто встречал core, utils, support, additionals,
etc...)
И есть ли какие стандартные правила/рекомендации для разбиения.
Если нет, то хотя бы общее описание этих папок/пакетов.
Вопрос и для Java, и Java под android, и C#, если между ними в этом есть различия.
Ответы
Ответ 1
В C#, как правило, структура папок повторяет namespace классов, которые содержаться
в этих папках. Solutions (.sln) содержат обыкновенно src папку с кодом.
Пример сложного проекта можно посмотреть в исходниках CoreFx. Для проектов поменьше,
обычно делают только один solution.
Ответ 2
.NET
VisualStudio по-умолчанию предлагает следующий вариант:
Solution состоит из одного или более проектов
Корневой namespase проекта совпадает с именем проекта, это поведение можно изменить
в свойствах проекта.
Если в проекте есть вложенные папки, то в новых файлах классов к корневому namespase
добавляются вложенные, с именами совпадающими с именами папок.
Никаких ограничений на расположение и количество классов в файлах нет, за исключением
одного - если класс содержит метод Main, то этот класс должен быть первым в файле чтобы
его можно было запустить, во всяком случае студия на этом настаивает, обходить это
ограничение не пробовал, не знаю.
Стандартные папки проекта можно посмотреть создав проект в студии и изучив содержимое
папки проекта, большинство из них служебные и не будут отображаться в обозревателе решений.
Поведение студии по-умолчанию является всего лишь предлагаемым вариантом, следовать
которому не обязательно. Все на усмотрение команды разработки и стандартов кода в компании.
Java
Из моего, довольно поверхностного, знакомства с java удалось выяснить следующее:
Имя файла и класса в нем обязаны совпадать
Один файл - один класс, за исключением вложенных классов разумеется (возможно что
это не обязательно, не пробовал)
Package (пакет) - фактически является папкой, т.е. структура папок и задает структуру
пакетов
По поводу Java могу местами ошибаться, т.к. повторюсь, не слишком много с ней работал,
и не в курсе последних изменений.
У Java, насколько я понимаю, как таковых стандартных папок нет, хотя, можно проделать
такой же трюк как с VS в используемой вами IDE для Java.
Если вы имели ввиду стандартные названия для папок с исходным кодом, то это определяется
командой разработки и/или стандартами кода компании.