Neden takip eden boşluk çok önemli? [kapalı]


116

İzleyen boşluk, Emacs gibi editörlerin kendisini vurgulayan veya otomatik olarak kurtulan özel fonksiyonlara sahip programcılar için yeterli bir problemdir ve birçok kodlama standardı, tüm örneklerini ortadan kaldırmanızı gerektirir. Neden olsa tam olarak emin değilim. Gereksiz boşluklardan kaçınmanın pratik bir sebebini düşünebilirim, ve eğer insanlar onlardan kaçınmak konusunda dikkatli olmazlarsa, o zaman taahhütler arasında değiştirebilirler, ve o zaman birileri kaldırıldıkları için görünüşte değişmeyen çizgilerle kirlenmiş farklar yaşayabiliriz. boşluk ekledi.

Bu zaten bundan kaçınmak için oldukça iyi bir neden gibi görünüyor, ama bundan daha fazlası olup olmadığını görmek istiyorum. Peki, takip eden boşluk neden bu kadar önemli?


30
İzleyen boşluk, gerçekten de gürültü yapıyor. Başka bir sebep düşünemiyorum.
yannis

17
Bir iyi fark aracı sondaki (ve isterseniz de lider) boşluk görmezden gerekir. Ne de olsa Emacs bunu yapabilir, neden fark araçlarınız olmasın?
SinirliFormsDesigner ile

4
'Son' butonu ile dizgenin sonuna gitmek, pek çok takip eden boşluk ile karışabilir.
Iarek Kovtunenko

11
Sanırım soruyu yanlış yoldan soruyorsun. Diğer yol ise: «Beyaz boşlukları takip etmenin avantajları nelerdir? ». Doğru soru sorulduğunda cevap oldukça açık hale gelir;)
deadalnix 24:11

7
Belki de Whitespace’de programlamayı denemelisin . * 8 ')
Mark Booth,

Yanıtlar:


76

Benim için önemli olmasının nedenleri:

  • "Bitir" tuşuna bastığımda imlecin satırın sonuna gitmesini bekliyorum (hangi editörü kullanıyorum ve nasıl yapılandırıldığına bağlı olarak) ve hemen yazmaya başlayabileceğimi umuyorum. İmleç oraya ulaşırsa ve 3 veya 4 karakter silmek zorunda kalırsam sinir bozucu olur. Özellikle dosya (lar) boyunca tutarsızsa.

  • Birden çok satırı kapsayan dize değişmezleri olduğunda, izleyen boşluk, çıktı dizesinin kullanıldığında hatalı görünmesine neden olabilir.

Kesin olarak programlama olmasa da, boşluklar, başka birşeye giriş olarak ayrıştırılacak ve kullanılacak bir dosyada izler / satırlar varsa, veri girişini ciddi şekilde karıştırabilir. Bu, en temiz, oluşturulan bir girdi dosyasını Excel'de veya başka bir şeyde düzenleyen biri tarafından kirlendiğinde ve ardından boşlukların (ve diğer biçimlendirme sorunlarının) süründüğü durumlarda ortaya çıkar.


8
Nokta 1, beyaz boşlukta değil, editörünüzle ilgili bir sorundur.
Marjan Venema

33
@MarjanVenema: Evet, bir editör son NON-boşluklu alana gitmek için tasarlanabilir, ancak daha sonra izleyen boşlukları asla bilemezsiniz (başka bir yolla belirtilmediği sürece - muhtemelen END’nin yaptığı garip bulurum satır sonuna gitme, bu benim alıştığım şey. Çok satırlı dize değişmezleri ile bir sorun olurdu. Öyleyse editörün çok satırlı bir dizgede değişmez olarak, END'nin boşluk dahil son karaktere gitmesi gerektiğini bilmesi gerekirdi. Kullandığım editör o kadar da akıllıca değil.
SinirliFormsDesigner ile

2
Fare ile seçim eklemek isterim, fazladan boşluk seçmeden yapmak zordur ve kesilmiş hamur için önemli olabilir. Ya da hiçbir şey yapmadan taahhüt ettiğinde (nihayetinde toplanır!) Gürültü çıkarır. Çok önemli bir şey değil, ancak çok fazla anoyans. Önceki devin tembel olduğu hissini veriyor ve onun karmaşasından ayrılmanızı bekliyor.
deadalnix

1
@deadalnix: tabii ki, bu yüzden çoğu insanın tercihlerine uyacak seçeneklere sahip iyi bir editöre ihtiyacınız var. Ve bu nedenle, nokta 1, beyaz boşlukta değil editörle ilgili bir problemdir.
Marjan Venema

1
Nokta 1, tam da bu yüzden belirli bir beyaz boşluk stiline sahip olmayı tercih ediyorum: boş satırlar ayırdıkları kod ile girintili. Bu, yeni kodun girintilmek zorunda kalmadan hemen eklenmesini sağlar.
Xiong Chiamiov

29

İzlerindeki boşluklardan gerçekten nefret ediyorum ama asıl sebep biraz belirsiz.

Sanırım bu hissin kaynağı programlamada değil, masaüstü yayıncılık alanında. Hiç bir yayına daktilo edilmesi gereken başkası tarafından yazılmış bir dokümanınız oldu mu? Tüm modern yayınlarda, özellikle sütun kullanırken, cümlelerin her bir cümle için yeni bir satır başlatmak yerine, birbirlerini sırayla bir paragraf içerisinde takip etmeleri çok önemlidir. Eh, izlemekte olan boşluk olduğunda, onu düzeltmek için çok daha fazla çaba harcar (çifte boşluğu ortadan kaldıran birçok arama ve değiştirme işlemi vb.).

Diğer sebepler (programlamada), iyi sebepler değil, biliyorum, ama bilinçaltı ruhumu, beni ortadan kaldırmaya zorlayacak kadar ağırlaştırıcı bir şekilde rahatsız ediyorlar:

  • Gerekenden daha fazla depolama alanı alıyor
  • Çözümleyici, derleme yaparken iyi bir sebep olmadan fazladan bir karakter atlamak zorunda kalacak
  • Bazı editörler WordWrap açıkken ve sondaki boşluk sığmadığında fazladan bir boş satır ekleyebilir.

Evet evet biliyorum! Biliyorum, bunlar önemsiz sebepler. Ben mükemmeliyetçi değilim, ama ... peki belki öyleyim?

Aklıma gelen son sebep tutarsız imleç hareketidir. İmleç bir çizginin sonunda ince havada asılı duruyormuş gibi hissediyor, sağdaki her adım ya düşmesine ya da bilinmeyen bir dereceye kadar uzağa gitmesine neden olabilir, sadece sabit kalıyor (görünmeyen ya da kaybolan bloklar gibi) Mario atlamak için kullanılır).

