Kodlama kuralları - Coding conventions

Kodlama kuralları , belirli bir programlama dili için, o dilde yazılmış bir programın her yönü için programlama stili , uygulamaları ve yöntemleri öneren bir dizi yönergedir . Bu kurallar genellikle dosya organizasyonu, girintiler , yorumlar , bildirimler , ifadeler , beyaz boşluk , adlandırma kuralları , programlama uygulamaları , programlama ilkeleri , temel programlama kuralları , mimari en iyi uygulamalar vb. konuları kapsar. Bunlar, yazılım yapısal kalitesi için kılavuzlardır . Yazılım programcıları derece artırmak yardım için bu kurallara uymayı tavsiye edilir okunabilirliği kendi içinde kaynak kodu ve yapmak yazılım bakımı daha kolay. Kodlama kuralları, yalnızca bir yazılım projesinin insan sürdürücüleri ve meslektaş gözden geçirenleri için geçerlidir . Sözleşmeler, tüm ekibin veya şirketin izlediği belgelenmiş bir kurallar dizisi içinde resmileştirilebilir veya bir bireyin alışılmış kodlama uygulamaları kadar gayri resmi olabilir. Kodlama kuralları derleyiciler tarafından uygulanmaz .

Yazılım bakımı

Yazılım bakım maliyetini azaltmak, kodlama kurallarına uymak için en sık belirtilen nedendir. Sun Microsystems, Java programlama dili için kod kurallarına girişlerinde aşağıdaki mantığı sunar:

Kod kuralları, programcılar için birkaç nedenden dolayı önemlidir:

  • Bir yazılım parçasının ömür boyu maliyetinin %40-80'i bakıma gider.
  • Neredeyse hiçbir yazılım, tüm ömrü boyunca orijinal yazar tarafından korunmaz.
  • Kod kuralları, yazılımın okunabilirliğini artırarak mühendislerin yeni kodu daha hızlı ve kapsamlı bir şekilde anlamalarını sağlar.
  • Kaynak kodunuzu bir ürün olarak gönderiyorsanız, oluşturduğunuz diğer ürünler kadar iyi paketlenmiş ve temiz olduğundan emin olmanız gerekir.

Kalite

Yazılım meslektaş incelemesi sıklıkla kaynak kodunun okunmasını içerir. Bu tür akran incelemesi, öncelikle bir kusur tespit faaliyetidir. Tanım olarak, yalnızca bir kod parçasının orijinal yazarı, kod gözden geçirilmek üzere gönderilmeden önce kaynak dosyayı okudu. Tutarlı yönergeler kullanılarak yazılan kodu, diğer gözden geçirenlerin anlaması ve özümsemesi daha kolaydır, bu da hata tespit sürecinin etkinliğini artırır.

Orijinal yazar için bile, tutarlı bir şekilde kodlanmış yazılım, bakımı kolaylaştırır. Bir kişinin, belirli bir kod parçasının neden belirli bir şekilde yazıldığının kesin mantığını, kod orijinal olarak yazıldıktan çok sonra hatırlayacağının garantisi yoktur. Kodlama kuralları yardımcı olabilir. Tutarlı boşluk kullanımı, okunabilirliği artırır ve yazılımı anlamak için gereken süreyi azaltır.

kodlama standartları

Kodlama konvansiyonlarının yüksek kaliteli kod üretmek için özel olarak tasarlandığı ve daha sonra resmi olarak kabul edildiği yerlerde, daha sonra kodlama standartları haline gelirler. Belirli stiller, yaygın olarak benimsenip benimsenmediğinden bağımsız olarak, otomatik olarak iyi kalitede kod üretmez.

Karmaşıklığın azaltılması

Karmaşıklık, güvenliğe aykırı bir faktördür.

Karmaşıklığın yönetimi aşağıdaki temel ilkeyi içerir: proje geliştirme sırasında yazılan kod miktarını en aza indirin. Bu, hem ön hem de aşağı yönde gereksiz maliyetleri önleyen gereksiz işleri önler. Bunun nedeni, daha az kod varsa, yalnızca uygulamayı oluşturmak için değil, aynı zamanda sürdürmek için de daha az iş olmasıdır.

