Kitap – Refactoring Martin Fowler

24 Haz

DSC_1348

Martin Fowler imzalı Refactoring, temel ilke mevcut kodun iyileştirilmesi amacıyla kod işlevini değiştirmeden yeniden yapılandırılmasını hedeflemektedir. Kitabın temel iddiası, çalışan programların çeşitli nedenlerle kötü tasarlanmış olmasıdır.

Çok büyük yapıdaki metod veya fonksiyonların beklenmedik bir şekilde programda karmaşıklığa yol açacağı aşikardır. Martin Fowler’a göre Refactoring işlemi, metodun çalışmasını etkilemeden fonksiyonelliğini koruyarak dönüştürmektir. Dönüşüm ile koda yeni işlevselliklerin kolay bir şekilde kazandırılabilmesi ve kodun okunabilirliğinin sağlanması  amaçlanmaktadır. Küçük adımlarla işlevselliğin korunarak kod paketi sık sık birim testlere tabi tutulmalıdır. Kitapta Java programlama dili ile geliştirilmiş örnek uygulamalar ile anlatım güçlendirilmiştir.

15 bölümden olşumuş kitaptaki bölümler, refactoring işlemlerin adımları küçük adımlarla vevörnek uygulamalar ile  anlatılmıştır. Kodun temiz, okunabilir, test edilebilir bir şekilde düzenlenmesi amaçlanmıştır.

Kitapta ele alınan konuların bir kısmı, farkındalık açısından her programcının bilmesi gereken teorik bilgilerdir. Ancak bana göre günümüzde kullanılan gelişmiş IDE’ler veya Resharper tarzı IDE eklentiler, değişkenlerin yeniden adlandırılması, kod tekrarları, sınamaların kısa ifadeler şeklinde sadeleştirilmesi gibi işlemleri otomatik olarak geliştiriciye önermekte ve isterse otomatik olarak kodu düzenlemektedir. Bekli bu gibi bölümler bir süre sonra geliştiriciler açısından okunmaya değmez bölümler olarak algılanabilse de bence okumakta fayda var diyebilirim.

Kitap – Domain Driven Design

27 Şub
Domain Driven Design
Domain Driven Design

Kitap tavsiye kategorisinin bu bölümünde Domain Driven Desing Tackling Complexity in the Heart of Software isimli kitaptan bahsedeceğiz.

Kitap Eric Evans tarafından kaleme alınmış olup dili ingilizcedir. Basılı kitabı buradan temin etmek mümkündür.

Kitapta karmaşık yapıdaki yazılımlar geliştirirken nasıl bir yazılım tasarımının uygulanması gerektiği konusu ele alınmıştır. Bu tasarım Domain Driven Design diye adlandırılmıştır.

Domain Driven Design yaklaşımı, problemin çözümünün domain diye adlandırılan bir alanda yapılması esasına dayanmaktadır. Burada problem, bir hava yolları rezervasyon sistemi veya bir e-ticaret sistemi tasarlamak olabilir. Bu noktada müşteri ve programcı karşı karşıya gelmektedir. Müşteri gereksinimleri, Domain Expert denen kişiler tarafından iyi bir şekilde tespit edilerek programcının anlayacağı bir şekle dönüştürülür. Programcı ve Müşteri arasında  sağlıklı bir iletişimin kurulabilmesi için Ubiquitous Language diye adlandırılan ortak bir dil oluşturulur. Gerekli iletişim sağlandıktan sonra sistem programcılar tarafından geliştirilmeye başlar.

Domain Driven Design yaklaşımı bize genel olarak dört temel katman üzerine inşaa önerir. Bunlar:

  • Presentation layer
  • Application layer
  • Domain layer
  • Infrastructure layer

Problemin çözümü için gerekli model Domain Layer üzerinde kurulur. Diğer katmanlar sunum ve iletişim katmanları olarak kullanılır.

Eric Evans’a göre Domain-Driven Design yaklaşımı, yazılım dünyasının popüler konularından birisi oldu ve kapsamlı yazılım projelerinde kullanılıp faydası görüldükçe yaygınlaşacak. Bunun yanında her projede Domain Driven Design yaklaşımını uygulamak yanlış olur. Sadece gerektiğinde kullanmak uygun olacaktır.

Kitap – Clean Code

