Code Review’da Nelere Dikkat Edilir?
Code Review serimizin son bölümünde; Code Review yapılırken; dikkat edilmesi gereken noktaları açıklamaya çalışacağım.
Proje mimarisine uygunluk
Code Review’da yazılan kodun, oluşturulan dosyaların ve klasörlerin konumlandırılması, projenin ana mimarisine uygunluğu kontrol edilebilir. Yapılan ekleme ve güncellemelerle projenin genel akışı bozulmamalıdır. Kodu yazan kişi bile aradan zaman geçtiğinde kodu nereye eklediğini hatırlamak zorunda olmamalıdır. Aynı şekilde ekibin geri kalanı koda baktığında neyin nerede olduğunu düşünmek zorunda kalmamalıdır.
Yazılan kodun; projenin çalıştırıldığı işletim sistemine uyumluluğu ve kullanılan teknik yapılara uygunluğu da kontrol edilmesi gereken unsurlar arasındadır.. Örneğin çoklu sunucuda çalışılan bir projede üretilen dosyaları tek bir sunucu üzerinde tutmak doğru olmadığından; sunucular arası ortak dosya paylaşım sistemine yazılması konusunda kod denetlenebilir ve yazılımcı bu konuda bir şeyleri gözden kaçırmışsa düzeltilmesi sağlanmalıdır.
Bu konu içerisinde proje içerisinde kod tekrarını engelleme de bir madde olarak eklenebilir. Proje içerisinde aynı işi yapan kodlar her geliştirici tarafından tekrar tekrar yazılmamalıdır. Bu projenin bakım sürecinde zorluklara ve yeni bug’lara neden olacaktır. Çünkü aynı işi yapan farklı metotlar olduğu sürece bakım esnasında güncellemesi atlanacak olan ya da hatalı güncellenecek olan metotlar olacaktır. Her geliştiricinin projenin neresinde ne kod var bilmesi mümkün olmayabilir. Fakat Code Review aşamasında süreci yürüten proje katılımcısı; aynı işi yapan bir kodu kendisi daha önce yazmışsa veya başka Code Review’lardan hatırlıyorsa bunu dile getirerek kod tekrarını önleyebilir.
Kod stillerine uygunluk
Projedeki kodların okunurluğu, düzeni, kullanılan değişken ve dosya isimlendirmesi, kullanılacak yazım stilleri dikkate alınmalıdır. Aksi halde ekipteki herkes kendi kafasına göre kod yazmaya başladığında; zamanla projedeki kodlar karmaşıklaşır ve ilerde anlaşılması güç hale gelebilir. Bu açıdan ekip kodun ilgili stillere uygunluğu da denetlenmelidir.
Kodun doğru çalışması
Yazılan kodun doğru çalışması, mantıksal hatalar içermemesi, işlemleri doğru yaptığı ve beklenen sonuca dönüp dönmediği bu açıdan denetlenmelidir. Code Review’ın en önemli yönlerinden biri de budur. Örnek verecek olursak; söz gelimi mantıksal kıyaslama operatörü yerine (==); atama operatörü (=) kullanıldığında kod beklenen şekilde çalışmayacak ve hatalar üretecektir. Hızlı yazarken yanlışlıkla yapılabilecek böyle bir kullanım; Code Review’da fark edilip düzelttirilebilir.
Kodun performanslı olması
Kodun performanslı çalışması, önemli bir konudur. Bir işi yazılımsal olarak yapmanın onlarca veya yüzlerce yolu vardır. Projeler büyüdükçe, veri miktarı arttıkça, işlem yoğunluğu arttıkça yazılan her bir satırın önemi artmaktadır. Hal böyleyken; kodların performans kriterleri gözetilerek yazılması gerekmektedir. Code Review’da bu konulara da dikkat edilmelidir.
Örneğin yüzbinlerce kaydı veri tabanında güncellemek istediğimizde; tek tek bağlantı açıp tek tek güncellemek; hem uzun sürecek hem de kaynakların gereksiz yere tüketimine neden olacaktır. Bu açıdan sorguların veri tabanının performanslı çalışma kriterleri gözetilerek bulk(toplu) olarak gerçekleştirilmesi faydalı olacaktır. Yazılan kod buna aykırılık taşıyorsa düzeltilmesi talep edilebilir.
Kodun güvenli olması
Yazılan kodun güvenliği çalışması da en az doğru çalışması kadar önemlidir. Kodun dışarıdan sızmalara karşı dayanıklı olması, yetkisiz erişimlere karşı korumalı olması vs gerekir. Yetkisi olmayan bir kullanıcı bu yazılımı kullandığında başkasına ait verileri görememeli veya başkası adına işlem yapamamalıdır. Dışardan alınan bir verinin güvenli, tutarlı ve beklenen tiplerde olup olmadığı denetlenmelidir. Yazılım geliştirici bu unsurlara aykırı kod yazmışsa düzeltmesi talep edilmelidir.
Kodun talep eden işe uygunluğu
Yazılan kod ile talep edilen işin uygunluğu denetlenmelidir. Bu kontroller her ne kadar test ve QA adımlarında denetleniyor olsa da; ekibin kodu projeye dahil etmeden önce denetlemesi ve aykırılıkları gidermesi önemlidir. Örnek verecek olursak; iş talebinde bir kaydın pasif edilebilmesi için yapılması gereken ön kontroller belirtildiği halde; kod içerisinde hiçbir kontrol yapılmadan kayıt pasif ediliyorsa; bu işe uygunluk açısından denetlenmeli ve düzeltilmesi talep edilmelidir.
Kodun gelişime açık olması ve over-engineering içermemesi
Yazılan kodun isteneni karşılaması önceliklidir. Fakat kodu yazarken; fazlandırılmış bir projede sonraki fazlardaki özelliklerin dikkate alınması veya ilerde gelmesi muhtemel diğer özelliklerin de projeye katılmasına hizmet etmesi ve öncülük etmesi önemlidir. Eğer sisteme eklenen kodlar gelişime açık değilse; sonraki özellikleri koda eklemek çok zor olacak, belki de mümkün olmayacaktır. Ya da en kötü ihtimalle; proje ciddi bir refaktör süreci gerektirecek ve maliyetler artacaktır. Bu nedenle kodun ilerde gelişime açık olarak yazılmasına dikkat edilmelidir. Örnek verecek olursak; bir sistemde kurları çeken ve hesaplayan bir özellik talep edildiğinde; yarın bir gün birden fazla kaynaktan kur çekilmesi gerekebileceği veya çekilen kaynağın değişebileceği göz önünde bulundurulmalı ve kod buna göre yazılmalıdır. Olası bir ihtiyaçta kodu sürekli baştan yazılmak zorunda kalınmamalı ve sadece cüzi eklemeler ve adaptörlerle çalışır hale gelebilmelidir. Kod buna uygun yazılmamışsa düzeltilmesi talep edilmelidir. Burada dikkat edilmesi gereken konu; bunu yapmaya çalışırken kantarın topuzunu kaçırmadan ve over-engineering yapmadan ilerlemektir. Aksi halde denge gözetilmediğinde kod gelişime açık olsun diye yazılım maliyetini yüzlerce katına da çıkarmamalıyız. Maliyet ve zaman dengesi gözetilerek; bazen ufak, bazen büyük, bazen sadece yerinde dokunuşlarla sistemi gelişime açık hale getirecek şekilde kodun yazılmasını sağlayabiliriz. Geliştiriciyi buna uygun şekilde yönlendirebiliriz.
Son olarak; bu yazdığımız kontrol noktaları arttırılabilir ve genişletilebiliriz. Kodu inceleyen ekip üyeleri veya topluluk üyelerinin her biri kodu bu unsurların bir veya birkaçı ile denetleyebilir. Burada yazılımcının deneyimli olup olmaması birincil öncelik değildir. Ekibin her bir üyesinin dikkat çekeceği ve görebileceği noktalar farklı olacaktır. Bu nedenle Code Review’lar ne kadar çok katılım sağlanarak yapılırsa o kadar faydalı olacak ve başarı oranı artacaktır.
Bu yazı ile Code Review ile ilgilli yazı serimizin sonuna gelmiş bulunuyoruz. Takip edip okuduğunuz için teşekkür ederiz.
-o-
Bu yazı ile code review ile ilgilli yazı serimizin sonuna gelmiş bulunuyoruz. Takip edip okuduğunuz için Teşekkür ederiz.