Sekmelere karşı boşluklar - her durumda, her durumda, her zaman için uygun girinti karakteri nedir? [kapalı]


84

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

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



13
IDE varsayılan FTW - sadece sekme tuşuna basın ve ne olduğunu görün
user281377

Neyi seçerseniz seçin, tüm takım tarafından kullanılmalıdır, ancak başka alanlarda sekmeler kullanıldığında kullanılmamalıdır.
Disciple

1
Bunu düzenlemeye çalıştım, sekmelerin / boşlukların kodu girmenin tek yolu olduğu fikrini düzeltmeye çalıştım. Düzenleme kaldırıldı, ancak umarım bu yorum kalır: Girinti karakterleri yerine, neden sol kenar boşluğunu kullanmıyorsunuz? - Bu tamamen editör tarafından otomatikleştirilebilir ve kelime işlemciler bunu on yıllarca yaptılar.
pgfearo 28:11

4
Burada "kabul edilmiş" bir cevap olması gerektiğini düşünmüyorum. Daha az oy alan cevabın aslında ilk olduğu gerçeği şudur: soruyu sordukları için neden asker özel bir iktidara sahip olmalı (yani ilk önce en sevdikleri cevabı verebilmeli)?
Dean Harding

Yanıtlar:


129

Spaces

Bir sekme ortamınıza bağlı olarak farklı sayıda sütun olabilir, ancak bir alan her zaman bir sütundur.

Kaç tane boşluk (veya sekme) girinti oluşturduğu açısından, kodunuz boyunca tutarlı olmak, herhangi bir sekme durağı değeri kullanmaktan daha önemlidir.


42
İkinci paragrafınız yanlış; Cevap 4!
Daenyth

5
@Daenyth - belki kaşlı ayraç bir dil kullanıyorsanız. Çoğu Pascal / Delphi 2 kullanır
Gerry

72
Bir TAB dinamik olarak ayarlanıp tek bir girinti seviyesini gösterdiğinde neden 2 veya 4 SPACES girinti için zorunlu tutulmalıyım?
Jé Kuyruğu

3
@MGOwen Web sitesi kodlaması için indirme süresi argümanı, bugünlerde css / javascript'te kaynak küçültme ve HTML'de boşluğu kaldırma işlevini kullanarak kolayca çözülebilir. Ne demek istediğimi görmek için mod_pagespeed bakın.
Evan Plaice

42
"Bir sekme ortamınıza bağlı olarak farklı sayıda sütun olabilir" Evet, bu tam olarak avantajdır. Herkes istediği gibi ayarlayabilir ve mutlu olabilir.
Andrea

249

Sekmeler

Şimdi, elbette, tutarlılık her ikisinden de önemlidir ve iyi bir IDE farklılıkları göz ardı edilebilir kılar. Yani, bu konunun amacı kutsal bir savaş olmaktır, yani:

Sekmeleri tercih ederim:

  • Bunlar özellikle girinti için olan bir karakterdir.
  • Girinti boyutunda farklı tercihlere sahip geliştiricilerin, kodu değiştirmeden kodun görünümünü değiştirmesine izin verir (verilerin ayrılması ve genel kazanım için sunum!)
  • Sekmeleri olan bir şeyi yarıya girmek imkansızdır. Dolayısıyla, 3 boşluk kullanan bazı web sitelerinden 4 boşluk girintili dosyanıza kod kopyaladığınızda, yanlış hizalamayla uğraşmanıza gerek kalmaz.

12
Sekmelerinizi 3 boşluk olarak ayarladığınız 3 boşluklu girintili kodu, sekmeli girintili dosyanıza kopyalamaya ne dersiniz? Kodunuzu vatandaşlarınıza gönderdiğinizde, bu fonksiyonun neden bu kadar girintisiz olduğunu merak ediyorlar!
Wayne Werner

27
Sekmeler başlangıçta girinti anlamına gelmez, çizelgeleme içindir ve korkunç bir iş
çıkarırlar

