it-swarm.asia

Sekmeler ve boşluklar - her durumda, her durumda, hiç uygun girinti karakteri nedir?

Drupal.org'da barındırılan kodun kodlama standartları, kodu girintilemek için iki boşluk kullanılmasını önerir; diğer siteler kodu girintilemek için sekmeler kullanmanızı önerir.

Her şey ve her durumda uygun girinti karakteri nedir? Lütfen verdiğiniz yanıtı açıklayınız.

84
kiamlaluno

alanlarda

Sekme, ortamınıza bağlı olarak farklı sayıda sütun olabilir, ancak boşluk her zaman bir sütundur.

Kaç boşluk (veya sekme) girinti oluşturduğunda, kodunuz boyunca tutarlı olmak, herhangi bir sekme durağı değerini kullanmaktan daha önemlidir.

129
user8

Tab

Şimdi, elbette, tutarlılık ikisinden birden önemlidir ve iyi bir IDE farklılıkları ihmal edilebilir kılar.

Sekmeleri tercih ederim:

  • Özellikle girinti amaçlı bir karakter
  • Girinti boyutunda farklı tercihlere sahip geliştiricilerin, kodu değiştirmeden kodun nasıl göründüğünü değiştirmelerine izin verir (veri ayrımı ve meşhur kazanç için sunum!)
  • Sekmelerle bir şeyi yarı girinti yapmak imkansızdır. Bu nedenle, 3 boşluk kullanan bazı web sitelerinden kodu 4 boşluklu girintili dosyanıza kopyaladığınızda, yanlış hizalama ile uğraşmanıza gerek kalmaz.
248
Fishtoaster

Satır başlangıcını girintilemek için sekmeleri kullanın, girinti düzeyi başına bir sekmesini kullanın ve herkesin ne kadar geniş olmasını istediklerini seçmesine izin verin.

Bir satıra içindeki karakterleri sıralıyorsanız boşluk kullanın, böylece sekme boyutuna bakılmaksızın her zaman hizalanırlar.

Ve bu aptal şeyin ilk başta bir sorun haline gelmesine izin veren tüm erken yazılım yazarlarını bulup yumruklayın.
(Cidden, bu neden tartışılan bir şey bile? Sonra bana satır sonları için birden fazla karakter kullanmak istediğinizi söyleyeceksiniz!)

117
Peter Boughton

Tabs

  • hataların daha belirgin olmasına izin verin , mekanlara mikro yönetmek can sıkıcıdır.
  • tutarlıdır , yanlış yorum yapmadığınız sürece sadece girinti için kullanılırlar.
  • özelleştirilebilir , düzenleyicinin seçeneklerinde ne kadar geniş olduklarını belirtebilirsiniz.
  • daha üretken , neden 1 sekmesine basabileceğinizi 4 boşluk yazın.
  • birden çok boşluktan daha az boyut alır.
  • bir boşluktan daha fazla yer kaplar.
  • geçmesi daha az zaman alır .
  • IDE'lerde daha iyi çalışma eğilimindedir.

Sekmelerin tamamen işe yaramadığı yerlerde boşluklar kullanılmalıdır.

Parametreleri ve yorumları hizalamak için bile, sekmeler hala daha iyi çalışır .

76
Tamara Wijsman

Sekmelerle ilgili tüm argümanlar teoride harika. Fakat...

Teoride, pratik ve teori aynıdır. Pratikte öyle değiller.

Evet, sekmelerle girinti seviyenize karar verebilirsiniz. Ve evet, şeyleri hizalamak için bir sekme ve boşluk kombinasyonu kullanabilirsiniz. İdeal bir dünyada

Gerçekte, boşluklar ve sekmeler arasındaki farkı göremezsiniz, kodu hareket ettirirken her zaman karışıyorlar ve kodu 8 sütuna ayarlanmış sekmeleri olan başka bir programda görüntülemek bir sıkıntıdır.

