powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Как насчет такой структуры класса?
9 сообщений из 9, страница 1 из 1
Как насчет такой структуры класса?
    #39878902
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что думаете? Не противоречит ли это "best practice" и как оно вообще с вашей точки зрения?


Такой вариант приводится в примерах на YouToube
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

import android.widget.Button
import android.widget.TextView


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //объявления переменных
        val btnChangeText = findViewById<Button>(R.id.btnChangeText)
        val lblText = findViewById<TextView>(R.id.lblText)
        ...
        ...

        //обработчики событий
        btnChangeText.setOnClickListener{
            lblText.text = "Hallo"
            //... реальная функция будет, естественно, длиннее чем эта демка
        }
        
        ...
        ...        
    }
}



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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {

    //объявления переменных (теперь видны для всех функций класса)
    lateinit var btnChangeText: Button
    lateinit var lblText: TextView
    ...
    ...

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //инициализация объявленных выше переменных 
        btnChangeText = findViewById<Button>(R.id.btnChangeText)
        lblText = findViewById<TextView>(R.id.lblText)
        ...
        ...

        //компактно определяю обработчики событий
        btnChangeText.setOnClickListener{btnChangeText_OnClick()}
        ...
        ... 
    }

    //функции для обработки событий (теперь именованные)
    fun btnChangeText_OnClick(){
        lblText.text = "Hallo"
        //... реальная функция будет, естественно, длиннее чем эта демка
    }
    ...
    ...
}
...
Рейтинг: 0 / 0
Как насчет такой структуры класса?
    #39879211
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это скорее философский вопрос и по моему зависит от целей и задач.

Если в дальнейшем с объектом планируется работа, то повышать область видимости, а иначе - смысла особо нет. Разве что для красоты, но это уменьшает читабельность локального участка кода.
...
Рейтинг: 0 / 0
Как насчет такой структуры класса?
    #39879351
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

ну может и я тогда так же буду .... надо только выветрить delphi-ское мышление на время.
...
Рейтинг: 0 / 0
Как насчет такой структуры класса?
    #39879610
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хоть так, хоть эдак - все это овнокод, который гугл посеял на заре андроида и пожинает до сих пор. все вышеозначенное можно гораздо красивей наваять с помощью DataBinding и/или какого-нибудь framework типа Dagger/AndroidAnnotations - скорее всего для котлин существуют свои аналоги, я не в курсе, но точно должны быть. Вот эта прямолинейная инициализация через findViewById и добавление обработчиков событий врукопашную никуда не годятся.
...
Рейтинг: 0 / 0
Как насчет такой структуры класса?
    #39879621
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaВот эта прямолинейная инициализация через findViewById и добавление обработчиков событий врукопашную никуда не годятся.

Это моя самая большая претензия к Android Studio и программированию для Android. Не знаю, может в "Eclipse + ADT plugin" было иначе, но я не смотрел.
...
Рейтинг: 0 / 0
Как насчет такой структуры класса?
    #39879628
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас уже можно делать иначе, главное заглянуть за край тарелки ;-)
...
Рейтинг: 0 / 0
Как насчет такой структуры класса?
    #39879630
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaСейчас уже можно делать иначе, главное заглянуть за край тарелки ;-)

вы что имеете ввиду?
...
Рейтинг: 0 / 0
Как насчет такой структуры класса?
    #39879631
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семёнвы что имеете ввиду?
То, что написал выше - databinding, androidannotations etc
...
Рейтинг: 0 / 0
Как насчет такой структуры класса?
    #39879654
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaandroidannotations
Это-то же по сути макросы, которые сокращают написание кода и улучшают читабельность.
Сам код после обработки становится немного (иногда много) мудренее.

Но в целом согласен. Я-бы даже сказал, что это mast have.

Устаревшая, пожалуй, информация, но представление поможет составить https://www.sql.ru/forum/1200790/androidannotations
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Как насчет такой структуры класса?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]