Sobes.tech
Middle+

Opowiedz o antipatternach w rozwoju Androida.

sobes.tech AI

Odpowiedź od AI

  • Używanie AsyncTask do długotrwałych operacji (lepiej używać Kotlin Coroutines lub RxJava).
  • Przekazywanie View/Context do ViewModel (powoduje wycieki pamięci).
  • Dziedziczenie bezpośrednio po Activity lub Fragment dla podstawowej logiki (lepiej używać kompozycji).
  • Sztywne kodowanie stringów, liczb, kolorów zamiast korzystania z zasobów.
  • Blokowanie głównego wątku (MainThread) długimi operacjami synchronicznymi.
  • Używanie zmiennych statycznych do przechowywania danych wymagających cyklu życia.
  • Nadmierne użycie zagnieżdżonych layoutów, co prowadzi do problemów z wydajnością (ConstraintLayout lub LinearLayout z weight jest lepsze).
  • Brak obsługi zmian konfiguracji (obrót ekranu, zmiana języka).
  • Bezpośredni dostęp do baz danych lub operacji sieciowych z wątku UI.
  • Nieprawidłowe użycie SharedPreferences do przechowywania dużych obiektów lub poufnych danych.
  • Brak obsługi wyjątków lub jej nieprawidłowa implementacja (np. puste bloki catch).
  • Używanie intencji niejawnych bez sprawdzania dostępności odpowiednich aktywności (resolveActivity).
  • Nieprawidłowe zarządzanie subskrypcjami (np. w RxJava), co prowadzi do wycieków.

Przykład nadmiernego zagnieżdżenia layoutów:

<!-- Złe -->
<LinearLayout>
    <LinearLayout>
        <TextView/>
    </LinearLayout>
</LinearLayout>

<!-- Dobre -->
<LinearLayout>
    <TextView/>
</LinearLayout>