2008-09-16 16 views
1

ne avantajı, varsa aşağıdaki gibi biçimlendirme C kodu ile sağlanır: okumak ve almak için sadece zor üst sürümünü bulmakBu garip C kodu biçimi nedir?

while(lock_file(lockdir)==0) { 
    count++; 
    if(count==20) { 
     fprintf(stderr,"Can't lock dir %s\n",lockdir); 
     exit(1); 
    } 
    sleep(3); 
} 
if(rmdir(serverdir)!=0) { 
    switch(errno) { 
     case EEXIST: 
      fprintf(stderr,"Server dir %s not empty\n",serverdir); 
      break; 
     default: 
      fprintf(stderr,"Can't delete dir %s\n",serverdir); 
    } 
    exit(1); 
} 
unlock_file(lockdir); 

gibi daha tipik bir şeye karşı

while(lock_file(lockdir)==0) 
    { 
    count++; 
    if(count==20) 
     { 
     fprintf(stderr,"Can't lock dir %s\n",lockdir); 
     exit(1); 
     } 
    sleep(3); 
    } 
if(rmdir(serverdir)!=0) 
    { 
    switch(errno) 
     { 
     case EEXIST: 
      fprintf(stderr,"Server dir %s not empty\n",serverdir); 
      break; 
     default: 
      fprintf(stderr,"Can't delete dir %s\n",serverdir); 
     } 
    exit(1); 
    } 
unlock_file(lockdir); 

uzun bir bloğun dışındaki ifadeler için girinti seviyesi, özellikle birkaç yuvalanmış blok içeren uzun bloklar için.

Görebildiğim tek avantaj, sadece farklı olmak ve parmak izinizi yazdığınız kodda bırakmaktır.

Vim biçimlendirmesinin üst durumu ele almak için elle işlenmesi gerekeceğini görüyorum.

cevap

2

Bazı biçimlendirme ve yorumlama standartlarını izleyerek, öncelikle sizin tarafınızdan yazılmış olan kodu okuyacak ve düzenleyecek diğer kişilere saygınızı gösterirsiniz. Kuralları kabul etmiyorsanız ve bir şekilde ezoterik kod yazıyorsanız, en olası sonuç diğer insanlarla (programcılar) etkili bir şekilde iletişim kuramayacak olmanızdır. Yazılım sadece sizin tarafınızdan ve sizin için yazılırsa ve hiç kimse tarafından okunması istenmiyorsa, kod formatı kişisel tercihtir, ancak kaç tane modern yazılım sadece bir kişi tarafından yazılır?

+1

