Java Günlüğüm
Yazılım, Java, BT, azıcık felsefe, biraz mizah...
  • Udemy Eğitimleri
  • Temiz Kod
  • Tasarım Kalıpları
  • Hakkımda
  • Arşiv
RSS
08 Nisan 2015

Kod Dokümantasyonu – I: API Dokümantasyonu

Akin Yazılım Mühendisliği

Yazılımda dokümantasyon devamlı konuşulan konulardandır. Nihayetinde dokümantasyon hararetli bir alandır, şiddetli taraftarlıklara konu olur ama muhtemelen en başarılı taraftarlık her zaman “dokümantasyon yapmamak”tır. Yani herkes bu konuyu farklı açılardan ele alır ama hala dokümantasyon yerinde sayar. Özellikle projelerin başında bu konuda belli kararlar alınsa ve uygulansa bile hararetin ilk arttığı dakikadan itibaren muhtemelen ilk terkedilen şey dokümantasyon olur.

Bu yazıda kodun dokümantasyonu üzerine bir şeyler yazmak istiyorum. Ama önce kod dokümantasyonundan ne anlıyoruz onu bir netleştirmemiş lazım. Kod dokümantasyonu öncelike ikiye ayrılır: Kodun API dokümantasyonu ve kodun iç dokümantasyonu. Bu yazıda ilkini ele alalım.

Kodun API dokümantasyonundan kastım, kodda var olan sınıf, arayüz, metot vb. yapıların “ne yaptıklarının” dokümantasyonudur. Buna kısaca arayüz dokümantasyonu (interface documentation) ya da daha bilinen haliyle API dokümantasyonu (API documentation) denir. API, malum Application Programming Interface’in kısaltmasıdır ve bir yazılımın sahip olduğu sınıf, arayüz, metot vb. yapıların dışarıdan görünene taraflarının tamamına denir. Dolayısıyla API’de kod yoktur, kodun tanımı vardır. API, bir yazılım sisteminin alt bileşenlerinin ne yaptığına odaklanır. Bu anlamda API kod değildir, kodun arayüzüdür ve “ne”liği vurgular, “nasıl”lık üzerine detay barındırmaz. Tam da bu yüzden kod dokümantasyonu derken, kodun içinde bulunduğu sınıf, metot vb. yapıların dokümantasyonu ile kodun içinde yapılan, iç dokümantasyonu ayırırız.

Kodu anlamak, doğrudan IDE üzerinde açılan kodlara bakarak elde edilemeyecek kadar karmaşık bir iştir. API kültürünün olmadığı yazılım ortamlarında yapılan, kodu IDE’de açıp, sınıflar ve metotlar arasında gezinerek, kodu takip ederek, gerekirse debugger kullanarak, kodun detaylarını anlamaya çalışmaktır. Bu ise iğneyle kuyu kazmaktan farksızdır ve çok yanlışa sebep olur. Kodu anlama, bir metot için örneğin, “bu nasıl çalışıyor?” sorusuyla başlamaz, “bu ne yapıyor” sorusuyla başlar. Ne yaptığını anlamadan nasıl yaptığına girişmek ya da nasıl yaptığını anlayarak ne yaptığını çıkarmak, metodolojik olarak zaten yanlış yöntemlerdir, çünkü detayda kaybolursunuz, bu yüzden de çok yorucudur ve aşırı zaman tüketmenize sebep olur. Kod ile ilgili çalışmalarımızın ezici tarafının var olan kodu değiştirmek olduğu gerçeğini düşünürseniz, kodun ne yaptığını anlamanın ne kadar önemli olduğunu farkedersiniz.