25 Oca
Clean Code
Clean Code

Kitaplar kategorisinin bu yazısında Clean Code isimli kitabı konu ediyorum. Robert Cecil Martin imzalı bu kitap, Prentice Hall yayınlarından çıkmıştır.

Yaklaşık 430 sayfalık bir kitaptır. Dili İngilizce olup gayet akıcı ve anlaşılırdır.

Clean Code, yazılım geliştiricilere temiz kod yazma konusunda iyi bir rehberdir. Yazılım geliştirme deneyimi 40 yılı aşkın olan bir yazar tarafından kaleme alınmıştır. Bu bağlamda, sırf kod örnekleri ile kalmayıp tecrübe aktarımı ile de süslenmiş bir eserdir.

Temiz kod yazmak, bilgisayarlar tarafından kodun düzgün çalıştırılmasını veya anlaşılmasını değil, kodumuzu okuyan diğer geliştiriciler tarafından kodun doğru şekilde anlaşılmasını amaçlamaktadır. Temiz kod, projelerin zamanla yönetilebilir olmaktan çıkmasını engellemektedir. Dolaylı olarak maliyetleri de düşürdüğü görülmektedir.

Örnek kodlar Java programlama dili ile yazılmıştır. Örnekleri anlamak için Java, C, C# gibi programlama dillerini bilenler de örnekleri anlama noktasında çekmeyeceğini düşünüyorum. Örnekler gayet anlaşılır şekilde açıklanmıştır. Nelerin yapılıp yapılmaması konusunda birçok örnek verilmiştir.

Tek başına program yazanların kendine özgü kod yazım biçimleri veya geliştirdikleri kişisel yöntemler olabilir. Bu kitabı önemsemeyebilirler. Ancak kurumsal bazda proje geliştirenlerin aynı standartta, okunabilir ve yönetilebilir kod yazmaları, projenin hayatını devam ettirebilmesi için şarttır. Kurumsal geliştiriciler için iyi bir kaynak olabileceği kanısındayım.

Kitabı amazon.com’dan satın aldım. Kitaba diğer yurt dışı alışveriş siteleri üzerinden ulaşmak da mümkündür. Şu anda bu tarz kitaplara ülkemizde satılmamaktadır. Temennimiz bu tarz kitapların ülkemizde de satılmaya başlamasıdır.

Kitap – Head First Design Patterns

21 Ağu
Head First Design Patterns
Head First Design Patterns

Kitaplar serisine ait bu yazıda Hear First Design Patterns isimli kitabı incelemeye çalışacağız. Kitabın yazarları Eric Freeman ve Elisabeth Freeman‘dır. O’REILLY yayınlarından çıkmıştır. Amazon üzerinden bu kitaba ulaşabilirsiniz.

Kitap 638 sayfa olup dili İngilizcedir. İngilizce seviyesi ortanın üstünde olmayanlara bu kitabı önermem.

Head First Design Patterns tasarım şablonlarını nesneye yönelik programlama teknikleri ile harmanlayarak işlemiştir. Anlatımı gayet akıcıdır ve anlaşılması kolaydır. Konuları düz metin ağırlıklı değil, resimlerle ve şekillerle güçlendirerek görsellik üzerinde anlatımını yoğunlaştırmıştır. Bu sayede konuların kolay anlaşılması sağlanmıştır.

Bu kitabı okurken Java bilgisine sahip olmanız gerekir. Örnekler Java programlama dili ile geliştirilmiştir. Ancak C# programlama dilini bilenlerin de okuyabileceği bir kitaptır. Java veya C# dillerinde uzmanlaşmış olmanıza gerek yoktur, nesneye yönelimli programlama tekniklerini bilmeniz yeterlidir.

Kitabı okurken hiç sıkılmadım. Örnekler gayet sade ve anlaşılır geldi bana. Tasarım şablonlarını öğrenmek ve uygulamak isteyenlere kesinlikle öneririm. Tabi ki bu kitap sihirli bir değnek değil. Okuyan herkes tasarım şablonlarının en iyi uygulayıcısı olacak diye bir kaide koymuyorum. Kitaptan aldıklarını kendi problemlerinize uygulamak size kalmış. Umarım faydalı olur. Tekrar görüşmek dileğiyle.

Kitap – The Art of Unit Testing

24 Mar

