Организация размещения JAVA-файлов с классами

Ответить
Манул
Сообщения: 3
Зарегистрирован: 27 апр 2013, 11:22

Организация размещения JAVA-файлов с классами

Сообщение Манул » 02 май 2013, 07:22

Доброго времени суток, Уважаемые Гуру!
В программировании уже далеко не новичок, но с android и java только начинаю разбираться. Все прелести ООП мне знакомы, стараюсь их использовать. Допустим, создал я java-файл с какими-то классами, которые можно использовать в нескольких проектах. Вопросы в следующем:
1. В каком месте относительно рабочей попки Workspace, созданной Eclipse, лучше расположить свой файл, что-бы он был доступен для любых проектов. Или придется делать копии этого файла в папку src с основным activity.java всех проектов?
2. Мне не понятна пока сама идея размещения проектов в паке Workspace Eclipse. Каждый проект создается в отдельной папке, при настройке необходимо назвать имя пакета (Package). К примеру есть у меня два проекта с одинаковым пакетом ru.mypackade.project_1 и ru.mypackade.project_2. И в каждом проекте есть такая структура папок src\ru\mypackade\Имя пакета. Вроде-бы оба проекта имеют общий пакет ru.mypackade, но связаны ли они? Если в этих проектах использовать один общий файл с классами, что в значении packade этого файла прописывать?

Tamachi
Сообщения: 203
Зарегистрирован: 17 апр 2013, 00:08

Re: Организация размещения JAVA-файлов с классами

Сообщение Tamachi » 02 май 2013, 07:52

Манул писал(а):Доброго времени суток, Уважаемые Гуру!
В программировании уже далеко не новичок, но с android и java только начинаю разбираться. Все прелести ООП мне знакомы, стараюсь их использовать. Допустим, создал я java-файл с какими-то классами, которые можно использовать в нескольких проектах. Вопросы в следующем:
1. В каком месте относительно рабочей попки Workspace, созданной Eclipse, лучше расположить свой файл, что-бы он был доступен для любых проектов. Или придется делать копии этого файла в папку src с основным activity.java всех проектов?
2. Мне не понятна пока сама идея размещения проектов в паке Workspace Eclipse. Каждый проект создается в отдельной папке, при настройке необходимо назвать имя пакета (Package). К примеру есть у меня два проекта с одинаковым пакетом ru.mypackade.project_1 и ru.mypackade.project_2. И в каждом проекте есть такая структура папок src\ru\mypackade\Имя пакета. Вроде-бы оба проекта имеют общий пакет ru.mypackade, но связаны ли они? Если в этих проектах использовать один общий файл с классами, что в значении packade этого файла прописывать?
Не ищи логики в Eclipse. Там её нет. И кое-что меняется от версии к версии.
Сам в свое время патался адаптировать "правила хорошего тона в программировании" к андроиду.
Потом понял, что это бесполезно.
Какое-то время использовал ткаой прием: проект помечается меткой "is library" и используется в других проектах как библиотека. Но после последнего обновления Eclipse такие составные проекты перестали компилиться и мне пришлось откатить.

И Eclipse и Android всегда жестко провоцировали отказ от "правила хорошего тона", принятых в ООП.

И ещё: если начнёшь использовать такие "правила хорошего тона" в Eclipse, то потом у тебя появится куча проблем при переносе Eclipse-проекта в другую среду разработки, например NetBeens.

Манул
Сообщения: 3
Зарегистрирован: 27 апр 2013, 11:22

Re: Организация размещения JAVA-файлов с классами

Сообщение Манул » 02 май 2013, 08:28

Tamachi. Спасибо!
Честно говоря, разочарован. Получается, оптимальный вариант, это копировать файл с нужными классами в папку src... целевого проекта (где главный activity.java лежит), в packade прописывать пакет целевого проекта и тогда будет все работать.

Tamachi
Сообщения: 203
Зарегистрирован: 17 апр 2013, 00:08

Re: Организация размещения JAVA-файлов с классами

Сообщение Tamachi » 02 май 2013, 09:10

Манул писал(а):Tamachi. Спасибо!
Честно говоря, разочарован. Получается, оптимальный вариант, это копировать файл с нужными классами в папку src... целевого проекта (где главный activity.java лежит), в packade прописывать пакет целевого проекта и тогда будет все работать.
По идее -- да.
Это в каком-то смысле плохо, а в каком-то -- хорошо.