API dokümantasyonu sadece yazılım geliştirenler açısından değil, bir yazılımı dışarıya geliştirtenler açısından da hayati öneme sahiptir. Yani bir kurum dış bir kaynakla, kendisine yazılım sistemi geliştirmesi için anlaşıp,  sonrasında geliştirilen bu sistemi içeriye alıp BT biriminin sorumluluğuna vermeyi düşünüyorsa, projeyi geliştiren takımdan sadece kod değil, kodun beraberinde API dokümantasyonunu da alması gereklidir. Kodun geliştirilmesi için tonla para harcayıp, sonra heyula hale gelmiş kod tabanını hiç bir API dokümantasyonu olmadan içeriye alıp yazılımcıların önüne yığmak bence hayret verici derecede problemli ve cesur bir iştir. Bunu yapan yazılım yöneticilerini anlamadığım gibi bu duruma karşı bir eleştiride bulunmayan, aslında olup biteni kavramamış, bu yüzden de itiraz edemeyen yazılımcılara da hep hayretle bakmışımdır. (Gerçi, itiraz edilse ne değişir diyebilirsiniz ama ben daha çok “problem olmaz, kodu devralırız” diye cesurca ortaya çıkan yazılımcıları kastediyorum.) Prensip şu olmalı: Kod varsa APIsinin dokümantasyonu da olmalı. Bu durum geliştirenler açısından da geliştirtenler açısından da devir alanlar açısından da böyledir. Çünkü kod sadece çalışıyorsa, anlaşılamıyorsa, değiştirilmekte zorlanılıyorsa, kandırıldınız demektir. Çünkü kodun çalışması, zaten olmazsa olmaz özelliğidir. Satın almayı planladığınız bir aracın çalışmasından farklı değildir. Eğer aracınızın lastiklerini değiştirmek çok zor ve  2500 TL’ye mal oluyor ve daha da kötüsü her gün değiştirmek zorunda kalıyorsanız, aracın nasıl çalıştığıyla ilgilenmezsiniz. Durum bence yazılım açısından bu kadar vahimdir.

Bence aynı durum kurumundaki BT biriminde yazılım geliştiren ya da yazılım evleri için de geçerlidir, hatta daha vahimdir. Bu amaçla yazılım geliştiren ya da geliştirten her yer ve herkes kullandıkları teknolojide var olan API dokümantasyonu yapmak için gerekli yapıları öğrenmeli ve uygulamaya koymalıdır.

Kodun API dokümantasyonu noktasında Java severlerin kullanabileceği JavaDoc isimli nefis bir yapı ve araç var. JavaDoc, Java ile yazılan kodların API dokümantasyonunu yakmak üzere oluşturulmuş bir standart ve bir araç. JavaDoc’un nasıl yazılacağı ve üretileceği ile ilgili daha önce burada ve burada iki yazı yazmış ve örnek üzerinden de açıklamıştım. Artık hemen her dilde API dokümantasyonuna yönelik standartlar ve araçlar oluşturuluyor. Bu anlamda eskilerden daha şanslıyız, yeter ki gerekliliğine inanalım ve vakit ayıralım.

Bir sonraki yazıda kodun iç dokümantasyonunu ele almak üzere.

 

Toplam görüntülenme sayısı: 2749

12 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
07 Nisan 2015

Webinar: Java EE Nedir? Kurumsal Java Uygulamaları Nasıl Geliştirilir? – I

Akin Eğitim ve Seminer

Sevgili Java severler 😉

9 Nisan 2015 Perşembe akşamı saat 20:30’da “Java EE Nedir? Kurumsal Java Uygulamaları Nasıl Geliştirilir?” başlıklı bir webinar gerçekleştirilecektir. Webinarı ben wereceğim.

Webinarda ele alınacak konular:

  • Java EE (Enterprise Edition) nedir? 
  • Java EE’de hangi bileşenler vardır? 
  • Kurumsal uygulamalar nasıl kurgulanır ve bu uygulamalarda Java EE nasıl kullanılır?

şeklindedir.

Webinara https://t.co/yqieA5k4bH adresinden kayıt olabilirsiniz. Webinarın yapılacağı adres, webinar günü saat 18:00’dan sonra kayıt olanlara gönderilecektir.

Hepinizi bekliyorum.

 

 

Toplam görüntülenme sayısı: 906

1 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
05 Nisan 2015

