Bu bulduğum tek kod biçimlendirme kuralı aslında okunabilirlik üzerinde belirgin bir etki yaratıyor ve neredeyse hiç çaba gerektirmiyor (kod düzenleyicinizin bununla bir kavga başlatmadığını varsayarak).
Tanımlamalarda / tanımlarda adların tutarlı bir konumda görünmesi iyi bir programlama dili tasarımıdır. Gerekçe açıktır: adın başlangıcını hemen bulmak için kullanabileceğiniz hoş bir görsel çapa (kıvırcık bir ayraç veya sadece asılı bir girinti) var. Bir dosyayı tararken adı bulmak için dili ayrıştırmanız gerekmez.
Bir belgeyi biçimlendirirken kullandığınızla aynıdır: yeni bir bölüm başlattığınızda, adı uzun bir cümle içinde bir yere gömülmemiş, farklılaştırılmamış olarak, kalın yazı tipine - genellikle kendi satırına - öne koyarsınız.
Erken C'nin çok kısa imzaları vardı: dönüş türleri isteğe bağlıydı ve imzadan sonra argüman türleri bildirildi. İsimler de çok kısa olma eğilimindeydi. Bu, adı dengeleyen ara sıra bir dönüş türünün etkisini azaltmıştır.
double dot(x, y);
Hala oldukça sindirilebilir.
C ++ bunu biraz daha kötüleştirdi. Bağımsız değişken türü belirtimlerini imzalara taşıyarak imzaları daha uzun hale getirdi. Bu sözdizimi daha sonra C'nin standardizasyonu sırasında kabul edildi.
static struct origin *find_origin(struct scoreboard *sb,
struct commit *parent,
struct origin *origin)
daha az sindirilebilir, ancak çok kötü değil. (Git'ten alıntı)
Şimdi uzun, açıklayıcı isimler ve parametrelerle belirlenmiş modern programlama uygulamalarını düşünün ve bu seçimin nasıl felaket haline geldiğini görün. Bir Boost başlığından bir örnek:
template <class A1, class A2, class A3, class A4, class A5, class A6>
inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&)
{
typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type result_type;
return result_type();
}
Genel kod yazıyorsanız, bunun gibi imzalar olağan dışı bile değildir. Çok fazla çaba harcamadan bundan daha kötü durumların örneklerini bulabilirsiniz.
C, C ++ ve türevleri Java ve C #, okunabilir bildirimlere / tanımlara sahip olmanın istisnaları gibi görünmektedir. Popüler selefleri ve akranları (Fortran, ALGOL, Pascal) sonuç türlerinden önce isimler yerleştirdiler ve neyse ki, haleflerinin çoğu (birkaçını adlandırmak için Go, Scala, TypeScript ve Swift) daha okunabilir sözdizimlerini seçti.