14
@Timwi: Vikipedi , imleci bir sabit sütun kümesinin sonrakine taşımak istediklerini söylüyor. Sekme gibi görünmüyor birincil fonksiyondu. Ayrıca, daktilo sonrası döneme işaret ediyordum.
Fishtoaster

40
Ayrıca birçok programcı html, css, vb. Yazmak için önemli miktarda zaman harcıyor, sekmeler yerine 4 boşluklu bir dosyanın% 5-15 daha büyük olması aslında önemli. Örnek: Şu anda bulunduğunuz sayfa SE takımında boşluk kullandığından en az% 10 daha yavaş yüklü . Kendin kontrol et.
MGOwen,

23
Bu yaklaşımın bir başka faydası - sağ-sol gezinme için ok tuşlarını kullanırken daha az tuşa basmaktır.
Nicole,

117

Satırın başını girinti sekmeleri, girinti seviyesi başına bir sekme kullanın ve herkesin istediği kadar geniş olmasını seçmesine izin verin.

Eğer karakter sıraya eğer boşluk kullanınız içindeki bir çizgi, bu yüzden bağımsız olarak her zaman sekme boyutu sıraya.

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


33
Evet evet evet evet evet. Yüzde yüz evet. Bu, sekmeli formatı korurken herkesin kendi sekme genişliğini ayarlamasına izin verir. 80 sütunda tutmaktan endişeleniyorsanız (muhtemelen olması gerektiği gibi!) O zaman rasgele beklenen maksimum sekme boyutunu (4 gibi) seçin ve bu genişlikte sekmeler için kenar boşluklarını bırakın. Açıkçası, bu çok mu zor?
Jon Purdy

Evet, ama bir çizgide sıraya koymak için boşluk kullanmayın. Meslektaşlarınız orantılı bir font kullanıyor olabilir, böylece ASCII sanatınız ekranlarında tuhaf görünecek.
paperjam

3
Buradaki tek doğru cevap bu.
J.Ashworth

76

Sekmeler

  • hataların daha belirgin olmasına izin verin , boşlukları yönetmenin mikroya can sıkıcı olması.
  • tutarlıdırlar , yanlış yorum yapmadıkça yalnızca girinti için kullanılırlar.
  • özelleştirilebilir , editörün seçeneklerinde ne kadar geniş olduklarını belirleyebilirsiniz.
  • daha üretken , neden 1 sekmeye vurabiliyorsanız neden 4 boşluk yazın.
  • birden fazla alandan daha az boyut alır.
  • boşluktan daha fazla yer kaplar.
  • geçmek için daha az zaman ayırın .
  • IDE'lerde daha iyi çalışma eğilimindedir.

Sekmelerin tamamen yararsız olduğu yerlerde boşluk kullanılmalıdır.

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


24
"daha üretken" olan şahsen ben kişisel olarak TAB'a çarptım ve IDE'nin tanıtmak için uygun sayıda boşluk karakteri için dönüşüm yapmasına izin verdim. Belki de yükseltme yapmanız gerekebilir: p?
Matthieu M.

3
-1: Daha belirgin hatalar: doğru değil; tutarlı: özelleştirilebilir olmadığından dolayı zor: evet, ama aynı zamanda aynı zamanda dezavantajı; daha üretken: doğru değil, hemen hemen tüm tanımlamalar sekmeleri boşluklara dönüştürebilir; daha az boyut: evet, fakat pratik? Hayır; daha az zaman: makul IDE ile hayır; daha iyi çalışma eğiliminde: birden fazla ortam ve araç kullanıyorsanız hiç de değil
13

@ MaR: Gözle görülür hatalar doğrudur, sekmenin genişliği daha büyüktür. Ayrıca ... Python! Sekmeler, tek bir Sekme bir girinti olduğu için tutarlıdır; aksi halde bir girinti için kaç boşluk kullanacağınızı tanımlamanız gerekir. Özelleştirme bir avantajdır. Sekmeleri ilk etapta kullanıyorsunuz, bu yüzden daha verimli. Görünüşe göre neden pratik olmadığına dair iyi bir neden veremiyorsun, nefretler nefret edecek ...))
Tamara Wijsman 11:11