Algoritmalar Üzerine Online Eğitim

Akin Eğitim ve Seminer

Geçtiğimiz Salı akşamı Yaşar Safkan‘ın verdiği webinarla ilgili burada duyuruda bulunmuş ve sonrasında da burada webinarın videosunu yayınlamıştım. Webinar ya da daha tercih ettiğim şekliyle sohbet, son derece keyifli ve bilgilendirici olarak giderken sonlara doğru konuşmalar birden “algoritma” konusuna odaklandı. Yaşar hocam verdiği bir örnekle veri yapılarının seçilmesi ve etkin bir şekilde kullanılmasından bahsederken, benim de yaram olan matematik alt yapımızın zayıflığına parmak bastı ve uzatmayayım nihayetinde konu Yaşar hocamın “varsanız bir algoritma dersi başlatırız” diye açık bir şekilde meydan okumasıyla hepten ateşlendi. Katılan arkadaşların ciddi bir kısmı “görüyorum ve arttırıyorum” diye cevap verdi. Herkes “ilk ben katılırım” lafını ilk söyleyen olmak için yarışa girdi bir anda. Yaşar hocamın “tamam o zaman ama 10 kişi başlayıp da 7ye düşersek bırakırım” tehdidi, algoritma sevgisiyle dolu sinelerde herhangi bir korkuya dönüşmedi ve gençler iddialarına devam ettiler. Bu sırada ben araya girip, tamam o zaman varsanız, bu çatı altında böyle bir ders başlatmak üzere ben bir yazı yazıp bu eğitimin duyurusunu yapacağım dedim.

Evet işte burada duyuruyu yapıyorum. Online olarak algoritma eğitimi almak isteyenler, almaktan kasıt tabi ki almaya başlayıp sonra bırakanlar değil, ilgili sayfadaki bilgi formunu doldurup göndersinler. Ben başvuruları toplayacağım ve Yaşar hocamla paylaşacağım. Nihayetinde karar Yaşar hocama bağlıdır.

Son bir hatırlatma: Algoritmalar nihayetinde programlamanın çekirdeğidir. Algoritmik düşünme yetkinliği programlamanın en temel yetkinliğidir. Ve algoritmaları öğrenmek ciddi bir matematiksel çalışmadır, yüksek matematik ya da calculus yerine tamamen sayılara odaklıdır dolayısıyla formüllerden ve “formüle koy ve çöz”den ziyade sayma tekniklerine (combinatorics) dayanır ama nihayetinde çok zevklidir. Dolayısıyla algoritma öğrenmek hem zordur ve ciddi çalışma gerektirir hem de programlamanın temel yetkinlikleri için gereklidir.

Açıkçası sosyal medyada “programcı olmak için matematiğe gerek var mı” sorularının arttığı ve benim bu yazıyı yazma ihtiyacı hissettiğim günlerde böyle bir durumun olması beni sevindirdi.

Haydi gençler algoritmalara 🙂

Toplam görüntülenme sayısı: 1048

13 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
03 Nisan 2015

“Kod Kalitesi Üzerine” Webinarı – II

Akin BT, Eğitim ve Seminer

Sevgili JavaTürk takipçileri ve yazılım-severler 🙂

Dün akşam Yaşar Safkan ile “Kod Kalitesi Üzerine” isimli webinarımızı gerçekleştirdik. Webinarın viedo kaydına aşağıdan ulaşabilirsiniz.

 

[embedyt]https://youtu.be/RpUuu1MyUL8[/embedyt]

 

Webinarın sonlarında soru-cevap kısmında olay birden başka bir noktaya doğru gelişti ve detaylarını bir sonraki yazıda açıklayacağım hoş bir durum oldu.

Webinara 30 küsür kişi katıldı ve Yaşar hocamın bilgilendirici ve keyifli üslubuyla son derece verimli ve eğlenceli geçti. Videoyu seyredenler eminim aynı şeyleri hissedeceklerdir.

Keyifli izlemeler.

Toplam görüntülenme sayısı: 1065

