Herkese Merhaba,

Android uygulama geliştirirken yapılması gereken bazı şeylerden bahsetmek istiyorum.
Öncelikle kodlarımızı yazarken bir yazım standart'ı belirlememiz gerekir. Values, Variables, Resources kısacası herhangi yeni bir kaynak yaratırken kesinlikle snake case yada camel case kullanmamız gerekir.
Peki nedir bu case'ler?
Örnek vermek gerekirse bir değişken oluştururken.

Camel Case:
private lateinit var myFirstValue : Int
Snake Case:
private lateinit var my_first_value: Int
Umarım aradaki farkı anlamışsınızdır. Değişken adımız her zaman bu 2 case şablonuna göre tanımlamalıyız. Tabii birini seçmemiz gerekiyor daha sonra daha okunaklı olması için.

Örneğin bir laoyut tasarımımızda bir TextView kullandık id'sini şu şekilde tanımlamanızı öneririm.

 android:id="@+id/tvMyId"
Veya ImageView

 android:id="@+id/imgMyId"
Böylelikle R.id. den sonra tv ile yazarsanız sadece TextView'ları listeler Android Studio sizin için.

Uygulama geliştirirken neden bir mimarı kullanmalıyız sorusuna şöyle cevap verebilirim. Kodlarımızın daha anlaşılır olabilmesi, test edilebilir olması, güvenlikli olması.

Peki Android Uygulama geliştirirken nasıl bir mimari kullanabiliriz? Şuanlık popüler olan 2 mimari var MVP-MVVM zaten çoğu native android geliştirici ilanlarında bunları görürsünüz.
Burada kod yapılarını paylaşmayacağım dilerseniz github linklerimden ulaşabilirsiniz.

MVP mimarisi 3 yapıdan oluşur. Model - View - Presenter. Amacı UI logic ile bussines logic'i ayırmaktır.

Örnek gerekirse 3 adet sınıf oluşturmamız lazım
1. si View. Aslında view oluşturmak için ekstra bir çaba göstermemize gerek yok. Zaten fragment,activity bizim view'ımız oluyor.
2. si Presenter. Bu sınıfın amacı tamamen Bussines logictir. Yani bütün ui işlemleri harici her şeyi bu sınıf üzerinde yapacağız.
3. Contract. Bu sınıf View ile Presenter'ı haberleştireceğimiz sınıftır aslında interface sınıfıdır. İçerisinde 2 adet interface sınıfı oluşturulur. ViewInterface, PresenterInterface
dilerseniz 2 adet Contract oluşturarak bunları ayırabilirsiniz, aynı kapı.Eğer interface mantığını bilmiyorsanız araştırma yapmanızı öneririm. Presenter interface içerisinde presenter sınıfımızda çalışacak fonksiyonları oluşturacağız. ViewInterface'imizde ise View'ımızda çalışacak metodları oluşturacağız.

Temel mantığı anlatmak gerekirse view presenter'a yapması gereken işlemleri söyler. Presenter işlemi yapar view'a cevap verir.

Mvvm ise daha ayrı bir konu daha çok detay gerekir onu burda anlatmam doğru olmaz mvp biraz daha basit mvvm'e göre. Dediğim gibi kodlarınızı bu şekilde yazarsanız okuması ve test edilmesi kolaylaşır.

Öyle içimden bir yazı yazmak geldi size birkaç ufak umarım bir fikir oluşmuştur mvp mimarisi ve mimariler hakkında.

Mvvm örnek uygulama https://github.com/ilkeryildirim/photos-mvvm
Mvp örnek uygulama https://github.com/ilkeryildirim/kotlinMVP (bu biraz eksi olabilir güncellerini araştırabilirsiniz)

ve herşeyden önce java'da biraz bilgiliyseniz Kotline geçiniz )