@TomWij: Sekme nasıl eşdeğer sayıda boşluktan daha büyük? Python neredeyse boşlukları sekmeleri güvenle kullanma hakkına sahip olan tek dildir (ancak yine de - "boşluk eklemek" ile karşılaştırıldığında yalnızca çok az avantaj sunar). Ayrıca diğer dilleri, eski ortamları, farkların / birleştirmelerin, terminallerin, sekmelerin neden hala ütopik "ideal" olduğunu görmek için sccs komutlarını deneyin.
11:11

@MaR: 'Eşdeğer sayıdaki boşlukları' nerede belirledim? Hepsini denedim, sekmeler onlarla mükemmel çalışıyor!
Tamara Wijsman

41

Sekmeler için tüm argümanlar teoride mükemmeldir. Fakat...

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

Evet, sekmeler ile girinti seviyenize karar verebilirsiniz. Ve evet, işleri hizalamak için sekme ve boşluk kombinasyonunu kullanabilirsiniz. Ve ideal bir dünyada

Gerçekte, boşluklar ve sekmeler arasındaki farkı göremezsiniz, kodun etrafını dolaştırırken her zaman karışmış görünüyorlar ve kodu 8 sütuna ayarlanmış sekmelere sahip başka bir programda görüntülemekte sıkıntı var.

Sekmeleri kullanırdım. Sonra bir ekibin parçası olarak çalışmaya başladım ve kodu paylaşmaya başladım. Hızla bir mekan savunucusu oldum. Bu yüzden sekmelerin ütopyası ile sempati duyabilirken, boşluk kullanmamayı hayal edemiyorum.


6
'hayalet' karakterli sekmeler sunan Kate gibi bir editör alabilirsiniz - Kodlama yaparken sekmeleri vs boşlukları kolayca görebilirim.
HorusKol

8
Her editörün şimdi "boşluk göster" seçeneği var ve Visual Studio'nun bir "tabify" seçeneği var
Chris S

2
İyi tartışma. İnsanları sekmelerin daha mantıklı olduğuna ikna etmeye çalışmaktan vazgeçmemin nedeni bu. Soyut düşünceye alışması gereken programcılar bile sekmeleri ve boşlukları karıştırıyor gibi görünüyor ("dört boşluk gibi görünüyorsa, dört boşluk olmalı!"). Tabuttaki benim için çivi Emacs'ı sadece sekmelerle girintiliğe ayarlayacak şekilde imkansız görünüyordu.
Martin Vilcans

3
+1 Ütopya sekmesi harika, ancak her seferinde farklı sekme genişliklerine sahip editörler arasında kod taşıdığımda, kod bozuldu ve yanlış hizalandı. Sekmeleri ile yanlış şeyi sessizce yapmak çok kolaydır.
Mankarse

Ben de sekmeleri kullanırdım, fakat devam çizgileri için boşluk ekleyemeyen bazı IDE'lerle başım dertte oluyordu ve otomatik olarak yerleştirilen tüm sekmeleri boşluklarla değiştirmekten nefret ediyordum (Visual Studio onlardan biriydi). Bu yüzden sadece boşluklarla yapıştırdım. Ayrıca boşluklar public:, C ++ sınıf bildirimlerindeki gibi şeyler için yarım boyutlu girintiler kullanmanıza izin verir, böylece daha güzel görünebilirler (özellikle iç içe sınıflarda).
szx,

31

105
Sırf ünlüsün çünkü seni düzeltmiyorsun.
Jé Que,

@Xepoch: onların mantığını okudun mu :)?
Matthieu M.,

5
@ Mate M., evet, her birini okudum ama yine de aynı fikirde değilim. Zeytinleri de sevmem ama beni yanlış yapmaz, çünkü diğerleri sever. İnsanların sekme için girintiyi kullanmamalarını saçma sapan buluyorum, ancak bu yüzden onlara CS kutsal savaşlar diyorlar ...
Jé Queue

2
@Xepoch: evet, herkesin görüşüne hak kazandığını sanıyorum :) Guido'nun asıl konuyu işaret ettiğini düşünüyorum: Sanırım her ikisi de kullanıcıya "boşluk" olarak göründüğü için sekmeleri ve boşlukları karıştırmak kötüdür.
Matthieu M.