Ben bu kadar basit olsaydı. Sorun, rekabet eden standartlar. Bazıları, ama hepsi değil, eski (ya da daha doğrusu Ben'in ilkinin tarifi). Diğerleri ikincisini tercih eder. Ve her iki taraf da bu konuda dindar olur. – Randolpho

9

Hiçbir şey. Girinti ve diğer kodlama standartları tercih meselesidir.

4

Kişisel Tercihler Düşünürdüm? Sanırım bir dikey çizgide kod bloğu var, yani bir bakışta çalışmak daha kolay olur mu? Şahsen ben bir önceki çizginin altından direkt olarak başlamayı tercih ederim

1

Sadece başka bir stil - insanlar nasıl kod yazmak istediklerini kodlar ve kabul edilen bir stil (tercih ettiğim gibi değil). Braketlerin girintili olmadığı, ancak içindeki kodun daha yaygın olduğu bir tarz üzerinde çok fazla dezavantaj ya da avantajı olduğunu düşünmüyorum. Belki de bir tanesi kod bloklarını daha net bir şekilde sınırlandırarak söyleyerek haklı çıkartabilirdi.

3

Kod biçimlendirme kişisel bir zevktir. Okuması kolay olduğu sürece bakım için ödeme yapardı!

1

Bu biçimin "avantaj" elde edebilmesi için, karşılaştırmak üzere başka bir biçimde eşdeğer C koduna ihtiyacımız var!

Çalıştığım yerde, bu yerleşik bir katlama düzenleyicisi mekanizmasını kolaylaştırmak için bu girinti şeması kullanılır. Böylece, bu formatta temel olarak yanlış bir şey görmüyorum - belirli rasyonel sınırlar dahilinde, biçimlendirme kişisel tercih meselesidir.

5

Bana oldukça standart görünüyor. Yapacağım tek kişisel değişiklik, bir sonraki satırın başlangıcından ziyade, küme parantezlerini önceki satırın başlangıcıyla hizalamaktır, ama bu sadece kişisel bir seçimdir.

Neyse, baktığınız biçimlendirmenin stili C ve C++ için standart bir özelliktir ve kodun okunmasını daha kolay hale getirdiğinden ve özellikle girintinin düzeyini inceleyerek Eğer iç içe döngüler, Koşullamalar vb Örneğin ile nerede:

o neler olduğunu görmek oldukça kolaydır, ancak ifadeleri ise bu iç kod çok koyarsanız, bazen zor olabilir örnekte
if (x == 0) 
{ 
    if (y == 2) 
    { 
    if (z == 3) 
    { 
     do_something (x); 
    } 
    } 
} 

Tamam tutarlı bir girinti olmadan nerede olduğunuzu söylemek için.Örnekte

, çıkışta (1) deyimi pozisyonuna de bakabilirsiniz - böyle girintili olmasaydı, nerede söylemek zor olurdu. Olduğu gibi, bu büyük ifadenin sonunda olduğunu söyleyebilirsin.

25

üst örneği "Whitesmiths tarzı" olarak bildiğim. Wikipedia's entry on Indent Styles, avantaj ve dezavantajlarıyla birlikte çeşitli stilleri açıklar.

+0

Allman veya GNU'yu kendim tercih ederim, çünkü her zaman diğer türleri okuyarak() {layout. –

+0

GNU stilinin değerini görüyorum, özellikle iyi bir sözdizimi vurguladığınızda, parantezleri saymak için yeterince akıllıdır. Ayrıca 2x2 girinti ile 80 kolon 'somun' vurmak kolay. Ama şahsen K & R'ı tercih ederim ve 80 sütun somunu bir şeyleri yeniden gözden geçirmem gerektiğinde bana söyler. –

8

görüyorsanız girinti Whitesmiths style olduğunu. Bu "başlar uç Blok Sınırları" olarak Komple Kanununun birinci baskısında tarif ediyor. Bu stilin temel argümanı, C (ve Pascal) gibi dillerde if'un tek bir deyim veya bir bloğu yönetmesidir. Böylece, tüm bloğu, sadece içeriğinin değil, tutarlı bir şekilde girilerek if -statementine göre gösterilmesi gerekir. Ben ilk (90s) Bu kitabı okurken

XXXXXXXXXXXXXXX  if (test) 
    XXXXXXXXXXXX   one_thing(); 

XXXXXXXXXXXXXXX  if (test) 
    X      { 
    XXXXX     one_thing(); 
    XXXXX     another_thing(); 
    X      } 

Geri ben uygulamaya koydu zaman (bundan zevk vermedi gerçi ikna edici "başlar uç Blok Sınırları" için argüman bulundu Pascal'da). Onu daha da sevdim ve okumayı kafa karıştırıcı buluyorum. Ben Steve McConnel (neredeyse K&R olan Sun's Java Style) "Saf blok öykünen" dediği kullanarak sonunda.

XXXXXXXXXXXXXX X  if (test) { 
    XXXXXX    one_thing(); 
    XXXXXX    another_thing(); 
X      } 

Bu, Java'da programlamak için kullanılan en yaygın stildir (tüm gün yaptığım şey). Ayrıca "emülasyon" gerektirmeyen "saf blok" bir dil olan benim previous language benim en benzer. Tek deyim gövdesi yoktur, bloklar kontrol yapısı sözdiziminde içseldir.

IF test THEN 
    oneThing; 
    anotherThing 
END