Neden bu kadar çok kod böyle? - sayfa 3

 
RaptorUK :

Ancak bu, sözdizimi veya mantık konusunda yardım isterlerse kodun " . . sözdizimsel ve mantıksal olarak doğru olmayacağı" anlamına gelmez mi? ?

Evet haklısın. Ancak, daha fazla (veya daha az) etkili kodlama stilleri/pratiklerini tartışma bağlamında, en önemli husus, kullanılan kodlama stilinden bağımsız olarak kodun sözdizimsel ve mantıksal olarak doğru olmasıdır. Sanırım bunu söylemenin başka bir yolu, stilin sözdizimsel ve mantıksal olarak doğru koda yol vermesi gerektiğidir - birincil soru, kodun iyi görünüp görünmediği ve kolayca okunabilir olup olmadığı değil, daha ziyade, görevi gerçekleştirmek için sözdizimsel ve mantıksal olarak doğru olup olmadığıdır. bunun için yazılmıştır. :)

// yorumlar konusunda da katılıyorum. Hem orijinal programcının zihnini kodun çeşitli bölümleriyle ilgili olarak yenilemek hem de tamamlama/uygulama sonrası diğerlerinin kodu anlamalarına yardımcı olmak/yardımcı olmak için asla çok fazla // yorum olamaz.

 
Thirteen :

Evet haklısın. Ancak, daha fazla (veya daha az) etkili kodlama stilleri/pratiklerini tartışma bağlamında, en önemli husus, kullanılan kodlama stilinden bağımsız olarak kodun sözdizimsel ve mantıksal olarak doğru olmasıdır. Sanırım bunu söylemenin başka bir yolu, stilin sözdizimsel ve mantıksal olarak doğru koda yol vermesi gerektiğidir - birincil soru, kodun iyi görünüp görünmediği ve kolayca okunabilir olup olmadığı değil, daha ziyade, görevi gerçekleştirmek için sözdizimsel ve mantıksal olarak doğru olup olmadığıdır. bunun için yazılmıştır. :)

Ah tamam, ne dediğini anlıyorum. . . güzel bir şekilde sunulan kod işe yaramazsa hiçbir işe yaramaz. . . . ama belki düzeltmek daha kolaydır?
 
RaptorUK :
Ah tamam, ne dediğini anlıyorum. . . güzel bir şekilde sunulan kod, işe yaramazsa hiçbir işe yaramaz. . . . ama belki düzeltmek daha kolaydır?
Doğru. Başka bir deyişle, büyük ölçüde programcının seçimi olan kodlama stilleri/uygulamaları ve sunum, bir amaca ulaşmanın bir yoludur (son, sözdizimsel ve mantıksal olarak doğru koddur). :) Kod, programcı tarafından (ve daha sonra kodu yazmayanlar tarafından) kolayca okunup anlaşılabildiğinde, sözdizimsel ve/veya mantıksal hataları tespit etmek ve düzeltmek çok daha kolaydır.
 

Çoğu kodlama stilinin kodlayıcının istediği veya ihtiyaç duyduğu kadar okunabilirliğe izin verdiğini düşünüyorum, kodum bittiğinde ve çalıştığında kapatıyorum, ancak paylaşmam gerekirse birkaç satır boşlukla tekrar açmak kolaydır veya Tartış bunu. Bir kodlama formatının, eksik bir kümenin kolay tanımlanmasını ve birden fazla dalı olan karmaşık bir if else ağacı olduğunda, if else çiftlerinin kolay tanımlanmasını desteklemesi gerektiğini düşünüyorum. K&R stilini asla benimsemedim, bu yüzden K&R stili kodlayıcıların bunu nasıl yaptığını görmek istiyorum.

 
SDC :

Kodum bittiğinde ve çalıştığında kapatıyorum, ancak paylaşmam veya tartışmam gerekirse, birkaç satır boşlukla tekrar açmak kolaydır.

Neden hiç kapatmıyorsun? Ezilmiş kodun amacını gerçekten anlamıyorum. Paylaşmak/tartışmak için açmanız gerekiyorsa, bu ne anlama geliyor?

SDC :