Muhtemelen trailspacefobia tanısı alabilir miyim?


Alanım değil, ama bana garip geliyor ... masaüstü yayıncılıkta ne tür bir dizgi sistemi kullanıyorsunuz, varsayılan olarak izleyen / çoklu alanları görmezden geliyorsunuz ? LaTeX ve programlama dillerinin çoğunun bunu yaptığı gibi, tüketici düzeyinde WYSIWYG ıvır zıvır dışında her yerde standart olduğunu düşündüm.
leftaroundabout

Adobe InDesign (bu aynı zamanda tüketici düzeyinde WYSIWYG ıvır zıvırında mıdır?). Sondaki boşlukları yok sayar, evet, ancak tüm satır beslemelerini paragraftaki boşluklarla değiştirin ve çift boşluklarla bitirin (yok sayılmayan), sonra bunları ortadan kaldırmak için fazladan bir değiştirme gerekir.
Louis Somers

"Masaüstü yayıncılık", "dizgi sistemi" ile yaptığınız bir şey değildir.
rakslice

22

Bu cevapların çoğu, benim için kötü olmasının nedenine neredeyse değiniyor, fakat temelde: Metin editörlerini "kırıyor". Benim deneyimim vim ile.

Vim, ortak eylemlerin harflerle o kadar net eşleşeceğini ve hangi harf veya tuş bileşiminin isabet edeceğini düşünmenize gerek kalmayacak şekilde tasarlanmıştır. Çeşitli kısayol tuşları, imlecin metin etrafında o kadar hızlı zıplamasını sağlar ki, istediğiniz yere götürmek için sadece birkaç tuşa basılması yeterlidir. Katlama kod blokları gibi şeyler bile hızlıdır, çünkü imlecin {veya} veya (veya) veya başka bir şeyle üst üste gelmesi gereken satırın sonuna atlamak için END veya $ tuşlarına basabilirsiniz - düşünce akışınızı kırmanıza gerek yoktur ekrana bir fikir olsun.

Ama sonra takip eden bir boşluk ortaya çıkıyor ve imlecin hareketleri artık tahmin edilemez. Yazma işleminiz kesintiye uğradı çünkü göremediğiniz bir şey imlecin nereye gittiğini etkiliyor, bu yüzden olması gerektiği yere göndermek için düşünce treninizi kırmanız gerekiyor.

Sinirlenmiş insanların gerçekten bir göreve odaklandıklarında ve birileri onları yarıda kesince nasıl elde ettiklerini fark ettiniz mi? Evet, en az beklendiği zaman iz bırakan boşluk bulmak tam olarak böyle.

Bir kurgu olarak, iz bırakan boşlukları önemsemediklerinin fareyi navigasyon için kullananlar olduğunu ve bu yüzden daha yavaş daktilo yapma eğiliminde olduklarını fark ettim.


2
Bir yazı tipi olarak, yazma hızının farenizi gezinti için kullanıp kullanmamanızla hiçbir ilgisi yoktur. Bazı gezinti, bir fare için mükemmel şekilde uygundur. ; p
Steven Jeuris

2
Eğer vim kullanıyorsanız, tüm sondaki boşlukları hemen kaldırabilirsiniz:%s/ *$//
Giorgio

1
@Giorgio biliyorum, ancak sürüm kontrolündeki bir değişiklik olarak sayıldığı için her zaman
yapamam

