Bölüm 2 / 33
Yazılım Geliştirme ve Programlama Temelleri
Her dilde karşılaşılan programlama, kod organizasyonu ve yazılım tasarımı kavramları.
3 canlı örnek — seçerek incele
İlgili kavramlar: Variable, Function
Değişken & fonksiyon
const price = 2499;
function withTax(p) {
return p * 1.2;
}
withTax(price); // 2998.8Bilgisayara belirli işleri yaptırmak için yazılmış komutlar bütünü.
İnsan tarafından okunabilir biçimde yazılmış program kodu.
İşlemcinin doğrudan çalıştırdığı ikili komutlar.
Kaynak kodu başka bir dile veya makine koduna dönüştüren araç.
Kaynak kodu çalışma sırasında yorumlayarak yürüten sistem.
Bir programın çalışması için gereken yürütme ortamı.
Bir programlama dilinde kodun yazım kuralları.
Kodun yazımından ziyade ne anlama geldiği ve nasıl davrandığı.
Program içinde bir değeri saklayan isimlendirilmiş alan.
Çalışma sırasında değiştirilmemesi gereken değer.
Bir değerin sayı, metin, boolean veya nesne gibi türü.
Dil tarafından doğrudan sağlanan temel veri türü.
Bir değeri başka bir veri türüne dönüştürme işlemi.
Dilin tür dönüşümünü otomatik yapması.
Geliştiricinin tür dönüşümünü açıkça istemesi.
Toplama, karşılaştırma veya mantıksal işlem yapan sembol.
Değer üreten değişken, operatör ve fonksiyon birleşimi.
Programda bir işi gerçekleştiren tam komut.
Bir kod bloğunun çalışıp çalışmayacağını belirleyen mantıksal ifade.
Koşula göre farklı kod yolları çalıştıran kontrol yapısı.
Bir değere göre çok sayıda olası kod yolundan seçim yapan yapı.
- LoopT
Bir kod bloğunu belirli koşul veya sayı boyunca tekrar eden yapı.
- forT
Sayaç veya koleksiyon üzerinden kontrollü tekrar yapısı.
Koşul doğru kaldığı sürece çalışan döngü.
Döngüyü veya switch bloğunu erken sonlandırma komutu.
Döngünün mevcut turunu atlayıp sonraki tura geçme komutu.
Belirli bir işi yapan, tekrar kullanılabilir kod bloğu.
Fonksiyon tanımında beklenen girdi.
Fonksiyon çağrılırken gönderilen gerçek değer.
Fonksiyonun çağıran koda geri verdiği sonuç.
Bir değişken veya fonksiyonun erişilebilir olduğu alan.
Programın geniş bölümünden erişilebilen kapsam.
Sadece ilgili fonksiyon veya blok içinde erişilebilen kapsam.
Bir fonksiyonun oluşturulduğu dış kapsam değişkenlerini hatırlaması.
Bir fonksiyonun problemi küçülterek kendisini çağırması.
Nesnelerin veri ve davranış şablonunu tanımlayan yapı.
Bir sınıftan veya nesne tanımından oluşturulan veri-davranış örneği.
Bir nesnenin tuttuğu özellik veya veri alanı.
Bir nesne veya sınıfa bağlı fonksiyon.
Nesne oluşturulurken ilk değerleri hazırlayan özel metot.
Veri ve davranışı bir arada tutup iç ayrıntıları dışarıdan saklama yaklaşımı.
Bir sınıfın başka bir sınıfın özellik ve davranışlarını devralması.
Aynı arayüzün farklı nesnelerce farklı biçimde uygulanması.
Gereksiz ayrıntıları gizleyip önemli davranışları öne çıkarma.
Bir bileşenin sunması gereken metot veya davranış sözleşmesi.
Büyük davranışları küçük nesne ve fonksiyonları birleştirerek oluşturma.
Bir değer oluşturulduktan sonra değiştirilmemesi yaklaşımı.
Çalışma sırasında değiştirilebilen uygulama durumu.
Aynı girdide aynı çıktıyı üreten ve yan etkisi olmayan fonksiyon.
Fonksiyonun dış dünyayı, dosyayı, veritabanını veya ortak durumu değiştirmesi.
Normal program akışını bozan hata veya olağan dışı durum.
Hata oluşturabilecek kodu çalıştırıp hatayı kontrollü yakalama yapısı.
Hataları tespit etme, kaydetme, dönüştürme ve kullanıcıya uygun gösterme süreci.
Bir hataya gelene kadar çağrılan fonksiyonların zinciri.
Kod hatasının kaynağını sistematik olarak bulma ve düzeltme.
Debugger içinde kodun belirli satırda durmasını sağlayan işaret.
Davranışı değiştirmeden kodun yapısını ve okunabilirliğini iyileştirme.
İleride sorun yaratabilecek kötü tasarım veya bakım belirtisi.
Hızlı veya zayıf kararlar nedeniyle geleceğe bırakılan bakım maliyeti.
- DRYO
Aynı bilgi veya kodu gereksiz yere tekrar etmeme ilkesi.
- KISSO
Çözümü ihtiyacın gerektirdiğinden daha karmaşık yapmama ilkesi.
Henüz ihtiyaç olmayan özelliği önceden geliştirmeme ilkesi.
Nesne yönelimli tasarımda sürdürülebilirliği artıran beş temel prensip.
Tekrarlayan yazılım tasarım problemlerine adlandırılmış çözüm yaklaşımı.
Bir bileşenin bağımlılıklarını kendisi oluşturmak yerine dışarıdan alması.
İlgili kodları tek mantıksal birimde gruplayan dosya veya paket.
Yayınlanabilir ve kurulabilir kod modülü.
Başka uygulamalar tarafından kullanılan hazır fonksiyon ve bileşenler.
Uygulama akışını ve yapısını belirleyen geliştirme çatısı.
- SDKO
Belirli platform veya servis için geliştirme araçları ve kütüphaneler bütünü.
- APIT
İki yazılım bileşeninin birbiriyle nasıl iletişim kuracağını tanımlayan sözleşme.
Kod değiştirmeden uygulama davranışını belirleyen ayarlar.
Ekip veya ekosistem tarafından benimsenmiş ortak yazım ve yapı alışkanlığı.
Bir projede tekrar eden başlangıç kodu ve yapılandırma.
Proje veya modül için temel dosya yapısını otomatik üretme.
Eski teknoloji, zayıf test veya sınırlı dokümantasyonla bakım gerektiren mevcut kod.
Yeni sürümün eski kullanım biçimlerini bozmadan çalışabilmesi.
Bir özellik hâlâ çalışsa da gelecekte kaldırılacağının belirtilmesi.
Sürüm numarasını major.minor.patch mantığıyla anlamlandıran sürümleme sistemi.
Sürümler arasında eklenen, değişen ve düzeltilen özelliklerin kaydı.
Sistemin kurulumu, kullanımı, mimarisi ve kararlarını açıklayan yazılı kaynak.
Projenin amacı, kurulumu ve temel kullanımını anlatan başlangıç belgesi.
| Kavram | Seviye | Kısa açıklama |
|---|---|---|
| Program | T | Bilgisayara belirli işleri yaptırmak için yazılmış komutlar bütünü. |
| Source Code | T | İnsan tarafından okunabilir biçimde yazılmış program kodu. |
| Machine Code | O | İşlemcinin doğrudan çalıştırdığı ikili komutlar. |
| Compiler | T | Kaynak kodu başka bir dile veya makine koduna dönüştüren araç. |
| Interpreter | T | Kaynak kodu çalışma sırasında yorumlayarak yürüten sistem. |
| Runtime | T | Bir programın çalışması için gereken yürütme ortamı. |
| Syntax | T | Bir programlama dilinde kodun yazım kuralları. |
| Semantic | O | Kodun yazımından ziyade ne anlama geldiği ve nasıl davrandığı. |
| Variable | T | Program içinde bir değeri saklayan isimlendirilmiş alan. |
| Constant | T | Çalışma sırasında değiştirilmemesi gereken değer. |
| Data Type | T | Bir değerin sayı, metin, boolean veya nesne gibi türü. |
| Primitive Type | T | Dil tarafından doğrudan sağlanan temel veri türü. |
| Type Conversion | T | Bir değeri başka bir veri türüne dönüştürme işlemi. |
| Implicit Conversion | O | Dilin tür dönüşümünü otomatik yapması. |
| Explicit Conversion | T | Geliştiricinin tür dönüşümünü açıkça istemesi. |
| Operator | T | Toplama, karşılaştırma veya mantıksal işlem yapan sembol. |
| Expression | T | Değer üreten değişken, operatör ve fonksiyon birleşimi. |
| Statement | T | Programda bir işi gerçekleştiren tam komut. |
| Condition | T | Bir kod bloğunun çalışıp çalışmayacağını belirleyen mantıksal ifade. |
| if / else | T | Koşula göre farklı kod yolları çalıştıran kontrol yapısı. |
| switch / match | T | Bir değere göre çok sayıda olası kod yolundan seçim yapan yapı. |
| Loop | T | Bir kod bloğunu belirli koşul veya sayı boyunca tekrar eden yapı. |
| for | T | Sayaç veya koleksiyon üzerinden kontrollü tekrar yapısı. |
| while | T | Koşul doğru kaldığı sürece çalışan döngü. |
| break | T | Döngüyü veya switch bloğunu erken sonlandırma komutu. |
| continue | T | Döngünün mevcut turunu atlayıp sonraki tura geçme komutu. |
| Function | T | Belirli bir işi yapan, tekrar kullanılabilir kod bloğu. |
| Parameter | T | Fonksiyon tanımında beklenen girdi. |
| Argument | T | Fonksiyon çağrılırken gönderilen gerçek değer. |
| Return Value | T | Fonksiyonun çağıran koda geri verdiği sonuç. |
| Scope | T | Bir değişken veya fonksiyonun erişilebilir olduğu alan. |
| Global Scope | T | Programın geniş bölümünden erişilebilen kapsam. |
| Local Scope | T | Sadece ilgili fonksiyon veya blok içinde erişilebilen kapsam. |
| Closure | O | Bir fonksiyonun oluşturulduğu dış kapsam değişkenlerini hatırlaması. |
| Recursion | O | Bir fonksiyonun problemi küçülterek kendisini çağırması. |
| Class | T | Nesnelerin veri ve davranış şablonunu tanımlayan yapı. |
| Object | T | Bir sınıftan veya nesne tanımından oluşturulan veri-davranış örneği. |
| Property | T | Bir nesnenin tuttuğu özellik veya veri alanı. |
| Method | T | Bir nesne veya sınıfa bağlı fonksiyon. |
| Constructor | T | Nesne oluşturulurken ilk değerleri hazırlayan özel metot. |
| Encapsulation | O | Veri ve davranışı bir arada tutup iç ayrıntıları dışarıdan saklama yaklaşımı. |
| Inheritance | O | Bir sınıfın başka bir sınıfın özellik ve davranışlarını devralması. |
| Polymorphism | O | Aynı arayüzün farklı nesnelerce farklı biçimde uygulanması. |
| Abstraction | O | Gereksiz ayrıntıları gizleyip önemli davranışları öne çıkarma. |
| Interface | O | Bir bileşenin sunması gereken metot veya davranış sözleşmesi. |
| Composition | O | Büyük davranışları küçük nesne ve fonksiyonları birleştirerek oluşturma. |
| Immutability | O | Bir değer oluşturulduktan sonra değiştirilmemesi yaklaşımı. |
| Mutable State | O | Çalışma sırasında değiştirilebilen uygulama durumu. |
| Pure Function | O | Aynı girdide aynı çıktıyı üreten ve yan etkisi olmayan fonksiyon. |
| Side Effect | O | Fonksiyonun dış dünyayı, dosyayı, veritabanını veya ortak durumu değiştirmesi. |
| Exception | T | Normal program akışını bozan hata veya olağan dışı durum. |
| try / catch | T | Hata oluşturabilecek kodu çalıştırıp hatayı kontrollü yakalama yapısı. |
| Error Handling | T | Hataları tespit etme, kaydetme, dönüştürme ve kullanıcıya uygun gösterme süreci. |
| Stack Trace | O | Bir hataya gelene kadar çağrılan fonksiyonların zinciri. |
| Debugging | T | Kod hatasının kaynağını sistematik olarak bulma ve düzeltme. |
| Breakpoint | T | Debugger içinde kodun belirli satırda durmasını sağlayan işaret. |
| Refactoring | O | Davranışı değiştirmeden kodun yapısını ve okunabilirliğini iyileştirme. |
| Code Smell | O | İleride sorun yaratabilecek kötü tasarım veya bakım belirtisi. |
| Technical Debt | O | Hızlı veya zayıf kararlar nedeniyle geleceğe bırakılan bakım maliyeti. |
| DRY | O | Aynı bilgi veya kodu gereksiz yere tekrar etmeme ilkesi. |
| KISS | O | Çözümü ihtiyacın gerektirdiğinden daha karmaşık yapmama ilkesi. |
| YAGNI | O | Henüz ihtiyaç olmayan özelliği önceden geliştirmeme ilkesi. |
| SOLID | İ | Nesne yönelimli tasarımda sürdürülebilirliği artıran beş temel prensip. |
| Design Pattern | O | Tekrarlayan yazılım tasarım problemlerine adlandırılmış çözüm yaklaşımı. |
| Dependency Injection | O | Bir bileşenin bağımlılıklarını kendisi oluşturmak yerine dışarıdan alması. |
| Module | T | İlgili kodları tek mantıksal birimde gruplayan dosya veya paket. |
| Package | T | Yayınlanabilir ve kurulabilir kod modülü. |
| Library | T | Başka uygulamalar tarafından kullanılan hazır fonksiyon ve bileşenler. |
| Framework | T | Uygulama akışını ve yapısını belirleyen geliştirme çatısı. |
| SDK | O | Belirli platform veya servis için geliştirme araçları ve kütüphaneler bütünü. |
| API | T | İki yazılım bileşeninin birbiriyle nasıl iletişim kuracağını tanımlayan sözleşme. |
| Configuration | T | Kod değiştirmeden uygulama davranışını belirleyen ayarlar. |
| Convention | T | Ekip veya ekosistem tarafından benimsenmiş ortak yazım ve yapı alışkanlığı. |
| Boilerplate | T | Bir projede tekrar eden başlangıç kodu ve yapılandırma. |
| Scaffolding | T | Proje veya modül için temel dosya yapısını otomatik üretme. |
| Legacy Code | O | Eski teknoloji, zayıf test veya sınırlı dokümantasyonla bakım gerektiren mevcut kod. |
| Backward Compatibility | O | Yeni sürümün eski kullanım biçimlerini bozmadan çalışabilmesi. |
| Deprecation | O | Bir özellik hâlâ çalışsa da gelecekte kaldırılacağının belirtilmesi. |
| Semantic Versioning | O | Sürüm numarasını major.minor.patch mantığıyla anlamlandıran sürümleme sistemi. |
| Changelog | T | Sürümler arasında eklenen, değişen ve düzeltilen özelliklerin kaydı. |
| Documentation | T | Sistemin kurulumu, kullanımı, mimarisi ve kararlarını açıklayan yazılı kaynak. |
| README | T | Projenin amacı, kurulumu ve temel kullanımını anlatan başlangıç belgesi. |
Bölüm uygulamaları
Bu bölümü bitirmeden önce şunları deneyin veya açıklayın.
- Kötü isimlendirilmiş ve tekrar içeren küçük bir kod parçasını refactor edin.
- Bir sınıf, bir fonksiyon ve bir API için kısa dokümantasyon yazın.
- Semantik sürümleme kullanarak üç farklı değişiklik için uygun sürüm numarası belirleyin.