Bir kodlama formatının, eksik bir kümenin kolay tanımlanmasını ve birden fazla dalı olan karmaşık bir if else ağacı olduğunda, if else çiftlerinin kolay tanımlanmasını desteklemesi gerektiğini düşünüyorum. K&R stilini asla benimsemedim, bu yüzden K&R stili kodlayıcıların bunu nasıl yaptığını görmek istiyorum.

K&R stili için, Alt parantez, koşul eşleşmesiyle hizalanır. kişisel olarak kullanıyorum

1. Tutarlı girinti

2. Tek ifade yan tümceleri için ya ayraç ve girinti yapın VEYA onları çaprazsız koşula göre ayarlayın, yani.

 if (flag) {
   i++;
}

OR

if (flag) i++;

3. Parantezlerle eşleşen düzgün bir programcı düzenleyicisi kullanın.

Eşleşen parantezler sorun değil - linux çekirdeğinin çoğu bu tarzda yazılmıştır ve bu Java standardıdır. Allman stilinin çekiciliğini K&R stilinde olduğu gibi görsem de, kodun düzenini bozmak için koşuldan sonra genellikle fazladan bir boş satır eklerdim. Hmm dönüşmüş olabilirim :)

 
ydrol :

Neden hiç kapatmıyorsun? Ezilmiş kodun amacını gerçekten anlamıyorum. Paylaşmak/tartışmak için açmanız gerekiyorsa, bu ne anlama geliyor?

K&R stili için, Alt parantez, koşul eşleşmesiyle hizalanır. kişisel olarak kullanıyorum

1. Tutarlı girinti

2. Tek ifade yan tümceleri için ya ayraç ve girinti yapın VEYA onları çaprazsız koşula göre ayarlayın, yani.

3. Parantezlerle eşleşen düzgün bir programcı düzenleyicisi kullanın.

Eşleşen parantezler sorun değil - linux çekirdeğinin çoğu bu tarzda yazılmıştır ve bu Java standardıdır. Allman stilinin çekiciliğini K&R stilinde olduğu gibi görsem de, kodun düzenini bozmak için koşuldan sonra genellikle fazladan bir boş satır eklerdim. Hmm dönüşmüş olabilirim :)

Ekranda daha az yer kaplaması için kapatıyorum. Ekrana sığdırabildiğim kadarını aynı anda görmeyi seviyorum. Bir ayraç eşleştiriciye ihtiyacım yok, onu biçimlendiriyorum, böylece bir parantezin arkasına bir imleç yerleştirirsem ve ok tuşuyla çizgiler boyunca dikey olarak çalıştırırsam, başka bir ayraç dokunduğunda onun çifti olur. eğer onu bir başkasının arkasına yerleştirirsem ve aynı şeyi yaparsam, bir if'ye dokunduğunda if else çiftidir.

Kodun bu bölümünde, üçüncü else'nin birinci if'yi, ikinci else'nin ikinciyi, eğer birincisi, üçüncü if'i eşleştirdiğini görmek kolaydır, çünkü birbirinin arkasındaki küme(ler) karşılık gelen if kümesinin arkasında dikey olarak hizalanır. Aynı şekilde, hangi if'nin başka birine sahip olmadığını görmek kolaydır, çünkü if kümelerinin her biri, diğerinin arkasındaki kümede karşılık gelen kapatma ayracı ile dikey olarak hizalanır. Sırf hoşuma gittiği için herkesin kodu bu şekilde biçimlendirmesini önermiyorum, ama benim için kompakt ve mantıklı.

      if (downtrend)
      { if (High[i] < LineDownBuffer[i+ 1 ])
       { if (DeMarkerHighBuffer[i] > LineDownBuffer[i+ 1 ])
        {LineDownBuffer[i] = LineDownBuffer[i+ 1 ];
        } else
        { if (DeMarkerHighBuffer[i] < LineDownBuffer[i+ 1 ])
         {LineDownBuffer[i] = DeMarkerHighBuffer[i];
       }}} else
       { if (High[i] > LineDownBuffer[i+ 1 ])
        {LineDownBuffer[i] = LineDownBuffer[i+ 1 ];
         LineUpBuffer[i] = DeMarkerLowBuffer[i];
         downtrend = false ;
         uptrend = true ;
      }}} else
 