3
@ Fishtoaster: Joel'in boşluklar dediğini söylediğinde, bağlantı gerçek bir Joel alıntıya yapılmamalı mıydı? Bağlantı sadece JoelOnSoftware forumuna gider, burada bazı ppl'ler (büyük olasılıkla Joel için konuşmuyor) sekmeleri ve boşlukları tartışıyorlar.
Andreas Magnusson


20

Ben kesinlikle. nefret. 4. boşluklar.

Neden? Temelde kodumu bir klavyeyle dolaşmaktan ve left left left leftbir girintiden geçmek için sürekli çarpmak zorunda kalmamdan dolayı . Bu, Notepad ++ 'ın ilk sürümlerinden ve hatta biçim düğmesi diye bir şeyin olmadığı düz Windows notepadinden doğdu. İnsanların sadece 3'ü diğer şeylerin yanı sıra her yerde 4 kullandığımda 3 kullanmasıyla ilgili çok sorun yaşadım.

Diğer sebep ise, sekme karakterinin özellikle girintiler için var olması ve yalnızca daha sonra gezinti için kabul edilmiş olmasıdır. space space space spaceBasit bir tabişe yaradığında neden yapıyoruz ? Basit bir sekme ve tercih seçeneği işe yarayacaksa IDE'ler neden 2-5 aralıklı kod kullanmalı ve doğru biçimde biçimlendirmelidir?

Maalesef azınlık benim.


31
Klavye kodlarına göz atmakta yetersizsiniz. Beyaz boşluk ve belirteçleri atlamak için CTRL + LEFT ve CTRL + RIGHT tuşlarını kullanmalısınız. Öyleyse girinti önemli olmaz.
Wizard79

7
Bu yanılgı, “özellikle girinti için sekmeler var” dan kaynaklanmaktadır? Sekmeler sekmeler (tabulators) olarak adlandırılır ;
Timwi

7
@Lorenzo: Klavye kodlarına göz atmakta yetersizsiniz. Boşluk ve belirteçleri atlamak için wve b(veya eve ge) kullanmanız gerekir : P
R. Martinho Fernandes

6
Şeytani savunuculuk adına: yetersiz olduğunu düşündüğünüz editörlere kötü biçimlendirilmiş kodlar eklemeyin. Sekmeleri kullanın.
Jon Purdy

11
@Timwi: necro için üzgünüm, ama bilgisayar sekme anahtarı tablolama için icat edilmedi. Bu anahtarın TYPEWRITER sürümü, ancak klavyelerin bilgisayarlarla kullanım için geliştiği zaman, sekme tuşu, tablolama işleminden daha fazla girintileme için kullanıldı ve "sekme" terimi, girintiyle eşanlamlı hale geldi. BİLGİSAYAR için Sekmeler girintilidir ve yalnızca anahtarın adının daktilo ile eşleşmesi şarttır. Sizin argümanınız, bilgisayarın dönüş anahtarının yeni bir satır başlatmak ve imleci en sola kaydırmak istediğini iddia etmeye benzer, çünkü bir daktiloda bunun içindi :)
Beofett

12

Her geliştirici her sekmede sekme kullanmayı seviyorum, çünkü her geliştirici sekme başına girintinin miktarını kontrol edebiliyor. Bu şekilde ekranda esneklik elde edersiniz.

Bu genellikle, başlangıçta dosyada ne tür bir kodlama stili olduğunu taklit ediyorum (çünkü bakım işi için çok zaman harcıyorum).


3
Bu, açıklama yuvalaması dışında herhangi bir şeyi girmeye başlar başlamaz kırılır. Örneğin, fonksiyon bağımsız değişkenlerini aynı sütunda, her satıra bir tane hizalamak istiyorsanız. Tabları ve boşlukları karıştırmakla mümkündür ancak çok sıkıcıdır.
finnw

