Yazar: Özcan Acar
-
Çok Gezen mi Bilir, Çok Okuyan mı?
Bu soru birçok tartışmaya yol açacak cinsten ve ilk bakışta cevabı göreceli gibi görünüyor. Vereceğim örnekte ise bu sorunun cevabı çok gezenin lehinde olacak. Maaşlı çalışan bir programcının çalıştığı firma bünyesinde yaptıklarının haricinde öğrenebileceklerinin tümü üç yıl ve daha az bir zaman dilimine sığdırılabilir. Bu zaman diliminden sonra programcı bildiklerini tekrar eder ve yeni bir…
-
Başlama ve Bitirme Kriterleri
Bir yolculuğa çıkılmadan önce gerekli hazırlıklar yapılır. Bu hazırlıklar yolculuğa çıkabilmek için atılması gereken zorunlu adımlardır. Bu adımlar atılmadığı taktirde, yolculuğun başarısız olması, yolculuğun iptali ya da planlanan zamanda tamamlanamama rizikosu doğabilir. Yolculuğa çıkıldıktan sonra nihai amaç varış noktasına planlanan zamanda erişmektir. Varış noktasına planlanan zaman diliminde erişildiğinde, yolculuk tamamlanmış olarak kabul edilir. Bir yolculuğun…
-
5 Adımda Daha Kaliteli Yazılım Testleri
Yazılım testleri can yeleği olma özelliğine sahip olmalarına rağmen, yazılımcılar tarafından göz ardı edilme eğilimi yaşayan en önemli yazılım disiplinlerinden birisidir. Çalıştığım projelerde testlerin hak ettikleri ilgi ve alakayı görmediklerini gözlemliyorum. Edindiğim izlenimler şu şekilde: Bazı yazılımcılar test yazma konusuna hiç ilgi göstermezler. Bazı yazılımcılar test yazarlar, lakin test kodunu işletme mantığının yer aldığı koddan…
-
Müşteri Gereksinimlerini Anladığımızdan Nasıl Emin Olabiliriz?
Tipik bir yazılımcı kendisine verilen bir işi görevlere (task) böler ve kod yazmaya başlar. Çoğu zaman bir işi parçalara bölme ve görevler oluşturma işlemi ekip içinde de yapılır. Bir işin parçası olan görevler ekip içinde paylaştırıldıktan sonra, herkes üzerinde düşeni yapmaya başlar. Bir işi parçalara bölmek ve bu şekilde bir işi tamamlamaya çalışmak seçilebilecek en…
-
Programcının Hayatını Kolaylaştıran 18 Alışkanlık
1. Her Bug İçin Bir Test Yazılması Bir hatayı gidermiş olmak, o hatanın tekrar etmeyeceği anlamına gelmez. Tekrarı durumunda kullanıcıların değil, programcı olarak bizim kısa bir sürede tekrar eden hatayı keşfetmemiz gerekir. Bunun da en kolay yolu, keşfettiğimiz her hata için bir birim testi yazmaktır. Birim testleri hatanın tekrarı durumunda bize en kısa sürede geri…
-
Birim Testlerinde Beklentilerimi Daha Net Nasıl İfade Edebilirim?
Kodkata.com bünyesinde hazırladığım Koşullu Mantığın Komut İle Değiştirilmesi isimli katada aşağıda yer alan birim testlerinden yola çıkılarak, uygulama yeniden yapılandırılıyor. [source language=”java”] package com.kodkata.kata.replaceConditionalDispatcherWithCommand.orig; import junit.framework.Assert; import org.junit.Test; public class PriceCalculatorTest { private static final String LOCALE_TURKISH_REPUBLIC = "tr_TR"; private static final int DEFAULT_NETTO_PRICE = 100; private static final String LOCALE_GERMANY = "de_DE"; private static…
-
Sözde Lean!
Super lean Grails Micro-Services diye bize sattıkları koda bir bakın: [source language=”java”] @Grab("com.h2database:h2:1.3.173") import grails.persistence.* @Entity @Resource(uri=’/books’) class Book { String title } [/source] Bu lean değil, patlamak üzere olan saatli bir bomba. Tek bir sınıf bünyesinde nasıl başardılarsa, sınıfın hem veri tabanı için gerekli JDBC sürücüsü konfigürasyonunu, buradan bir java.sql.Connection nesnesi edinme işlemini, JPA…
-
En Basit Çözümü Oluşturma Yetisi Nasıl Kazanılır?
Yıllar içinde yazılımcının beyni karmaşık çözümler üretmek için programlanır. Soyutlama yetisi onun müşteri gereksinimi olarak tabir edilen o karmaşanın içinde çabukça şablonlar ve veri yapıları keşfetmesini sağlar. Bu yüksek derecede problem çözme yetisine sahip beyin, kendisinden basit çözümler beklendiğinde, tökezleyip kalır, çünkü programcının gözü yıllarca karmaşık yapılarla uğraşmaktan çok basit çözümleri göremez hale gelmiştir. Programcı…
-
Kodun Okunabilirlik Seviyesi Nasıl Artılır?
Kodun okunabilirliği, kullanılan sınıf, metot ve satır sayısıyla ters orantılıdır. Bunların hepsinden ne kadar az kullanılırsa, o oranda yazılan kodun okunabilirlik seviyesi artabilir. Örneğin versiyon kontrol sisteminden kodu alıp, derledikten sonra oluşan war dosyasını uygulama sunucusuna deploy eden bir program parçası hayal edelim: [sourcecode language=”java”] // Kod 1 Checkout checkout = new CheckOut(); checkout.setFrom("svn://myhost/repo/code/v1"); checkout.to("/home/centos/workspace/code");…
-
Java’da Polimorfizm Nasıl İşler?
Profesyonel Java Sanal Kursu – 1. Bölüm‘den örnek alıntıdır. [pp-video file=”/003-java/026_poli” autoplay=”false”]