10 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
«< 18 19 20 21 22 >»

Günlüğüme Hoşgeldiniz

Bu günlükte, Yazılım Mühendisliği, Bilgi Teknolojileri, Java, kişisel gelişim ve zaman zaman da diğer konulardaki düşüncelerimi sizlerle paylaşacağım. Umarım beğenir ve hoşça vakit geçirirsiniz.

Her türlü düşüncenizi, yorum olsun, beğeni ya da eleştiri olsun, bana iletmenizi rica ediyorum sizden. Ayrıca bana akin@javaturk.org adresinden ya da Twitter'dan ulaşabilirsiniz. Videolarıma da buradan ulaşabilirsiniz.

Teşekkür ederim.

Akın Kaldıroğlu

Rahat Okumak İçin

A Decrease font size. A Reset font size. A Increase font size.

Sosyal Medya

  • Twitter
  • Facebook
  • LinkedIn
  • Youtube

Son Twitlerim

→ Takip Etmek İçin

Abone Olun

Emalinizi girerek yazılardan haberdar olun.
Loading

Son Yazılarım

  • Udemy Eğitimlerim Üzerine
  • (başlıksız)
  • Clean Code / Temiz Kod Eğitimi Udemy’de
  • Java ile Nesne-Merkezli Programlamaya Giriş Eğitimi Udemy’de
  • Selsoft Video Eğitimleri
  • Spring ile Kurumsal Yazılım Geliştirme
  • Corona Günlerinde Design Patterns
  • Corona Günlerinde Java
  • JDK 10 ve “var” Özelliği
  • Onur Özcan
  • Analist ve İş Bilgisi
  • Farklı Dillerin Bakış Açısıyla Nesne-Merkezli Programlama
  • Java Nedir?
  • Bilgi Teknolojilerinde Yetenek Yönetimi – II: Tanımlar ve Eleştiriler – I
  • Alelade Hikayeler – II: Bir Başka Performans Problemi

Popüler Yazılar ve Sayfalar

  • Java’ya Nasıl Başlarım? Java’yı Nasıl Öğrenirim? – I
  • Nasıl Yazılımcı Olalım? – II: Hangi Bölümü Okuyalım?
  • Oracle’ın Java SE Sertifikaları: OCA, OCP ve OCM
  • Java Kurulumu ve İlk Programımız
  • İş Analisti İş Tanımı
  • Java Tutorial ya da Kendi Kendine Java Öğren
  • Nasıl Yazılımcı Olalım? – I: Üniversiteli mi Alaylı mı?
  • Tasarım Kalıpları
  • Java’ya Nasıl Başlarım? Java’yı Nasıl Öğrenirim?
  • UML Nedir?

Yazı Kategorileri

Yazı Takvimi

Haziran 2025
P S Ç P C C P
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« May    

Yazı Arşivi

Blogroll

  • Binnur Kurt'un Günlüğü
  • Ender'in Java Blogu
  • Erdem Seherler
  • Kızımın Günlüğü
  • Kurumsal Java
  • Levent Karagöl
  • Levent'in Java Blogu
  • Mert Can Akkan’s java tips,options, news…
  • Yaşar Safkan
  • Yasin Saygılı
  • Yazı Dünyası

Yazı Etiketleri

analiz Bilmek C Desen design pattern EJB Eğitim Fortran Hibernate Java Java'ya nasil baslarim Java dersleri Java EE Java Persistence API Java SE Java Sertifika Java Öğren Java öğreniyorum Java öğrenmek JPA Kalıp Kurumsal Java nesne nesne-merkezli No Silver Bullet object object-oriented Oracle Java Certifications pattern performans programlama programlama dilleri programlama nedir sertifika singleton tasarım tasarım deseni tasarım desenleri tasarım şablonu yazılım yazılım geliştirme Yazılım Mühendisliği yazılımın doğası yazılımın zorlukları Şablon

↑

© Java Günlüğüm 2025
Powered by WordPress • Themify WordPress Themes
 

Yorumlar Yükleniyor...