Karmaşıklık, hem tasarım aşamasında (projenin nasıl mimarilendirildiği) hem de geliştirme aşamasında (daha basit koda sahip olarak) yönetilir. Kodlama basit ve basit tutulursa, karmaşıklık en aza indirilecektir. Çoğu zaman bu, kodlamayı mümkün olduğunca 'fiziksel' tutmaktır - çok doğrudan ve çok soyut olmayan bir şekilde kodlama. Bu, okunması ve takip edilmesi kolay olan en uygun kodu üretir. Karmaşıklık, basit işler için karmaşık araçlar kullanmayarak da önlenebilir.

Kod ne kadar karmaşıksa, hatalı olma olasılığı o kadar yüksek, hataların bulunması o kadar zor ve gizli hataların olma olasılığı da o kadar yüksek.

yeniden düzenleme

Yeniden düzenleme , kaynak kodunun okunabilirliği artırmak veya yapısını iyileştirmek için değiştirildiği bir yazılım bakım faaliyetini ifade eder . Yazılım, ilk sürümünden sonra bir ekibin belirttiği kodlama standartlarına uygun hale getirmek için genellikle yeniden düzenlenir. Yazılımın davranışını değiştirmeyen herhangi bir değişiklik, yeniden düzenleme olarak kabul edilebilir. Yaygın yeniden düzenleme etkinlikleri, değişken adlarını değiştirmek, yöntemleri yeniden adlandırmak, yöntemleri veya tüm sınıfları taşımak ve büyük yöntemleri (veya işlevleri ) daha küçük olanlara bölmek.

Çevik yazılım geliştirme metodolojileri , düzenli (hatta sürekli) yeniden düzenlemeyi planlayarak onu ekip yazılım geliştirme sürecinin ayrılmaz bir parçası haline getirir .

Görev otomasyonu

Kodlama kuralları, programcıların, işi bir yürütülebilir dosyada derlemekten başka bir amaç için kaynak kodu işlemek olan basit komut dosyalarına veya programlara sahip olmalarını sağlar. Mevcut proje ilerlemesini izlemek veya gelecekteki proje tahminleri için bir temel oluşturmak için yazılım boyutunu ( kod satırları kaynak) saymak yaygın bir uygulamadır .

Tutarlı kodlama standartları, sırayla, ölçümleri daha tutarlı hale getirebilir. Kaynak kodu yorumları içindeki özel etiketler genellikle belgeleri işlemek için kullanılır, iki önemli örnek javadoc ve doxygen . Araçlar, bir dizi etiketin kullanımını belirtir, ancak bunların bir proje içindeki kullanımı, kurala göre belirlenir.

Kodlama kuralları, işi mevcut yazılımı işlemek olan yeni yazılım yazmayı basitleştirir. Kullanımı statik kod analizi 1950'lerden bu yana sürekli büyüdü. Bu geliştirme araçları sınıfının büyümesinin bir kısmı, uygulayıcıların kendilerinin artan olgunluk ve karmaşıklığından (ve güvenlik ve güvenliğe modern odaklanmadan ) ve aynı zamanda dillerin kendi doğasından kaynaklanmaktadır.

Dil faktörleri

Tüm yazılım uygulayıcıları, çok sayıda bazen karmaşık talimatı organize etme ve yönetme sorunuyla boğuşmalıdır. En küçük yazılım projeleri hariç tümü için, kaynak kodu (talimatlar) ayrı dosyalara ve sıklıkla birçok dizin arasında bölünür . Programcıların birbiriyle yakından ilişkili işlevleri (davranışları) aynı dosyada toplaması ve ilgili dosyaları dizinlerde toplaması doğaldı. Yazılım geliştirme, tamamen prosedürel programlamadan (örneğin FORTRAN 'da olduğu gibi ) daha nesne yönelimli yapılara ( C++ 'da olduğu gibi ) doğru değiştikçe , tek bir (genel) sınıfın kodunu tek bir dosyada (genel) yazma uygulaması haline geldi. 'dosya başına bir sınıf' kuralı). Java bir adım daha ileri gitti - Java derleyicisi, dosya başına birden fazla genel sınıf bulursa bir hata döndürür.