Kitap tanıtım bölümü kategorisine eklediğim bu yazı “The Art of Unit Testing” adlı kitap üzerine olacaktır. Roy Osherove tarafından yazılmış olan bu kitap Manning yayıncılık tarafından piyasaya sürülmüştür. Kitabı amazon.com üzerinden temin ettim. Kargo maliyetinden kaçınmadığımdan kitap 4 günde elime ulaştı. Resimde de görüldüğü üzere artık elimde.

Amazon Kargo Paketi
Amazon Kargo Paketi

Hemen paketi açıp merakımı gidermek istedim. İçeriği, dış kapağı, faturası… her şeyini merak ediyordum.

Kitap
Kitap

Kitabı bir hafta gibi bir sürede okudum. Bende oluşturduğu izlenim, Unit Test konusunda bilgisi olan geliştiricilerin okuması gereken bir kitap olduğu şeklindeydi. Test Driven Development konusunda hiç bilgisi olmayan bir geliştiriciye çok faydalı olacağını söyleyemem. Çünkü sıfırdan Tets Driven tekniğini anlatan bir içeriğe sahip değil. Ancak unit testleri yazarken dikkat edilmesi gereken kuralları güzel bir şekilde anlatıyor. Diğer yandan unit test yazarken gerekli olan ve kullanılması framework’lerden bahsetmektedir. Unit test yazma sanatını anlatan bir çeriğe sahip. Kitaptaki örnek uygulamalar .Net platformunda C# programlama dilinde yazılmıştır. Sade ve anlaşılır bir dille kalema alınmıştır.

Test Driven Development ile geliştirme yapanların baş ucunda bulunması gereken kitaplardan biri diyebilirim.

Kitabın amazon.com linkine buradan ulaşabilirsiniz.

Bir Kitabı Defalarca Okumak

24 Şub

Bu yazının konusunu oluşturan durum, yani bir kitabı birkaç kez okuma alışkanlığımın oluşması, yazılım kitaplarını ve makalelerini okumaya başladıktan sonra oluştu. Daha önceleri hikaye, roman ya da güncel kitaplar okurken okuduğum kitaptan bir anafikir oluşturduğumda artık amacıma ulaştığımı anlardım.

Son dönemlerde yazılım geliştirme kitaplarını okumaya başladığımda durum değişmeye başladı. Bir kitabı okurken, kitabın içeriğinin bende uyandırdığı merak duygusundan olsa gerek son derece aceleci davranıyorum. Her bölümü merak edip bir an önce vermek istediği bilgileri almaya çalışıyorum. Bu da konuları tam anlayamama sebep oluyor. Kitap bittiğinde kafamda hiç bir bölüm hakkında tam bir fikir oluşmadığını anlıyorum. Bu durumun oluşmasında belki de okuduğum kitapların yabancı dilde (ingilizce) yazılmış olması da rol oynuyor olabilir. Aynı kitabı bir süre sonra tekrar okuduğumda kitabın vermek istedği mesajı tam olarak alabildiğimi hissediyorum. Kitapta verilen örnek uygulamaları daha iyi anlayabildiğimi farkediyorum. Geliştirdiğim uygulamalarda öğrendiğim yöntemleri uygulamam daha kolaylaşıyor. Zaman ilerledikçe kitaptan öğrendiklerimi unutabiliyorum. Tekrar aynı kitaba baktığımda kitaba olan aşinalığımdan dolayı unuttuklarımı hatırlamam ve anlamam kolaylaşıyor.

Yazılımcı milleti, kendi kendini yetiştirmek zorunda olan bir kitle olduğundan kendi derdine kendi çare bulmak zorunda kalıyor. Bilmediklerini kendi kendine okuyarak ve araştırarak bulmak zorunda kalıyor. Sektördeki işe yarar kaynakların da çoğunlukla yabancı dilde yazıldığı göz önüne alındığında yabancı dil öğrenmek ve okumak şart oluyor. Ben okuduğum kaynakları tekrar okuma alışkanlığımın sebebini anlayarak kendi derdimin çaresini kendim bulmuş oldum.

Kitap – Head First Object-Oriented Analysis & Design

25 Ara

