Sobes.tech
Middle+

Μίλησε για τα αντιπαραδείγματα στην ανάπτυξη Android.

sobes.tech AI

Απάντηση από AI

  • Χρήση του AsyncTask για μακροχρόνιες λειτουργίες (καλύτερα να χρησιμοποιείτε Kotlin Coroutines ή RxJava).
  • Μεταβίβαση View/Context στο ViewModel (προκαλεί διαρροές μνήμης).
  • Άμεση κληρονομία από Activity ή Fragment για βασική λογική (καλύτερα να χρησιμοποιείτε σύνθεση).
  • Σκληρό κωδικοποίηση συμβολοσειρών, αριθμών, χρωμάτων αντί να χρησιμοποιείτε πόρους.
  • Πάγωμα του κύριου νήματος (MainThread) με μακροχρόνιες συγχρονικές λειτουργίες.
  • Χρήση στατικών μεταβλητών για αποθήκευση δεδομένων που απαιτούν κύκλο ζωής.
  • Υπερβολική χρήση εμφωλευμένων διατάξεων, που οδηγεί σε προβλήματα απόδοσης (ConstraintLayout ή LinearLayout με βάρος είναι καλύτερα).
  • Έλλειψη διαχείρισης αλλαγών διαμόρφωσης (περιστροφή οθόνης, αλλαγή γλώσσας).
  • Άμεση πρόσβαση σε βάσεις δεδομένων ή λειτουργίες δικτύου από το UI νήμα.
  • Λανθασμένη χρήση του SharedPreferences για αποθήκευση μεγάλων αντικειμένων ή εμπιστευτικών δεδομένων.
  • Έλλειψη διαχείρισης εξαιρέσεων ή εσφαλμένη υλοποίησή της (π.χ. κενά μπλοκ catch).
  • Χρήση αόρατων προθέσεων χωρίς έλεγχο ύπαρξης κατάλληλων δραστηριοτήτων (resolveActivity).
  • Λανθασμένη διαχείριση συνδρομών (π.χ. σε RxJava), που οδηγεί σε διαρροές.

Παράδειγμα υπερβολικής εμφωλευμένης διάταξης:

<!-- Κακό -->
<LinearLayout>
    <LinearLayout>
        <TextView/>
    </LinearLayout>
</LinearLayout>

<!-- Καλό -->
<LinearLayout>
    <TextView/>
</LinearLayout>