2
Hiç sıkıcı değil, çünkü bu yolun çoğunu sekebilir ve ardından sadece doğru sütuna ulaşmak için düzinelerce boşluk bırakmak yerine sadece birkaç boşluk kullanabilirsiniz.
Jordan Reiter,

1
@finnw, herkesin monospaced bir font kullandığını varsayarsanız - 2012'de, önemli sayıda devs orantılı kullanır. İlk argümanınızın solunda boşluk olmayan karakterler varsa, sonraki satırlardaki argümanların herkes için uygun olacağını garanti etmenin bir yolu yoktur.
paperjam

HAML yazmayı hiç denemedin, değil mi?
alt

2
Bunu söylemekten nefret ediyorum ama değişken genişlikte bir fontta programlama hayal edemiyorum. Onun cimri yanlışlıkları , cücelerin brace standartlarını, sekmeleri vs boşlukları, her şeyi ... Ben sadece yaşlanıyor muyum? (Satır ve sütun numarasıyla birlikte bir hata mesajı alırsanız ne olur?)
lunchmeat317

10

Uygun girinti (en azından küçük savaş olmadan) diye bir şey olduğunu sanmıyorum.

Şahsen dört mekanı severim. Kodumu daha hızlı okumamı sağlıyorlar ve her editörde aynı görünüyorlar - hatta Vi.


9
vi (veya vim) sekmelerle çalışmak için daha iyi editörlerden biridir, sekme genişliğini ayarlayabilmeniz ve otomatik olarak boşluklara genişletebilmeniz (çoğu editörün yapabildiği gibi) de softtabstopseçeneğiniz retabve retab!komutlarınız vardır.
finnw

4 yer, her yerde, her zaman, başka seçenek yoksa ve devam edersek, bebekler gerçekten ölür mü?
MGOwen

2
Dört boşluk her yerde aynı görünmüyor. Artık daha fazla programcı, daha keyifli ve üretken bir kodlama deneyimi için IDE'lerinde orantılı fontlar seçiyor. Dört boşluk bu durumlarda oldukça küçük bir girintiye benzeyebilir.
paperjam

8

Boşluklar, çünkü yorumları kod hakkına, işlev parametre listelerine veya karmaşık çok satırlı ifadelere veya bu tür şeylere göre hizaladığınızda , güzel çalışmanızın herkes için doğru görünmesini istiyorsunuz . Sekmeleri kullanırsanız ve insanların sekme duraklarını farklı bir şekilde ayarlamasına izin verirseniz, en basit kod girme durumları dışındaki herkes için hizalamayı bozarlar.

Ayrıca, dünyadaki herkesin vim kullanması gerektiği açıkça bellidir; bu da boşluk girintili dosyalarda bile "sekme durakları" ndan girintiyi, dürtüsünü ve gezinmesini önemsiz kılar.


Bu, pek çok editörün gerçekten iyi bir özelliğidir - höyüklerde ve boşluklarda hızlıca gezinme yeteneği.
Christian Mann

18
Kodlama yerine ASCII sanatını çiziyor gibisiniz.
rmac

3
Eklerdim: Sekmeler hizalama için kullanılmaz. Sekme kullanıcısıysanız ve hizalamak istiyorsanız, önce girinti için doğru miktarda sekme, daha sonra da hizalama için doğru miktarda boşluk yazmalısınız. Ancak o zaman tüm kullanıcılar ve editörler arasında sekme formatlı kod görürsünüz.
MaR

6

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

Ne yazık ki, sekmeler eşitsiz bir şekilde uygulanmaktadır, bu nedenle tek gerçek dünya çözümü 4 alandır.


8
Ne zamandan beri sekmeler (çizelgeleyiciler) "tanım gereği" girinti için kullanılır? Tanımları gereği, tablolama için icat edildiler (buna rağmen korkunç bir iş çıkarsalar da).
Timwi