Nesneye Dayalı Programlama (Object Oriented Programming) ile geliştirilen programların analizi ve tasarımı konusunda yol gösterici bir rehberdir. Yazdığınız programların kafa karıştırıcı ve sıkıcı hale dönüşmemesi için nasıl tasarımlar yapılması konusunda örnekler verir.

Kitapta bir taraftan da tasarım desenleri konusunda bilgiler verilmektedir. yazdığımız kodlarda tasarım desenlerinin kullanılması gerektiği konusu vurgulanmaktadır.

Kitaptaki örnekler Java programlama dilinde yazılmıştır. Bu nedenle kitaptan daha iyi faydalanmak için Java programlama diline aşina olmak gerekmektedir.

Kitap O’REILLY yayınlarından çıkmıştır. Orjinal sayfasına buradan ulaşabilirsiniz. Satın almak için amazon üzerinden sipariş verebilirsiniz.

Kitap – The C# Programming Language

30 Kas

C# dilini nereden ve nasıl öğrenirim diyenlere “bu kitaptan” diyebilirim. Çünkü kitabın yazarlarından biri de C# dilinin baş mimarı diyebileceğimiz Anders Hejlsberg’dir. Her işi ustasından öğrenmek gerektiğine inananlardan olduğum için bu kitabı edinerek hemen okumaya başladım. Kitapta C# dilinin bütün özellikleri derinlemesine anlatılmış ve yerinde örneklendirmeler yapılarak anlaşılırlık daha da güçlendirilmiştir. Bu anlamda tam bir başucu kitabı demek yanlış olmaz.

Kitaptaki örnek kodlara baktığınızda bile bu kitabın usta kalemlerden çıktığını anlayabiliyorsunuz. C# dilini anlatan kitapların çok azında bulabileceğiniz bir anlatım derinliği ve genişliği sunmaktadır. Kitap, özünde C# dilini kavratmakta ve dilin neden önemli olduğunu okuyucuya ikna edici bir dil ile anlatmaktadır.

Kitabın C# 4.0 versiyonunu okuma fırsatı buldum ve merak ettiğim konuları açıp okumaya devam ediyorum. Herkese tavsiye ederim. Kitabın yazarlarına da böyle bir eseri bizlerle buluşturduğu için teşekkür ederim.

Tekrar görüşmek dileğiyle.

Kitap – Programming WCF Services 3rd Edition

8 Eyl

Okuyucuyu,  WCF (windows comminication foundation) dünyasının derinliklerinde gezintiye çıkaran bir kitap. Kitabın kapağındaki balığın sebebi de bu dur belkide. Derinlerde gezen bir balık. O’Relly yayınlarının birçok kitabının kapağında ayrı bir hayvan resmi kullanılır. Kapaklarda kullanılan hayvanların listesini merak ederseniz buradan ulaşabilirsiniz.

Bu kitapta WCF mimarisi derinlemesine anlatılmaktadır. Yaklaşık 900 sayfalık bir kitap olması, ne kadar ince detaylara indiği konusunda fikir verebilir.

Kitabı, amazon.com üzerinden satın alabilirsiniz.

Eğer WCF servisleri konusunda, sıfırdan uygulamalar geliştiren bir kitap arıyorsanız, bu kitap size göre değil. Ama WCF servislerini öğrenmeye başladınız ve neyi neden yaptığınızı merak ediyorsanız bu kitap tam size göre. Kulandığınız her nesnenin ne işe yaradığını ve nasıl kullanıldığı anlatılmış, örnek kod parçaları ile güçlendirilmiştir.

Okumaktan zevk aldığım bir kitap. Umarım siz de zevkle okursunuz.

Kitap – Programming Entity Framework

14 Ağu

ADO.NET mimarisinin en önemli araçlarından biri olan Entity Framework mimarisini ustasının ağzından dinleyebileceğiniz bir kitap.

Entity Framework yapısının temellerindeki yaklaşımları adım adım anlatmaktadır. Bu yaklaşımları aşağıdaki gibi sıralayabiliriz:

  • Code First
  • Database First
  • Model First

Bunun yanında SQL sorgularının ORM aracıyla kullanılması, Stored procedure kullanımı gibi konularada yer verilmektedir.

ORM araçlarının temelinde yatan entity mantığı derinlemesine irdelenmektedir.

Kitabın dili ingilizce olmakla beraber anlaşılır şekildedir.

Umarım zevkle okursunuz.