Sekmeler kullanırdım. Sonra bir ekibin parçası olarak çalışmaya başladım ve kodu paylaştım. Hızla mekanların savunucusu oldum. Bu yüzden sekmelerin ütopyasına sempati duyabilsem de, boşluk kullanmadığımı hayal edemiyorum.

41
g .
31
Fishtoaster

Kazanmak için sekmeler.

23
Joel Barsotti

Ben kesinlikle. nefret. 4. boşluklar.

Neden? Temelde kodumda bir klavye ile gezinmekten ve sürekli olarak bir girintinin üzerinden geçmek için leftleftleftleft tuşuna basmaktan bıktığım için. Bu, Notepad ++ 'ın ilk sürümlerinden ve hatta bir format düğmesi gibi bir şeyin olmadığı düz Windows notepad'den doğdu. Diğer şeylerin yanı sıra 4'ü her yerde kullandığımda insanların sadece 3'ü kullanacakları çok fazla sorun yaşadım.

Diğer neden sekme karakteri özellikle girinti için var ve daha sonra navigasyon için kabul edildi. Basit bir space işe yaradığında neden spacespacespacetab yapıyoruz? Basit bir sekme ve bir tercih seçeneği işe yaradığında neden IDE'lerin 2-5 aralıklı kod ve format ile doğru bir şekilde ilgilenmesi gerekir?

Ne yazık ki ben azınlık benim.

20
TheLQ

Her geliştirici sekme başına girinti miktarını kontrol edebildiğinden, kişisel olarak her şeyde sekmeleri kullanmayı seviyorum. Bu şekilde ekran esnekliği elde edersiniz.

Bununla birlikte, genellikle başlangıçta dosyada kodlama stili ne olursa olsun taklit ederim (bakım işi yapmak için çok zaman harcadığım için).

12
Brandon

Doğru girinti diye bir şey olduğunu düşünmüyorum (en azından küçük savaş olmadan).

Şahsen dört mekanı severim. Kodları daha hızlı okumama izin veriyorlar ve her editörde aynı görünüyorlar - hatta Vi.

10
Josip Medved

Boşluklar, çünkü yorumları kodun sağına veya işlev parametre listelerine veya karmaşık çok satırlı ifadelere veya bu türden şeylere hizaladığınızda güzel çalışmanızın herkes için doğru görünmesini istiyorsunuz. Sekmeler kullanırsanız ve kullanıcıların sekme tablolarını farklı şekilde ayarlamalarına izin verirseniz, kod girintisinin en basit durumları dışındaki herkes için hizalamayı bozarlar.

Ayrıca, dünyadaki herkesin boşluk girintili dosyalarda bile girintiyi, girintisizliği ve "sekme durakları" arasında gezinmeyi önemsiz kılan vim kullanması gerektiği açıktır.

8
hobbs

Sekmeler, tanım gereği girinti için kullanılan doğal ve ortodoks seçimdir.

Ne yazık ki, sekmeler düzensiz olarak uygulandığından, tek gerçek dünya çözümü 4 boşluktur.

6
Wizard79

Açıkçası bir kombinasyon yaklaşımına ihtiyacınız var.

Kodu diğer geliştiricilerle paylaşıyorsanız, standartlaştırmanız gerekir ve bu imkansız olduğundan (koff koff), herkesin dört boşluk yapması gerekir.

O zaman bu konuda aptal olmayacak kadar akıllı bir editöre ihtiyacınız var, girintili gibi önündeki dört boşluklu bir çizgiye bakması gerektiğini bilmek. Herhangi bir modern IDE veya programcı editörü kodları sekmeler yerine boşluklarla otomatik olarak aktarabilir.

4
Dan Ray

Neden birisi bunu uygulayamaz:

  • kod, söz konusu sistem için faydalı kompakt bir formatta saklanır
  • her geliştirici kodu açtığından, tam olarak istedikleri şekilde biçimlendirilir
  • işini bitirdiklerinde, kompakt biçime geri dönün