2
Teknik olarak, dönüş anahtarı daktilo kafasını çizginin önüne taşımak için icat edilirken, bir sonraki satıra geçiş silindiri döndürerek gerçekleştirilir. Daha sonra geri dönüş tuşu aynı zamanda silindiri de otomatik olarak ilerletir. Yine de insanların dönüş / girme tuşlarına takıldıklarını görmüyorsunuz. Sekme anahtarı, girintiyi gerçekleştirmek için bilgisayarlara açıkça eklendi. Eski elektrikli olmayan daktiloda kullandığım sekme durağının dijital bir benzeri. Sekmeyi durdurma, silindiri seçtiğiniz sekmeye, neredeyse sekme tuşunun girintideki mevcut rolüyle aynı olacak şekilde hareket ettirmek üzere ayarlanabilir.
Jordan Reiter

@JordanReiter RE: "Yine de insanların dönüş / enter tuşlarına takıldığını görmüyorsunuz.": CR ile hiç karşılaşmadınız mı (daktilo kafasını satırın önüne getirmeyi temsil ediyor) / LF (silindiri döndürmeyi temsil ediyor) sonraki satıra) sorunları?
Max Nanasy

1
Evet, ama bu gerçekten bir işletim sistemi sorunudur, klavye sorunu değil. Hangi bilgisayarda olursanız olun, sizi bir sonraki bağlantıya götürmek için enter ya da return tuşuna basmayı beklersiniz. Satır beslemesi yapmak için bir anahtar, satır başı döndürmek için bir anahtar kullanmazsınız.
Jordan Reiter,

4

Belli ki bir kombinasyon yaklaşımına ihtiyacınız var.

Başka geliştiricilerle kod paylaşıyorsanız, standartlaştırmanız gerekir ve bu imkansız olduğundan (koff koff) herkesin dört boşluk yapmasını sağlamalısınız.

Öyleyse, aptal olmamak için yeterince akıllı bir editöre ihtiyacınız var, onun önünde girintili gibi dört boşluk bulunan bir çizgiyi işlemesi gerektiğini bilmek. Herhangi bir modern IDE veya programcının editörü, kodları sekmeler yerine boşluklarla otomatik olarak akabilir.


4

Neden biri bunu uygulayamıyor:

  • kod söz konusu sisteme faydalı bir kompakt biçimde saklanır.
  • Her dev kodu açtıkça, tam olarak istedikleri şekilde biçimlendirilir.
  • onunla bitirdiklerinde kompakt formata geri dön

Herkes kendi formatını gördüğü için mutlu

Bu çok mu zor?


2
Çünkü, insanların kullandığı tüm editörleri ve IDE'leri düzeltmek için yeterli boş zamanım yok ve bunu yapsam bile, herkesi yükseltmeye ikna etmek daha zor olacak.
Peter Boughton

Eminim onu ​​SVN'ye yerleştirebilirler ya da uç aletleri dışında bırakmanın başka bir yolunu bulabilirler.
adolf sarımsak

13
Bir nevi sekmeye benziyor. Her geliştirici dosyayı açar ve istedikleri girinti genişliğini elde eder.
rmac

1
indentProgramı kullanmak için RCS veya CVS'yi zaten ayarlayabilirsiniz .
Jé Que

3
ve komik aralık fikirleri ile Devs alamadım böylece standarization foramtting / kod girinti zorlamak için girinti kullanmak ihtiyatlı var suçladı / açıklamalı tüm bu değişikliklerin biçimlendirilmesinde
Tim Williscroft

3

Boşluklar ya da Sekmeler - Atwood'un gerçekte söylediği şey bir şeyi seçmek ve projenizde tutarlı olmak. Kod biçimlendirmenin tek kutsal kâsesi tutarlı olduğundan emin olmaktır; böylece sizden sonra kodunuzu koruyan psikopat, durumu kalıcı olarak gidermeye mecbur 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ı düşünemiyorum.


4
Sekmeleri kullanırım. Herhangi bir Python programlama yaptınız mı bilmiyorum, ama önemli olan göreceli girinti. Satır 1'de x girintiler varsa ve satır 2'de x + 1 girintiler varsa, daha fazla girintiler olarak kabul edilir. Girintiler çift boşluklar, 4 boşluklar, sekmeler olabilir, tutarlı olduğunuz sürece farketmez.
Macha

