Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 19 дек 2018, 16:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: классы в java
СообщениеДобавлено: 28 авг 2014, 13:54 

Зарегистрирован: 28 авг 2014, 05:05
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте дорогие форумчане.
Значится вопрос такой.
даже не вопрос а размышление но для меня он больше как вопрос..
представим такую ситуацию.
например есть класс маин активити
Код: [ Загрузить ] [ Скрыть ]
  1. package **** 
  2. import **** 
  3.  
  4. class news(){                          <----  класс выполняет роль структуры 
  5. String head,text 
  6.  
  7.  
  8. public class MainActivity extended Activity(){ 
  9. news[] novosti; 
  10. news novost; 
  11. OnCreate(){ 
  12. блаблабла 
  13. novosti = new news[10]; 
  14. novost = new news(); 
  15.  
  16. (цикл заполнения novosti) 
  17. for(int i=0; i<10; i++){ 
  18. novosti[i] = new news(); 
  19. novosti[i].head = "новость "+i; 
  20. novosti[i].text = "текст новости "+i; 
  21.  
  22. (заполнения одного пункта novost) 
  23. novost = new news(); 
  24. novost.head = "новость 100"; 
  25. novost.text = "текст новости 100"; 
  26.  
  27. ********* 
  28. типа читаем здесь новсти через логи (проверяем запись) //все норм 
  29. ********* 




все находится в одном классе, все работает, все работает.

а теперь представим момент когда размер активити переваливает за 5000 строчек кода, ты смотришь и не понимаешь уже что где, или требуется оптимизайи, или введения сервисов\бродкастов или просто навести красоту спомощью фрагментов...
да хотябы просто навести красоту разбив функции на классы


вот тут и возникает вопрос

А куда деть переменные??
очевидно нужен как минимум\максимум отдельный клас для переменных.
ну для int string все понятно создал класс определил public final
в него завернул или fianl static или static эти пременые..
а что делать со структурами???

например разберем тотже код только

Код: [ Загрузить ] [ Скрыть ]
  1. class news(){                          <----  класс выполняет роль структуры 
  2. String head,text 
  3.  

отдельный класс news который теперь имеет вид

Код: [ Загрузить ] [ Скрыть ]
  1. public final class news(){                          <----  класс выполняет роль структуры 
  2. static String head="",text="" 
  3.  


перобразим активити
Код: [ Загрузить ] [ Скрыть ]
  1. package **** 
  2. import **** 
  3.  
  4. public class MainActivity extended Activity(){ 
  5. news[] novosti;   }                    
  6. news novost;     }           <--   ссылаются на отдельный класс 
  7. OnCreate(){ 
  8. блаблабла 
  9. novosti = new news[10]; 
  10. novost = new news(); 
  11.  
  12. (цикл заполнения novosti) 
  13. for(int i=0; i<10; i++){ 
  14. novosti[i] = new news(); 
  15. novosti[i].head = "новость "+i; 
  16. novosti[i].text = "текст новости "+i; 
  17.  
  18. (заполнения одного пункта novost) 
  19. novost = new news(); 
  20. novost.head = "новость 100"; 
  21. novost.text = "текст новости 100"; 



и класс приемник который будет принимать из общего класса новости


Код: [ Загрузить ] [ Скрыть ]
  1. package **** 
  2. import **** 
  3.  
  4.  
  5. public class priemnik extended Activity( или Fragment)(){ 
  6. news[] novosti; 
  7. news novost; 
  8. OnCreate(){ 
  9. блаблабла 
  10.  
  11. (цикл чтения novosti) 
  12. for(int i=0; i<10; i++){ 
  13. Log.d(novosti[i].head,novosti[i].text);   <---валится в NULLPOINTEREXEPTION на первом же индексе 
  14.  
  15. (чтения novost) 
  16. Log.d(novost.head,novost.text);   <--- запись появляется в консоль 
  17.  


так вот к чему я введу

как записать в общий класс news массив структур так, чтобы потом из другого класса его прочитать (желательно фрагмент али активити)???

мои раздумия таковы что одиночную структуру он записывает\читает потому что знает что по этому адресу только одно значение

а массив не может прочитать может потому что он не знает ни размерность ни степень этой структуры??
если я не прав обьясните мне...
заранее спасибо))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:11 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
Изучайте основы java и ООП, никто не будет пересказывать вам основы теории.
Цитата:
<---валится в NULLPOINTEREXEPTION на первом же индексе

потому, что это полная чушь. Вы можете сказать, что вы там ожидаете увидеть?
Цитата:
а теперь представим момент когда размер активити переваливает за 5000 строчек кода

единственное решение - уволить автора без выходного пособия... изучайте: https://github.com/android?page=1&query=apps

_________________
Изображение


Последний раз редактировалось altwin 28 авг 2014, 14:20, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:20 

Зарегистрирован: 28 авг 2014, 05:05
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
altwin писал(а):
Изучайте основы java и ООП, никто не будет пересказывать вам основы теории.
Цитата:
<---валится в NULLPOINTEREXEPTION на первом же индексе

потому, что это полная чушь. Вы можете сказать, что вы там ожидаете увидеть?




очень малая вероятность того что хотябы

"новость 1","текст новости 1"


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:20 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
Романыч писал(а):
altwin писал(а):
Изучайте основы java и ООП, никто не будет пересказывать вам основы теории.
Цитата:
<---валится в NULLPOINTEREXEPTION на первом же индексе

потому, что это полная чушь. Вы можете сказать, что вы там ожидаете увидеть?




очень малая вероятность того что хотябы

"новость 1","текст новости 1"

В массиве? Вам нужно изучать java, основы ООП и структуры данных. Во первых java - это только объекты. Вы всегда импортируете класс, создаете объект и обращаетесь к его методам, в вашем случае это могут быть так называемые getter -ы. Но это не верное архитектурное решение. В любом случае постарайтесь как можно более детально.. даже наизусть выучить всю теорию, это очень сильно вам поможет избежать проблем. Иначе вы быстро все бросите.

P.S. даже если упустить тот факт, что ваш класс не содержит конструктора и понять как туда попадают { "новость 1","текст новости 1" } не возможно, для хранения пар ключ/значения используются hash подобные структуры.

_________________
Изображение


Последний раз редактировалось altwin 28 авг 2014, 14:24, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:23 

Зарегистрирован: 28 авг 2014, 05:05
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
altwin писал(а):
Романыч писал(а):
altwin писал(а):
Изучайте основы java и ООП, никто не будет пересказывать вам основы теории.
Цитата:
<---валится в NULLPOINTEREXEPTION на первом же индексе

потому, что это полная чушь. Вы можете сказать, что вы там ожидаете увидеть?




очень малая вероятность того что хотябы

"новость 1","текст новости 1"

В массиве?



канешно это глупо звучит

но да



но просто как этот массив сделать общим для разных классов

передавть через параметры? интентами?
лишние строчки кода да и весяма не удобно


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:26 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Цитата:
единственное решение - уволить автора без выходного пособия... изучайте: https://github.com/android?page=1&query=apps

Помнится в коде Джона Кармака есть коды и гораздо превышающие 5 тысяч строк. Я про то, что совершенно не факт, что это всегда плохо.

Романыч, почитайте книгу "Совершенный код", там хорошо раскрываются все эти понятия, а также как лучше именовать переменные и прочее.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:26 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
Романыч писал(а):
altwin писал(а):
Романыч писал(а):
altwin писал(а):
Изучайте основы java и ООП, никто не будет пересказывать вам основы теории.
Цитата:
<---валится в NULLPOINTEREXEPTION на первом же индексе

потому, что это полная чушь. Вы можете сказать, что вы там ожидаете увидеть?




очень малая вероятность того что хотябы

"новость 1","текст новости 1"

В массиве?



канешно это глупо звучит

но да



но просто как этот массив сделать общим для разных классов

передавть через параметры? интентами?
лишние строчки кода да и весяма не удобно

http://java-study.ru/java-uchebnik/88-java-massivy каким образом вы собираетесь хранить ключ и значение в массиве?
Зачем вам кого -то делать общими? это полный бред и очень дурной тон в программировании... У вас есть класс, вы создаете его объект и используете. Вам нужно привыкать делать классы с минимальным функционалом. Одна задача - один класс. Никаких общих переменных быть не должно. Передавать конкретно в Android - да intent и другие стандартные пути. Не брезгуйте теорией, вы удивитесь как много вопросов отпадет, когда начнете перечитывать третий раз.

>> лишние строчки кода да и весяма не удобно
Вы правы на 100%, глобальные переменные и любые данные - это круто, особенно когда ваш глобальный массив используется в сотне потоков, а оператор GOTO подарит нам всем сотни свободных часов в год. Вам там хорошую книжку порекомендовали, попробуйте почитать. ;)

_________________
Изображение


Последний раз редактировалось altwin 28 авг 2014, 14:35, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:27 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
Mikhail_dev писал(а):
Цитата:
единственное решение - уволить автора без выходного пособия... изучайте: https://github.com/android?page=1&query=apps

Помнится в коде Джона Кармака есть коды и гораздо превышающие 5 тысяч строк. Я про то, что совершенно не факт, что это всегда плохо.

Романыч, почитайте книгу "Совершенный код", там хорошо раскрываются все эти понятия, а также как лучше именовать переменные и прочее.

При чем тут? у меня есть код в котором уже более 100 млн строк... нопокажи мне Activity в которой 5 000 строк.

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:40 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
а, вот ты про что =) Ну тут пожалуй соглашусь, сам пока что более 1500 строк не превышал в активности, да и то требуется рефакторинг.
А что за класс на 100 млн. строк?

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 14:49 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
Mikhail_dev писал(а):
а, вот ты про что =) Ну тут пожалуй соглашусь, сам пока что более 1500 строк не превышал в активности, да и то требуется рефакторинг.
А что за класс на 100 млн. строк?

Это не совсем класс, просто парсер логов записывающий данные в exel. Это скриптовый язык и простое приложение учета (просто парсить нужно как вывод 1c, так и программ расчета, причем разных...) лет 7 назад его делали для "окна - двери" контор. Вся суть в том, что структура логов меняется, но ради целостности ничего не удаляется, плюс разный вормат вывода. Вот и приходилось плодить всякие условия. Переписывать было лень, а теперь поздно, да и просто поддержка, никто его больше не покупает... это же perl... там сейчас разбито по файлам, но суть не меняется оно всеравно перед запуском в одну кучу все собирает и сплошной строкой и зачитывает... бред полный но что то исправлять даже страшно :) Самое смешное, что доступ админам клиента к нему открыт и они переодически дописывали... все использовали один файл... т.е. дописал, что тебе нужно и коментарий поставил - это мое ... В итоге потом очень весело пытаться нужную строчку кода найти... ide то так и нет толковой :)

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 28 авг 2014, 15:22 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Тот случай, когда рефакторить уже поздно =)

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: классы в java
СообщениеДобавлено: 29 авг 2014, 08:17 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
Романыч писал(а):
...Значится вопрос такой...

0) имхо но так "(цикл чтения novosti)" лучше не писать, лучше что-нить более привычное: "//цикл чтения novosti", или "/*цикл чтения novosti*/". А так читаешь код и непонятно какого в нем делают какие-то непонятные скобки.
1) Количество строк кода конечно показатель качества кода, но он далеко не единственный, отсутствие архитектурных косяков куда более важно. Передачу данных между Activity принято через Intent осуществлять. Чтобы передавать свой класс через Bundle нужно реализовать в нем интерфейс Parcelable или Serializable. Activity и Fragment могут получить друг к другу доступ. Иногда для общих данных используется синглтон класса Application, но тут нужно точно понимать, что это тебе нужно и по другому лучше не сделаешь. Передавать данные в свой класс можно через конструктор или методы.
2) Тут скорее всего не нужен static:
Код: [ Загрузить ] [ Скрыть ]
  1. public final class news(){                          <----  класс выполняет роль структуры  
  2. static String head="",text=""  
  3.  
  4. }  

И обращаться к переменным принято в jave через гетеры и сетеры.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB