• 26-06-2020, 22:02:31
    #1
    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 )
  • 26-06-2020, 22:28:54
    #2
    R10'dan bir geliştiricinin yaptığı uygulamayı düzenlemiştim. Drawable klasöründe ciftci.png dosyasında ciftci yerine bir futbol topu vardı. Reklam kodları birkaç yere yazılmış, sabit değerlerin tutulduğu bir sınıfı bile yoktu. Değerleri yine kodların içinden tek tek bulup değiştiriyordunuz. Değişken isimlerini de neredeyse akrabalarının ismini verecek kadar kötü isimlendirmişti. Evet, ille de mvp kasmayın ama en azından kodlar da bir düzen olsun yahu. ciftci.png dosyasında futbol topunun ne işi var be kardeşim
  • 27-06-2020, 12:21:59
    #3
    @ilkeryildirim; Teşekkürler.

    Bilgiler güzel, okurken açıkçası kendime ders çıkardım ancak foruma baktığımız da bunu uygulayan yazılımcı sayısı bir elin parmak sayısını geçmez.

    Özellikle 1000 lira yatırayım bana ayda 300-500 getirisi olsun diyenler bunlara bakmaz.

    Müşteri, yatırımcı böyle olunca (konuya bir haber) o zaman işi bir an önce bitireyim de parama bakayım muhabbeti ön plana çıkıyor.

    Tabi @AwoApp; Ciftci.png den futbol topu çıkması da sizi şaşırtmış olmalı.

    Tekrar yararlı bilgi için teşekkürler değerlendirebilene güzel bilgiler.
  • 27-06-2020, 17:19:24
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Teşekkürler paylaşım için. Maalesef mimarisiz yapılmış projeler temelsiz binalara benziyorlar, üzerine ne kadar kat çıkmaya çalışırsanız o kadar içinden çıkılmaz bir hal alıyor. Google herhangi bir mimari seçiminde diretmiyor zira her proje için gereksinimler ve en uygun mimari farklıdır. Yine de genel olarak Android Jetpack, Android dökümanları ve Google tarafından paylaşılan kaynak kodlarını inceleyecek olursanız en iyi kaynak bulabileceğiniz mimari MVVM dir. Kabataslak bir projenin nasıl olması gerektiği ise yine Android tarafından paylaşılan bu bağlantıdaki rehberi inceleyerek fikir edinebilirler.