Herkes 'kendi' biçimini gördüğü için mutlu

Bu çok zor mu?

4
adolf garlic

Ben 4 uzaylı biriyim, sekmeler tutarlı değil.

3
Walter

Cevap, her durum için tek bir doğru girinti karakteri bulunmamasıdır. Karakterleri kullanarak biçimlendirme esnek değildir ve bir takım içinde farklı stiller kullanıldığında çakışmalara neden olabilir.

Kodu farklı biçimlendirme stilleriyle kusursuz ve esnek bir şekilde biçimlendirmenin tek yöntemi, bunu neredeyse herhangi bir girinti karakteri olmadan yapmaktır. Bunu desteklediğini bildiğim tek kod editörü aşağıdaki örnekte kullanılan koddur:

sanal biçimlendirme göstermek için, aşağıdaki ekran görüntüsü bu girinti yöntemini kullanan bir XSLT düzenleyicisinden * (ayrıca kısa bir video burada ). İçerikteki tek sekme veya boşluk karakterlerinin net bir şekilde görülmesini sağlamak için, XSLT'deki her karakter sarı renkle vurgulanmıştır. Kod girintisi, editörün, beyaz bir arka plana sahip olan sol kenar boşluğunu ayarlayan oluşturma sistemi tarafından işlenir.

enter image description here

Baştaki tek boşluk karakteri Kitaplar satırlarından önce gelir, çünkü bu kod değil sabit metin içeriğidir, bu boşluk karakterleri korunmalıdır.

Sanal biçimlendirme ile, kaynak dosyadaki karakterleri etkilemeden, girinti genişliğini ortama ve girinti stiline uyacak şekilde seçersiniz. Kodun aşağıda gösterildiği gibi düzleştirilmiş bir görüntüsüne ihtiyacınız varsa girinti genişliğini 0 olarak da ayarlayabilirsiniz:

enter image description here

Bunu boşluk karakteri biçimlendirmesiyle karşılaştırmak için, sanal biçimlendirmeden düzenleyicide açılan aynı XSLT, düzenleyicinin otomatik biçimlendiricisi tarafından buna dönüştürülür:

enter image description here

Yukarıdaki ekran görüntüsünde daha büyük boş sarı bloklar, geleneksel düzenleyicinin formatlayıcısının eklediği boşluk karakterlerini açıkça göstermektedir. Ne yazık ki, bunlar artık gerçek içerikten ayırt edilemez, bu nedenle XSLT'nin bu sorunu düzeltmek için değiştirilmesi gerekir.

Özet

XSLT muhtemelen aşırı bir durumdur, ancak bu ilke birçok programlama dili için geçerlidir: İçerik için karakterler kullanılmalı ve biçimlendirme konusunda alternatif bir yöntem aranmalıdır.

** Açıklama: Sanal biçimlendirmeye sahip XSLT Editör kendi şirketim tarafından geliştirilmiştir *

3
pgfearo

Şu ana kadar bahsedilmemiş: Girintinin önemli olduğu diller (Python, Haskell) vardır. Ancak 1 karakter, boşluk veya sekme olsun 1 karakter olarak sayılır; böylece, sekmeler kullanırsanız, derleyicinin gördüğü girinti ekranda gördüğünüzle aynı olmayabilir.

Bu nedenle, Haskell gibi dillerde boşluk şarttır. Makefiles'de TABS şarttır. Diğerlerinde, bu kişisel bir zevk meselesidir ve günümüzde çok fazla değil - her iyi editörde "boşluklara sekmeler" ve "boşluklara sekmeler" komutu vardır.

3
Ingo

Alanlar veya Sekmeler - Atwood'un gerçekte söylediği şey, bir şey seçmek ve projenizde tutarlı olmaktır. Kod biçimlendirmenin tek kutsal kasesi, tutarlı olduğundan emin olmaktır, böylece kodunuzu koruyan psikopat, durumu kalıcı olarak düzeltmek zorunda hissetmez.