Bir dilde bir sözleşme, başka bir dilde bir gereklilik olabilir. Dil kuralları, tek tek kaynak dosyaları da etkiler. Kaynak kodunu işlemek için kullanılan her derleyici (veya yorumlayıcı) benzersizdir. Bir derleyicinin kaynağa uyguladığı kurallar, örtük standartlar oluşturur. Örneğin, Python kodu Perl'den çok daha tutarlı bir şekilde girintilidir, çünkü boşluk (girinti) yorumlayıcı için gerçekten önemlidir. Python, Perl'in işlevleri sınırlandırmak için kullandığı ayraç sözdizimini kullanmaz. Girintideki değişiklikler sınırlayıcı görevi görür. İşlevleri sınırlandırmak için Perl veya C/C++'a benzer bir ayraç sözdizimi kullanan Tcl , aşağıdakilere izin vermez, bu bir C programcısı için oldukça makul görünür:

 set i = 0
 while {$i < 10} 
 {
    puts "$i squared = [expr $i*$i]"
    incr i
 }

Bunun nedeni, Tcl'de küme parantezlerinin yalnızca C veya Java'daki gibi işlevleri sınırlamak için kullanılmamasıdır. Daha genel olarak, sözcükleri tek bir argümanda gruplamak için kaşlı ayraçlar kullanılır. Tcl'de while kelimesi iki argüman alır, bir koşul ve bir eylem . Örnek olarak, yukarıda da ikinci bağımsız değişken olarak, eksik bir işlem (Tcl da sonu komutunu sınırlandırmak için satır karakteri kullandığından).

Ortak sözleşmeler

Çok sayıda kodlama kuralı vardır; sayısız örnek ve tartışma için bkz. Kodlama Stili . Ortak kodlama kuralları aşağıdaki alanları kapsayabilir:

Kodlama standartları arasında CERT C Kodlama Standardı , MISRA C , Yüksek Bütünlük C++ bulunur , aşağıdaki listeye bakın.

Ayrıca bakınız

Referanslar

  1. ^ "EditorConfig, geliştiricilerin farklı düzenleyiciler ve IDE'ler arasında tutarlı kodlama stilleri tanımlamasına ve sürdürmesine yardımcı olur" . EditörYapılandırma .
  2. ^ "Java Programlama Dili için Kod Kuralları: Neden Kod Kuralları Var" . Sun Microsystems, Inc. 1999-04-20.
  3. ^ Robert L. Glass: Yazılım Mühendisliğinin Gerçekleri ve Yanlışlıkları; Addison Wesley, 2003.
  4. ^ Tom Gillis. "Karmaşıklık güvenliğin düşmanıdır" .
  5. ^ Jeffries, Ron (2001-11-08). "Aşırı Programlama Nedir? : Tasarım Geliştirme" . XP Dergisi. Arşivlenmiş orijinal 2006-12-15 tarihinde.
  6. ^ Hoff, Todd (2007-01-09). "C++ Kodlama Standardı: Sınıf Dosyalarını Adlandırma" .
  7. ^ FIFE kodlama standartları
  8. ^ van Rossum, Guido (2006-09-19). Fred L. Drake, Jr (ed.). "Python Eğitimi: Programlamaya Doğru İlk Adımlar" . Python Yazılım Vakfı. Arşivlenmiş orijinal 2008-09-28 tarihinde . 2014-08-17 alındı .
  9. ^ Raymond, Eric (2000-05-01). "Neden Python?" . Linux Dergisi.
  10. ^ Tcl Geliştirici Xchange. "Tcl dil sözdiziminin özeti" . Aktif Durum.
  11. ^ Staplin, George Peter (2006-07-16). "Neden bir ayraç grubundan önce yeni bir satır başlatamıyorum" . 'Tcler's Wiki'.

kodlama standartlarının listesi

Diller için kodlama kuralları

Projeler için kodlama kuralları

  1. ^ "TIOBE - C Kodlama Standardı" . tics.tiobe.com . 2021-03-11 alındı .
  2. ^ "C++ Kodlama Standardı" . tics.tiobe.com . 2021-03-11 alındı .
  3. ^ "C# Kodlama Standardı" . tics.tiobe.com . 2021-03-11 alındı .
  4. ^ "TIOBE - Java Kodlama Standardı" . tics.tiobe.com . 2021-03-11 alındı .