Давай представим ситуацию так:
у тебя есть некий класс, который ты хотел бы повторно использовать в других проектах.
В старых версиях Eclipse ты мог пометить этот класс как "is library" и во всех других проектах
сделать "Add Reference". Однако, очень часто возникает ситуация, когда в рамках одного проекта класс должен вести себя одним способом, а в рамках другого проекта -- другим. В этом случае традиционный подход заключается в выделении общих свойств и методов в общий родительский класс, от которого будут наследоваться оба класса.

В идеологии Java более практичен другой подход: когда ты пишешь некий интерфейс, но имплементируешь его в разных классах по-разному.

И ещё обрати внимание на следующее различие:
A) В стандартной ООП идеологии предполагается, что класс -- это универсальная единица кода.
B) В идеологии андроида -- это не так! Те вещи, которые ты можешь сделать изнутри Activity, ты не всегда сможешь сделать из службы или из потока. Поэтому, написав класс, и убедившись, что он корректно работает из Activity, ты можешь удивиться, узнав, что будучи вызванным из службы он может работать не так как планировалось или вообще не работать. Поэтому в системе Андроид класс не является универсальной единицей кода и тебе нет никакого смысла оформлять его как отдельную библиотеку в надежде использовать в его будущем.

Призрачно всё в этом мире андроидном. :)

Очень жаль, но приходится опускаться до банального копипастинга.

Манул
Сообщения: 3
Зарегистрирован: 27 апр 2013, 11:22

Re: Организация размещения JAVA-файлов с классами

Сообщение Манул » 02 май 2013, 09:23

Tamachi писал(а):
По идее -- да.
Это в каком-то смысле плохо, а в каком-то -- хорошо.
...

Очень жаль, но приходится опускаться до банального копипастинга.
Ну что-же, копипастинг так копипастинг. буду так работать.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Организация размещения JAVA-файлов с классами

Сообщение rezak90 » 02 май 2013, 10:58

делайте library общего проекта и подключайте потом сколько хотите, никакого копипаста, та хоть jar либу сделайте один файл всего лишь будет
R.id.team
Политика на форуме запрещена

Tamachi
Сообщения: 203
Зарегистрирован: 17 апр 2013, 00:08

Re: Организация размещения JAVA-файлов с классами

Сообщение Tamachi » 02 май 2013, 11:17

rezak90 писал(а):делайте library общего проекта и подключайте потом сколько хотите, никакого копипаста, та хоть jar либу сделайте один файл всего лишь будет
У тебя Eclipse Juno или Eclipse Indigo?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Организация размещения JAVA-файлов с классами

Сообщение rezak90 » 02 май 2013, 11:41

Tamachi писал(а):
rezak90 писал(а):делайте library общего проекта и подключайте потом сколько хотите, никакого копипаста, та хоть jar либу сделайте один файл всего лишь будет
У тебя Eclipse Juno или Eclipse Indigo?
и тот и тот, + ещё от гугла, бандл или как он там называется
R.id.team
Политика на форуме запрещена

Tamachi
Сообщения: 203
Зарегистрирован: 17 апр 2013, 00:08

Re: Организация размещения JAVA-файлов с классами

Сообщение Tamachi » 02 май 2013, 11:52

rezak90 писал(а):
Tamachi писал(а):
rezak90 писал(а):делайте library общего проекта и подключайте потом сколько хотите, никакого копипаста, та хоть jar либу сделайте один файл всего лишь будет
У тебя Eclipse Juno или Eclipse Indigo?
и тот и тот, + ещё от гугла, бандл или как он там называется
А мне не нравится таскать за собой всякое старье. Глядишь и через несколько лет вообще целый ворох различных эклипсов с собой таскать придётся.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Организация размещения JAVA-файлов с классами

Сообщение rezak90 » 02 май 2013, 12:09

а мне новый не нравится, потому и сижу на старом, всё устраивает, ничего не глючит
R.id.team
Политика на форуме запрещена

Tamachi
Сообщения: 203
Зарегистрирован: 17 апр 2013, 00:08

Re: Организация размещения JAVA-файлов с классами

Сообщение Tamachi » 02 май 2013, 12:57

rezak90 писал(а):а мне новый не нравится, потому и сижу на старом, всё устраивает, ничего не глючит
Рано или поздно на новый всё равно придётся переходить.
Плагины под старый скоро перестанут поддерживать.

Ответить