22 Nisan 2019 Pazartesi

Kendini Geliştirmek İsteyen Yazılımcılara...

    S.a. Arkadaşlar,

     Hayatımıza uygulamamız gereken bir kaç pratik bilgiden bahsetmek istiyorum. Bunları uygulamanın bir çok faydası var. Zaman zaman bunları uygulamak benim de yaşadığım bir sıkıntı maalesef. O yüzden bunları önce kendime söylüyorum. Daha sonra belki başka faydalananlar da çıkar ümidiyle paylaşmak istedim. Belki bu sayede kafalarda birer soru işareti, birer yol işareti olması dileğiyle.

     Kod Okumak
     Benim kendi adıma dert yandığım konulardan biri kod okumaktır. Hepimiz kod yazıyoruz, ama yazdığımız kodun kalitesi hakkında fikir sahibi miyiz ?
Hadi onu da geçtim, başka biri bu kodu nasıl yazardı veya bu mimariyi nasıl tasarlardı diye hiç düşündünüz mü ? Bazen yazdığım kodlardan sonra bunu düşünüyorum. Acaba iyi bir çözüm müdür, daha iyisi yazılabilir mi diye kafa yorduğumu oluyor. Ve bu yetiyi geliştirmek için github üzerinden bol bol kod okumak lazım.

      Mümkünse açık kaynaklı kodlara destek vermek lazım. Ayrıca hackerrank tarzı siteleri de es geçmemek lazım. Bazen oralarda problemler çözüyorum.
 Merak edip insanların çözümüne bakıyorum, çok makul ve etkili çözümler görebiliyorum, işte böyle böyle gelişebiliriz.
      Burada Tarık Güney’in bir makalesiyle baş başa bırakayım sizi. Kendisi de çok üretken çok bilgili bir meslektaşımızdır.

     Kod Kata
     Belki de bu kavramlar arasında en nadir duyduğunuz kavram budur. Ben bunu kavramı ilk defa Özcan Acar Hoca’dan duydum. Kendisi bu konulara çok kafa yoran bilgili, üretken bir Java Şampiyonudur.

     Günlük olarak pratik yapmamız gerektiğini söylüyor. Futbolcu nasıl her antrenmandan önce ısınma hareketleri yapıyorsa ve bu onu zinde tutuyorsa bizim de bunları yapmamız gerektiğini söylüyor. Aşağıda vereceğim siteye göz atabilirsiniz, ayrıca ben bunu son zamanlarda aksatsam da her gün hackerrank’tan bir problem çözmek olarak hedef koymuştum kendime. Bunu bir düşünmenizi tavsiye ederim.
 Kod Kata

      Code Review
      Bu da başka önemli bir konu. Büyük şirketlerde çalışan arkadaşlar bu açıdan daha şanslı olsa da bu imkana sahip olmayanlar da kendine bir arkadaş bulabilir ve müsait oldukça ya da belirli günlerde arkadaşıyla kodları inceleyebilirler. Mesela ben bunun için kendime bir arkadaş buldum ve ara sıra da olsa bunu yapmaya çalışıyorum. Siz de bence bu iş için birilerini bulabilirsiniz.

       SonarQube ve Resharper
       Sonarcube kodun kalitesini statik olarak ölçen ve size bu konuda öneriler sunabilen bir araçtır.
 Resharper ise direkt c# için visiual studio refactor aracı da diyebiliriz.
 Şahsen resharper kullanmadım ama sonarcube kullandım ve oldukça da eksiklikleri görüp düzeltmiştim. Bu konuda dinlediğim bazı podcast’lerde yurt dışında sonarqube’den geçmeyen kodların push’lanmadığını bazı yerlerde ise kodun derlenmediğini dahi duydum. Buları hep ayarlayabiliyorsunuz. Tabi bunları Türkiye’de başarabilmek ne kadar mümkün bilemiyorum.

     Bununla ilgili medium’da bir yazım var isterseniz inceleyebilirsiniz.
     Burada da Suat Köşe’nin güzel bir yazısı mevcut.
     Farklı platformlar için medium üzerinden kolaylıkla farklı örnekler buldum. Sizler de kullandığınız dil veya platforma göre bulabilirsiniz.

     Çıplak sınıf kalmasın
     Bu kavramı ilk defa Engin Demiroğ’den duymuştum. Kendisi bu konularda oldukça bilgi bir meslektaşımız. Bu konu aslında kendime kızdığım bir konu. Base class oldukça yaygın kullanıyorum, fakat interface kullanımında kendimi eksik görüyorum. (Bu yazıyı daha önceden hazırlamıştım, şimdi tekrardan gözden geçirirken bu konuda da kendimi geliştirmeye devam ediyorum. Bu eksikliğimi de gidermeye devam ettiğim için ayrıca mutlu oldum:) Yani bir class oluşturduğumuzda base’inde (java’da super class) , implementasyonunda bir arayüz (interface) yoksa orada sıkıntılar var demektir. Bu konu belki de hastalıkların babasıdır. Çünkü mimari düzgün kurulmadığında, sınıflar birbirine sıkı bağımlı olduğunda, test yazmak daha da zorlaşır. Test yazmak zorlaşırsa proje kırılgan olur. Kırılgan olan projede değişikler yapmak zor ve maliyetli olur. Her değişikliğin maliyeti artar ve en son sonunda yeniden yazmak zorunda kalacağınız bir projeniz olabilir.

     AOP ve @-Attribute
     Bu konu da oldukça güzel bir konu. Yıllar önce okumuştum, fakat o zamanlar ne demek istediğini tam anlayamamıştım. Daha sonra tekrar araştırma fırsatı buldum. Burası benim kendi adıma sevindiğim bir nokta oldu. Adını bilmeden kullandığım bir yapıymış. Bunu kısaca açıklayacak olursak;
      Bir metot içerisinde onlarca kontrol varsa bunları attribute olarak tanımlayıp kodu basit hale getirebiliyoruz. Bu başlı başına bir yazı olduğu için buradan bir örnek vereyim. Bu yazı oldukça uzun bir yazıdır. Hepsini okumazsanız bile en azından yarısına kadar gelmenizi şiddetle tavsiye ederim. Ayrıca benim de MVC yapısı ile kullanarak hazırladığım bir yazım var.

     Clean Code
     Bu konu başlı başlına çok büyük bir konu gerçekten, fakat sürekli tavsiye edilen bu kitabın İngilizcesi gerçekten çok uzun. Bu yüzden
 Büşra Uzun’un bu konuda paylaştığı notları var. 12 yazı şeklinde yayımlamış. Gerçekten çok emek harcamış ve kesinlikle okunması gereken bir yazı serisi.

   Sonuç
 Tüm bu konuları ele alıp bu linkteki gibi kendi kod standartlarımızı dahi yapabiliriz. Eksik veya eklemek istediğiniz yerler olursa yazıya yorum olarak ekleyebilirsiniz. Ayrıca karşılıklı olarak da konuşmak isteyen arkadaşlar özelden (linkedin veya twitter’den) de yazabilir.

Selametle Kalın.

Hiç yorum yok:

Yorum Gönder