@ Macha - Geri bildiriminiz için teşekkür ederiz. Python gelişiminde hiç çalışmamıştım, ama hepsim bana boşluk kullandıklarını söyledi, bu yüzden sekmeleri kullanan biriyle tanışmak ilginçti.
Noah Goodrich

3
İşyerinde python ile sekmeler kullanıyorum. Bu korkunç.
rhettg

3

Ben 4 kişilik bir adamım, sekmeler tutarlı değil.


5
Nasıl tutarlı değiller? Her zaman tek bir girinti seviyesini temsil eden tek bir karakterdir. Tutarlı bir girinti düzeninin tanımı budur . (Ve şahsen, başkalarını etkilemeden kişisel olarak yapabileceğini görsel olarak seçtiğin herhangi bir yolun bir artı
olduğudur

3

Görünüşe göre sekmeler Delphi'de karışıklık yaratıyor, bu yüzden Delphi'de sekmeler kullanmıyorum.

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


Buna bir örnek verebilir misiniz? Gerçekten merak ediyorum çünkü Delphi'yi 15 yıldır kullanıyorum ve bunu hiç görmedim.
GrandmasterB

1
edn.embarcadero.com/article/10280#4.3 Bu sadece stil rehberi, ancak sekmeler nedeniyle açıklayamadığım bazı garip hatalar oldu. Ayrıca Visual Source Safe nedeniyle olabilir. Açıklayamam, bu sadece şirketimizin yetkinliğinin bir parçası.
Peter Turner

1
Sorun, kurulumun (en azından) Delphi'nin bazı sürümleri için varsayılan Delphi deyimleriyle eşleşmemesidir. Böylece BOTH olan bir kod ile bitirdiniz.
Gerry

3

Cevap, her durum için tek bir uygun girinti karakteri olamayacağıdır. Karakterleri kullanarak biçimlendirme esnek değildir ve ekip içinde farklı stiller kullanıldığında çakışmaya neden olabilir.

Kodu farklı biçimleme stilleriyle kusursuz ve esnek bir şekilde biçimlendirmenin tek yöntemi, neredeyse herhangi bir girintili karakter olmadan yapmaktır. Bunu desteklediğini biliyorum tek kod editörü aşağıdaki örnekte kullanılan olanıdır:

Göstermek için sanal biçimlendirme aşağıdaki ekran görüntüsü bu girinti yöntemini kullanan bir XSLT editörü * dan (aynı zamanda kısa bir video var burada ). XSLT'deki her karakter, açıklama amaçlı olarak, içerikteki tek sekme veya boşluk karakterlerinin açıkça görülmesine izin vermek için sarı renkle vurgulanmıştır. Kod girintisi, sol kenar boşluğunu ayarlayan (beyaz arka planı olan) editörün oluşturma sistemi tarafından gerçekleştirilir.

görüntü tanımını buraya girin

Önde gelen tek boşluk karakterleri Kitaplar satırlarından önce gelir; çünkü bu, kod değil, değişmeyen metin içeriği olduğundan, bu boşluk karakterleri korunmalıdır.

Sanal biçimlendirme ile kaynak dosyadaki herhangi bir karakteri etkilemeden ortama ve girinti stiline uyacak girinti genişliğini seçersiniz. Aşağıda gösterildiği gibi kodun düzleştirilmiş bir görünümüne ihtiyacınız varsa girintiyi genişliğini 0 olarak bile ayarlayabilirsiniz:

görüntü tanımını buraya girin

Bunu boşluk karakter formatlamasıyla karşılaştırmak için, bir editörde sanal formatlama olmadan açılan aynı XSLT, o editörün otomatik formatlayıcısı tarafından şuna dönüştürülür:

görüntü tanımını buraya girin

Yukarıdaki ekran görüntüsündeki büyük boş sarı bloklar, geleneksel editörün formatlayıcısı tarafından eklenen boşluk karakterlerini açıkça göstermektedir. Ne yazık ki, bunlar artık gerçek içerikten ayırt edilemiyor, bu nedenle XSLT'nin bu sorunu düzeltmek için değiştirilmesi gerekiyor.

özet

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

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


1
Ne yazık ki, muhtemelen zamanınızın yaklaşık 50 yıl ilerisindesiniz. Açıkçası saçma, programların karakter dizileri olduğu fikri, çoğu programcının aklında hala çok derine oyulmuş durumda.
Tom Anderson

3

Şu ana kadar bahsedilmedi: Girintinin önemli olduğu diller (Python, Haskell) var. Ancak 1 karakter 1 karakter olarak sayılır, boşluk veya sekme olsun, böylece derleyici tarafından kullanılan girintiler, sekmeleri kullanırsanız ekranda gördüğünüzle aynı olmayabilir.

Bu nedenle, Haskell gibi dillerde, boşluklar bir zorunluluktur. Makefiles'ta TABS bir zorunluluktur. Diğerlerinde, kişisel zevk meselesidir ve günümüzde pek fazla bir şey yoktur - her iyi editör "boşluklara sekmeler" ve "(sekmelere sekmeler boşlukları" komutunu verir).


2

Boşluklar kullanırdım, ancak son zamanlarda tamamen sekmeler kullandım, çünkü Eclipse’in nihayet farkettiğimde yaptığı şey buydu. Ekibimdeki diğer geliştiricilerin tümü Eclipse kullanıyor, bu yüzden zaten uzun süredir onları kullandığımızı fark ettiğimizde sekmelerde standardizasyon yapmak mantıklıydı ve mekanlarda değişiklik yapmanın bir nedeni yoktu. Ne kadar mesele olmadığına şaşırdım.

Görüntülenen sekme boyutunu IDE'nizde 3 veya 5 karaktere ayarlamak, boşluklarla girilen kod bölümleri (hemen hemen her zaman 4 bu gün) ve sekmeyle girilenler arasında ayrım yapmayı büyük ölçüde kolaylaştırır.


1

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

Sekmeler ve boşluklar!

İdeal olarak kod veri olarak düşünülmeli ve belirli bir metin biçiminde saklanmamalıdır. Herhangi bir geliştirici kendi tercih ettiği görüşü uygulayabilir. Ayrıca, bu görüş sadece metinlerle sınırlı olmamalıdır , fakat tabloları, renk toplayıcıları ve matematiksel formülleri içerebilir.

Bu fikir çok uzak değil. Bu, ilk olarak tüm tartışmaları çözdüğümü fark etmeme neden olan ve aynı anda pek çok ilave olasılık ekleyen JetBrain'in Dil Odaklı Programlama editörü Meta Programlama Sistemi (MPS) idi. (Evet bu editör eklentileri ile mümkündür, ancak metin üzerinde çalışmak, MPS'nin uyguladığı yaklaşımın aksine, gereksiz birçok karmaşıklığı doğrudan ekler.)