@ izkata: Doğru. Dosyaları kontrol etmeden önce değiştirmek zorunda olduğum dosyaları yeniden biçimlendiriyorum, ancak diğer geliştiriciler izleyen boşluk olan dosyaları kontrol etmeye devam ederse bu kaybedilmiş bir savaş.
Giorgio

17

Şaşırtıcı bir şekilde, en belirgin cevap eksik: takip eden beyaz boşluk böcek bulmakta zorlanabilir ve üretebilir.

En belirgin durum çok satırlı dizgelerdir. Python, JavaScript ve Bash bundan etkilenebilecek dillere birkaç örnektir:

print("Hello\·
····World")

üretir:

  File "demo.py", line 1
    print("Hello\
                 ^
SyntaxError: EOL while scanning string literal

editörün boşluk karakterlerini gösterecek şekilde yapılandırılmaması durumunda, bir şekilde şifreli ve çözülmesi zordur.

İken sözdizimi vurgulamak yardımcı olabilir böyle durumlarda kaçınarak, bu satırların sonundaki boşlukları izin vermeyerek ilk etapta sorunu olmamasından daha da kolay. Bu nedenle, bazı stil denetleyicilerinin sondaki boşlukla karşılaştığınızda bir uyarı vermesi ve bazı düzenleyicilerin bunları otomatik olarak düzeltmesi gerekir.

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

Çizim: sözdizimi vurgusu, böceklere neden olabileceği durumlarda izleyen boşluklardan kaçınmaya yardımcı olabilir, ancak yalnızca ona güvenmeyin.

Bir önceki cevapta kısaca değinilen bir başka içerik, dosyalarda depolanan verilerdir.

Örneğin, izleyen boşluk içeren CSV dosyaları veri tutarsızlığına neden olabilir ve bu da algılanması çok zordur: standartlara uygun ayrıştırıcılar boşluk alanını kısaltacaktır (standart, çift tırnak işareti ile sınırlandırılmadıkça satır aralığı izleyen veya izleyen boşlukların alakasız olduğunu gösterir), ancak bazı ayrıştırıcılar, boşlukları bir değerin parçası olarak yaratabilir ve koruyabilir.

Diğer özel biçimler, boşlukların değerin bir parçası olduğunu ve durumların hata ayıklanmasında tutarlı ancak yine de zor olmasına neden olabilir.


14

Geçenlerde, verilerde beklenmedik bir iz bırakan boşluk olduğu ortaya çıkan bir hatayı arayarak bir gün geçirdim.


13
Ben düşünüyorum olduğu bir hata; kodla işlenen insan tarafından üretilen girdiler takip eden boşlukları atmalı ve çoğu zaman önde gelen boşluklar da atılmalıdır.
kevin cline kas

@kevincline - En azından olmalı. Ekranda veya çıktıda görünmüyorsa, düşünmek istemiyorum.
Rook

6
Gününüzü böcek aramak için harcadığınız için, takip eden boşluklar çok mu önemli? Lütfen cevabınızı bundan daha genel olması için düzenleyin. Bazı arkaplan, tartışma, ekle ... Şahsen hiç beyaz boşluk problemi yaşamamıştım, ama bunu problem de olmadığı sonucuna varamıyorum.
Steven Jeuris

2
@Steven Trailing boşluk, izlemesi zor bir hataya neden oldu. Bana iyi bir cevap gibi görünüyor. Bazı verilerin ayrıştırma kodunun bu durumda nasıl bozulabileceğini hayal edebilirsiniz.
Sheppard

Veri sonunda boşluk bıraktım ve şimdi bir test başarısız oldu. Bundan sen sorumlusun. Adınız ne? Faturayı nereye göndereyim?
Thomas Weller

8

Program kaynak kodunu kopyalamak ve yapıştırmak (veya silmek) için seçtiğimde, satırların sonundaki düzensiz ekstra beyaz boşluğu görmek için biraz can sıkıcı buluyorum: , izleyen beyaz boşluk gereksiz bir ses. Örnek (noktalar beyaz alanı temsil eder):

if (fp)........
{....
    fclose(fp);.
}
else
{.....
    prinft("File is NULL\n");
}..

Bu örnek yapaydır, ancak buna benzeyen çok sayıda kod gördüm.


7

Belli durumlarda ayrıştırmayı bozduğu açık sorunun dışında mı? Başka bir posterin belirttiği gibi, hataların izlenmesi ince ve zor olabilir. Boşluk her zaman önemsiz değildir. Bazı durumlarda, izleyen boşluk, bir kod veya veri satırının anlamını önemli ölçüde değiştirebilir.

Çoğu durumda boşluk, insan okuyucular için kodu biçimlendirmek için vardır. İzleyen boşluk, aşağıdakiler dahil birkaç şeyi gösterebilir:

  • Eksik bir ifade;
  • Kayıp bir yorum;
  • Yanlış bir düzenleme; veya
  • Özensiz düzenleme.

Bunlardan ikisi yanlış bir şekilde işlemeye neden olabilir ve bir diğeri kodu kavramayı zorlaştırabilir.


4

Son satır boşluklarına duyarlı olan programlama dilleri vardır. Örneğin, bir satırın sonunda bir boşluk varsa, bir TCL komut dosyası hata verir.

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.