Bununla birlikte, Python veya boşlukların gerçek bir programlama yapısı olduğu başka bir dilde çalışıyorsanız, sekmeleri kullanmayı hayal edemiyorum.

3
Noah Goodrich

Görünüşe göre sekmeler Delphi içinde karışıklık şeyler kadar Delphi sekmeleri kullanmıyorum.

Ancak Emacs kullanarak her şeyi yaparım ve her zaman sekmeleri kullanın çünkü sekmelerim tam olarak gitmelerini istediğim yere gider.

3
Peter Turner

Eskiden boşluk kullanıyordum, ama son zamanlarda sekmeleri kullanıyordum çünkü sonunda fark ettiğimde Eclipse böyle ayarlanmıştı. Ekibimdeki diğer tüm geliştiriciler Eclipse kullanıyor, bu yüzden onları zaten uzun süredir kullandığımızı fark ettiğimizde sekmelerde standartlaşmak mantıklıydı ve mekanlara geçişi zahmete sokmak için hiçbir neden yoktu. Ne kadar sorun çıkardığına şaşırdım.

Görüntülenen sekme boyutunu IDE) öğenizde 3 veya 5 karakter olarak ayarlamak boşluklarla girintili kod bölümleri (bu günlerde neredeyse her zaman 4) ile sekme girintili olanlar arasında ayrım yapmayı büyük ölçüde basitleştirir.

2
Shabbyrobe

Çok sayıda argüman zaten verildi, ancak kimse gelecekte nereye gidebileceğimizden bahsetmedi .

Sekmeler veya boşluklar!

İdeal olarak kod veri olarak düşünülmeli ve belirli bir metin biçimlendirmesinde saklanmamalıdır. Herhangi bir geliştirici kendi tercih ettiği görünümü uygulayabilir. Ayrıca, bu görünüm yalnızca metinle sınırlı olmamalı, tablolar, renk seçiciler ve matematiksel formüller içerebilir.

Bu fikir çok ileri getirilmedi. JetBrain'in Dil Odaklı Programlama editör Meta Programlama Sistemi (MPS) oldu, bu beni ilk kez tüm tartışmayı çözdüğünü fark etti, aynı anda çok fazla ekstra olasılık ekledi. (Evet editör eklentileri ile bu mümkündür, ancak metin üzerinde çalışmak MPS'nin yaklaşımının aksine doğrudan çok fazla gereksiz karmaşıklık ekler.)

Sekmeler ve boşlukların aksine, doğrudan çalışmak için bahsedilebilecek küçük dezavantajlar vardır soyut sözdizimi ağaçları . Tek gereken, teknolojinin ticari olarak uygulanabilir bir ürüne olgunlaşmasıdır. Bunun ilk belirtileri ortaya çıkıyor. Büyük ölçüde ticari bir actioncript editörü olan MPS üzerine inşa edilmiştir, Realaxy oluşturulmuştur.

Büyük oyunculardan birinin bu teknoloji kavramına atladığını görmek ve ne olacağını görmek isterim!

1
Steven Jeuris

İkisi de daha iyi, ikisi de daha kötü değil. Tek önemli şey tutarlı olmaktır.

Eğer bir takımsanız, kişisel olarak istediğinizi seçin. Favori düzenleyicinizin varsayılan davranışını düşünün, ancak istediğinizi seçin.

Eğer bir takımdaysanız, takımın yaptıklarını yapın. Dönemi.

Çeşitli işlerimde iki boşluk, dört boşluk, sekiz boşluk, sekme, boşluk ve sekme kullandım, sanırım bir boşluk da kullanmış olabilirim. Editörüme ne yapacağımı söylüyorum, o zaman tekrar düşünmüyorum, editör detayları çalıştırıyor.

Diğer tek şey akıllı bir editör seçtiğinizden emin olmaktır. Emacs veya vi? Şimdi b savaşmaya hazır olduğum kutsal bir savaş :-)

0
Bryan Oakley