Sekmeler ve boşlukların aksine, doğrudan soyut sözdizimi ağaçlarında çalışmak için söylenebilecek küçük dezavantajlar vardır . Gereken tek şey, teknolojinin ticari olarak uygulanabilir bir ürüne erişmesi. Bunun ilk işaretleri ortaya çıkıyor. Büyük ölçüde, ticari bir actioncript editörü olan MPS üzerine kurulmuş olan Realaxy oluşturuldu.

Büyük oyunculardan birinin bu teknoloji kavramına atladığını ve ne olduğunu görmeyi çok isterim!


0

Ne daha iyi, ne de daha kötü. Tek önemli şey tutarlı olmaktır.

Eğer bir kişiyseniz, kişisel olarak dilediğinizi seçin. Favori editörünüzün varsayılan davranış şeklini göz önünde bulundurun, ancak ne istersen onu seçin.

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

Çeşitli işlerimde iki boşluk kullandım, dört boşluk, sekiz boşluk, sekme, boşluk ve sekme, ayrıca bir boşluk kullandığımı düşünüyorum. Editöre ne yapacağımı söylüyorum sonra bir daha düşünmem, editör detayları çözer.

Diğer tek şey akıllı bir editör seçtiğinizden emin olmaktır. Emacs veya vi? Şimdi bu , savaşmaya istekli olduğum kutsal bir savaş.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.