SDC : Çoğu kodlama stilinin kodlayıcının istediği veya ihtiyaç duyduğu kadar okunabilirliğe izin verdiğini düşünüyorum, kodum bittiğinde ve çalıştığında kapatıyorum, ancak paylaşmam gerekirse birkaç satır boşlukla tekrar açmak kolay bunu tartışın veya tartışın. Bir kodlama formatının, eksik bir kümenin kolay tanımlanmasını ve birden fazla dalı olan karmaşık bir if else ağacı olduğunda, if else çiftlerinin kolay tanımlanmasını desteklemesi gerektiğini düşünüyorum. K&R stilini asla benimsemedim, bu yüzden K&R stili kodlayıcıların bunu nasıl yaptığını görmek istiyorum.

Bunu k&r kullanan her kodlayıcı için cevaplayamam. Dürüst olmak gerekirse, biçiminize ne kadar çok bakarsam, o kadar çok hoşuma gidiyor. Allman stilini benimsemiş olsaydım, kendimi kesinlikle sizin değişiklik sürümünüzü kullanırken görebilirdim. Parantezler birbirinin altında sıralanır, bütün bir satırı kaplayan açma ve kapama parantezlerinden kurtulur. İmlecinizi if üzerine i üzerinde çalıştırabilir ve eksik parantezleri, sekme/girinti boyutu kuralları hakkında endişelenmeden, kompakt mod {kodlarınızın çoğunu ekranda görün} bulabilirsiniz. Yani evet oldukça havalı, sadece ilk bakışta, çünkü buna alışık değilim, kafa karıştırıcı geldi. Ve meselenin kalbi burada.

Bana öyle geliyor ki, Amerikalı kodlayıcıların çoğu, Whitesmiths stilinin Avrupalılar arasında popüler göründüğü [KnR & Allman]'ı benimsiyor. Whitesmith ayrıca Mt4 için Varsayılan stildir. Şimdi bu tarzların hiçbirinde yanlış bir şey yok, sadece birine yardım ederken kendime K&R tarzımı görmezden gelmeyi ve daha fazla Whitesmith düşünmeyi hatırlatmam gerekiyor. Bu veya bir kod biçimlendirici kullanın.

Neden birisi "ağaçlarsa karmaşık" yazmak istesin ki beni aşar. Birisi tüm White_Space'i ve karmaşık bir if_nest içindeki biçimlendirmeyi terk ettiğinde, bir Snake | spagetti | Sayfa boyunca ZigZag. İlk if 1. satırda başlar ve 300. satırda biter, bu satırların yaklaşık 150 veya %50'si parantez ile tutulmaktadır. "Karmaşık eğer başka ağaçlarsa" yerine neden-sadece bir fonksiyon yaratmayın. Sonra line_1'in line_1 üzerinde if( false ){ return; ile bitmesine izin verin. }.

 

Teşekkürler ubzen Birisinin formatımı beğenmesine sevindim lol. if else'i çok kullanırım, çünkü muhtemelen kodlamaya ilk başladığımda birisi bana başkasının hızlı kod yapıp yapmadığını söylediğinden, ben de böyle yapmayı alışkanlık haline getirdim.

 
SDC :

Teşekkürler ubzen Birisinin formatımı beğenmesine sevindim lol. if else'i çok kullanırım, çünkü muhtemelen kodlamaya ilk başladığımda birisi bana başkasının hızlı kod yapıp yapmadığını söylediğinden, ben de böyle yapmayı alışkanlık haline getirdim.

Kişisel bir şey değil


Böyle zamanlarda herkesin üzerinde çalıştığı resmi ve zorunlu bir standardın olması iyi olurdu. . . . o zaman hepimiz aynı şeyi yapıyor olurduk ve hepimiz kodunuzu isteriz. Ve siz sormadan önce, hayır, Whitesmiths stilime bağlı kalacağım. . . en azından artık ne diyeceğimi biliyorum teşekkürler ubzen

 
SDC ve RaptorUK'a hoş geldiniz. Kodlama, tartışmayı Winning_EA'dan çok daha kolay hale getirir. :)