Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Alex_Fedor
27 / 27 / 3
Регистрация: 20.01.2015
Сообщений: 207
#1

Стиль программирования - Android

07.08.2016, 06:50. Просмотров 257. Ответов 8
Метки нет (Все метки)

Я исчо начинающий. Прошу напинать в нужном направлении. Ситуация такая. В проекте используются вьивы с со стандартными обработчиками ну там нажать, коснуться, удерживать и тд. Вопрос такой как в эти обработчики передавать данные или объекты. Пока что передаю на уровне глобальных переменных, сам понимаю что как то коряво. К примеру у нескольких кнопок есть общий обработчик onClick(View v), при нажатии нужно выполнить кучу всего, от вывода текста до редактирования БД. В один прекрасный момент в какой нибудь процедурке неаккуратно поменяю какую нибудь глобальную переменную потом ошибку умру искать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3021 / 1823 / 189
Регистрация: 13.01.2012
Сообщений: 6,910
07.08.2016, 12:22     Стиль программирования #2
Alex_Fedor, что бы передать что то в функцию нужно иметь место вызова функции - у OnClick место вызова - палец - о каких аргументах в этом случае идет речь? произошло событие - была нажата определенная кнопка, был вызван обработчик нажатия, он забрал нужные ему данные из нужных ему элементов интерфейса либо откуда-то еще если того требует задача и выполнил некоторый действия сохранив результат в нужные ему элементы интерфейса либо куда-то еще
Alex_Fedor
27 / 27 / 3
Регистрация: 20.01.2015
Сообщений: 207
07.08.2016, 13:17  [ТС]     Стиль программирования #3
Еще раз извиняюсь за свою бестолковость. Есть куча функций, как стандартных обработчиков (например Button) так и моего бреда. Понятно, что в свои функции я могу предать параметры по ссылке или по значению. Тогда гарантировано я случайно не поменяю переменные.
А вот с той же самой кнопкой засада. По идее можно написать свой класс обработчика нажатия, но по моему это как то не айс.
Везде в учебниках сильно не упираются, все переменные, и не только вьивы объявляют в глобальных переменных. Вот к примеру кусок кода. Все переменные объявил на глобальном уровне. Только теперь нет гарантии, что где нибудь в функции сам критически не изменю переменную, в результате легко могу получить ошибку.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        TextView tvEngWord,tvTranscrip,tvAssociation,tvTranslate;
    ImageButton btnSpeak,btnEdit,btnControll;
    ImageView tvImage;
    final String MY_LOG="myLog";
    boolean dirTranslate;//направление перевода труе английские слова фальсе русские
    DbHelper dbHelper;
    SQLiteDatabase db;
    Cursor cur;
    boolean cursorIsEmpty=true;//курсор пустойзапись показывать не надо
    SharedPreferences sPref;
    String useTableName;//имя таблицы которую сейчас юзаем
    String speakEngWord;
    private final int RET_EDIT_ACTIVITY=1;//вернула активность EditDictonary
    private final int RED_NAME_USE_TABLE=2;//вернула автивность выбора словаря
    private final int RET_CONTROLL=3;//вернула активность Controll
    
    float x=0;//=event.getX();
    float y=0;//=event.getY();
    boolean visibleImage= true;//картинка показывается
    
    private TextToSpeech tts;
vxg
Модератор
3021 / 1823 / 189
Регистрация: 13.01.2012
Сообщений: 6,910
07.08.2016, 15:51     Стиль программирования #4
Alex_Fedor, напишите как бы вы хотели что бы это выглядело
Alex_Fedor
27 / 27 / 3
Регистрация: 20.01.2015
Сообщений: 207
07.08.2016, 17:23  [ТС]     Стиль программирования #5
Честно говоря, я и сам это не очень представляю. Просто по опыту знаю что переменным лучше ограничивать области видимости необходимыми для их работы. А в этом примере переменные х и y. мало того что имена очень просты, так еще и область видимости глобальная, хотя по программе используются в паре функций. Конечно можно задать имена чтобы не путаться, но проблему в целом это не решит. Проект посложнее и 50-100 переменных обеспечено. Где случайно не обнулил и все ищи ошибку. Если у вас хороший опыт программирования, то плиз напишите какой у вас подход.
vxg
Модератор
3021 / 1823 / 189
Регистрация: 13.01.2012
Сообщений: 6,910
07.08.2016, 19:16     Стиль программирования #6
Alex_Fedor, ну тогда если вам легче пусть будет так
Java
1
2
3
4
5
6
7
8
9
10
11
    private int myMethod(int x) {
        return x * x;
    }
    private OnClickListener myHandler = new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            int x = Integer.parseInt(xEdit.getText().toString());
            int y = myMethod(x);
            yEdit.setText(String.valueOf(y));
        }
    };
Добавлено через 55 секунд
правда выглядит немного странно? почему бы просто не перенести все что лежит в myMethod в тело myHandler?
REALIST07
Автор FAQ
Автор FAQ
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
08.08.2016, 20:51     Стиль программирования #7
Это ?
Паблито
2014 / 1756 / 546
Регистрация: 12.05.2014
Сообщений: 6,215
Завершенные тесты: 1
09.08.2016, 11:08     Стиль программирования #8
по ссылке из сообщения выше какой-то бредовый код
ТС, не читай и не пытайся так делать, просто поверь на слово
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2016, 12:20     Стиль программирования
Еще ссылки по теме:

Переопределить стиль диалога Android
Как называется язык программирования для программирования на Android? Android
Android Стиль LinearLayout
Android Изменить стиль кнопки Android
Применить стиль к кнопке Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
REALIST07
Автор FAQ
Автор FAQ
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
09.08.2016, 12:20     Стиль программирования #9
Паблито,

Не по теме:

то чувство когда сам компилятор так делает

Yandex
Объявления
09.08.2016, 12:20     Стиль программирования
Ответ Создать тему
Опции темы

Текущее время: 02:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru