Bul ve değiştir işlevini kolaylaştırmak için tanımlayıcılarda "ler" yerine "ys" kullanmak mantıklı mıdır? [kapalı]


9

Dilbilgisi açısından yanlış olsa da, işlevler, değişkenler vb. İçin tanımlayıcılar yazarken, Y ile biten çok sayıda kelimeye basitçe bir "s" eklemek mantıklı mıdır? Bunun sebebi, örneğin "şirket" i "satıcı" ile değiştirmek ve değiştirmek gerekirse, "şirket" in hem tekil hem de çoğul biçimlerle (" şirket ve" şirket ") eşleşmesidir. çoğul doğru yazılmışsa, iki ayrı arama yapmanız gerekir.


8
Çocuk, fareler, bıçaklar, kurtlar, adamın, kadının, hanımların ve dişlerin durumu nedir? Korkunç "iki ayrı aramadan " kaçınmak için her şey geçerlidir .
Tulains Córdova

3
Wolfys üzerinde kendim için kısmi kısmi ...
Jimmy Hoffa

2
İş akışınızda tanımlayıcıları çok sık yeniden adlandırmayı planlıyor musunuz? Sadece hiç kullanılmayacak bir işlevi desteklemek için koddaki yanlış yazılmış isimlerin tüm bilişsel tuhaflıklarını üstlenmek biraz abartılı görünüyor.
Kent

10
İnanın, "tam kelimeler" kısıtlaması olmadan "şirket" gibi bir kelime için büyük bir kod tabanına bul ve değiştir işlemi uygulamak istemezsiniz. Böylece iki ayrı arama kullanmak zorunda kalacaksınız.
Doc Brown

2
İki. Ayrı. Aramalar.
Tulains Córdova

Yanıtlar:


24

Bu tür herhangi bir arama ve değiştirme işlemi dikkatli bir şekilde gerçekleştirilmelidir ve her değişiklik, örneğin bir şirkette / satıcı değişikliğinizde "acvendor" haline gelmekten "eşlik etmekten" kaçınmak için manuel olarak kontrol edilmelidir. Bu nedenle, "şirket" ve "şirketler" için yapılan iki ayrı arama, her değişikliği incelemek ve onaylamak için harcanan zamanla karşılaştırıldığında önemli bir ek yük oluşturmamalıdır.

Bu nedenle, tek bir arama elde etmek için yanlış yazılan kelimeler, belirgin bir fayda sunmadan, kötü görünmenin ve okunması gerekenden daha zor olmanın olumsuzluklarını sunar.


11
Ve yeniden düzenleme araçları daha iyi hale geldikçe, yalnızca metne dayalı global arama ve değiştirme, bir tanımlayıcıyı yeniden adlandırmanın en az güvenilir yolu haline geliyor.
Kent

Bu, Doc Brown tarafından belirtildiği gibi "yalnızca tam kelimeler" araması kullanan bir sorun olmaz.
SHNC

6
@ user3047082, tüm kelime araması "companys" ile eşleşmez ve tüm soruyu anlamsız hale getirir ...
David Arno

6

Kaynak kod dosyalarında yeniden adlandırma hakkında konuştuğunuzu varsayıyorum. Bugünün IDE'leri ile bu her zaman IDE'nin yeniden düzenleme araçlarıyla yapılmalıdır. IDE'nizde bu yoksa, başka bir IDE'ye geçmeyi düşünün. Çoğu IDE yeniden düzenleme aracı aynı zamanda yeniden düzenleme geçmişini tutar ve size refactor sonuçlarını beğenmezseniz hızlı bir şekilde "geri alma" olanağı verir. Arama / değiştirme özelliğini kullanarak, tüm değişiklik kümesini geri alma olanağınız olmayabilir (düzeltme denetim araçlarınızı kullanmadan ve daha önce kaydedilmiş sürüme dönmezseniz). Ayrıca, yeniden düzenleme araçlarını kullanarak, değiştirmek istemediğiniz bir şeyi istemeden değiştirmekten daha güvende olursunuz.


3
Kim bu cevabı düşük kalite olarak işaretledi: soruyu sorulduğu gibi kesinlikle cevaplamasa da, neden böyle bir adlandırma şemasını kullanmak istediğinin daha büyük resmini ve aynı görevi yerine getirmenin daha iyi bir yolunu ele alıyor. Bayrak incelemesine "iyi görünüyor" oyu verdim ve bir oy ekledim.

Teşekkürler, @Snowman. Bilinmeyen bir alanda, kendi (deneyimsiz) zihniyetinize dayalı bir soruyu çerçevelemek insan doğasıdır. Evet, asıl soruya cevap vermeme rağmen, gerçekten sorulan soruya ilişkin varsayım, sorudaki diğer ipuçlarına dayanıyordu. En çok karşılaştığım çoğullar, kod oluşturma araçlarından, örneğin XSD-POJO, Hibernate / JPA veritabanından tersine mühendislik, vb. Temel olarak, eğer bu çoğullar koddaysa ve yazar, Çoğunlukla yazar tarafından yazılmadı ve daha çok otomatik olarak oluşturuldu.
javabeano

-9

Evet! Evet! Evet! Bunu yapmak çok mantıklı. Ve bunu yıllardır yapıyorum.

Açıklama 1: İngilizce benim ana dilim değil.

Açıklama 2: İngilizce dilbilgisi konusundaki bilgim, anadili İngilizce olanlardan oldukça iyidir.

Açıklama 3: İnsanlarla iletişim söz konusu olduğunda, ben Nazik bir dilbilgisi diliyim.

Ve şimdi bu açıklamalar yoldan çıktığı için, İngilizce dilbilgisinin kodda yeri olmadığını söyleyeyim. Görüyorsunuz, bu yüzden nesir değil kod denir . Okunabilirlik amacıyla insanlar tarafından anlaşılan bir dile benzemesi gerekiyor, ancak bunun dışında koddan en çok ihtiyacımız olan şey nesir nitelikleri değil; hassasiyet , belirsizlik ve terslik gibi daha teknik niteliklerdir . Bu yüzden C sözdizimi Cobol sözdizimine göre daha çok tercih edilir . Doğal dili anlayan derleyicilerin cazip olduğu iddia edilen bir yanlışlıktır ve bunun için sözümü almayın, ol'Edsger'in bu konuda ne söylediğine bakın:if( x != y ) y++;IF X IS NOT EQUAL TO Y THEN ADD 1 TO Y END-IF.Edsger W. Dijkstra, "Doğal dil programlama" nın aptallığı hakkında .

Önemli olan bir diğer kalite de tanımlayıcıların hesaplanabilirliğidir . Çağrılan bir özelliğin Colorher zaman çağrılan getColor()ve çağrılan bir yöntemle yazılabilen bir yöntemle okunabilmesi setColor()büyük önem taşımaktadır. Bu tanımlayıcılar mülk adından hesaplanabilir, bu yüzden onları ezbere bilmek zorunda değilsiniz. Bir programcı getColor()bir yandan bir çift yöntem seçecekse colorize(), diğer yandan meslektaşları haklı olarak bu sabotajı düşüneceklerdi. Tanımlayıcı hesaplanabilirliği bu kadar önemlidir.

Ayrıca, bu adları hesaplayabilen programlama araçları da yazılabilir (ve bunların çoğu, örneğin Hazırda Beklet ). Tanımlayıcı adı hesaplanabilirliği olmadan, her bir araca her bir tanımlayıcı adının nasıl tam olarak nasıl oluşturulacağını veya her bir varlığa tam olarak hangi ad hoc adını verdiğinizi belirtmek için ek sözdizimi (örn. Hazırda Beklet, ek açıklamalarda) kullanmanız gerekir.

Bu nedenle, tanımlayıcı hesaplanabilirliği önemlidir, ancak aynı zamanda İngilizce dilbilgisi önemsizdir (doğal dil programlaması yapmadığımız için), böylece bir varlık koleksiyonunun adını her zaman ada "s" ekleyerek hesaplayabilmek için tek bir örnek mükemmel mantıklıdır, çoğu insanın (benimki dahil) İngilizce dil hassasiyetlerini ihlal ettiği gerçeğini boş verin.

İster beğenip beğenmeyelim, bu geleceğin trendi. Gezegendeki programcıların çoğunun ana dili artık İngilizce değil ve eğilim bu yönde çok güçlü olmaya devam ediyor . (Ayrıca, şu anda ABD'de çalışan programcıların çoğunun ana dili olan İngilizce'nin önerisi üzerine para bahse girmeye bile istekli olmazdım.) Bunlar, büyük ölçüde, adı hesaplamaya çalışırken insanlar tek bir "şirket" örneğinin adından bir koleksiyon, sadece bir "s" ekleyecek ve "şirketler" formu bile aklını bile geçmeyecek. Dünyadaki programcıların büyük ve giderek artan bir yüzdesine göre, İngilizce dilinin özelliklerinin bilinmesi, çalışmalarına herhangi bir değer katmaz, sadece biraz daha zorlaştırır.


7
1. Endeksler ve Endekslerin her ikisi de geçerli endeks çoğullarıdır. Sadece bir tanesinin doğru olduğu inancında yanılıyorsunuz, örneğin lütfen oxforddictionaries.com/definition/english/index adresine bakın . 2. getX ile okunabilen ve setX ile yazılabilen özel bir X özel değildir; bu genel bir değerdir. 3. Kod bir tasarım belgesidir. Bir derleyiciye "makine kodu" nun nasıl üretileceği konusunda bilgi verir, ancak daha da önemlisi, bu tasarımı diğer insanların kolayca okuyabileceği şekilde açıklar. Okunabilirlik, kodlamanın en önemli iki yönünden biridir (test edilebilirlik diğeri).
David Arno

3
Kod iki nedenden dolayı yazılmıştır: insanların okuması ve bilgisayarların yürütmesi. Bazıları kaynak kodunun öncelikle insanların okuması için yazıldığını söyler , çünkü çoğu bilgisayar çalıştırmadan hemen önce bayt koduna derlenir. Yani, bilgisayarlar uygun dilbilgisini önemsemese de, insanlar kesinlikle yaparlar.
Eric King

3
İngilizce ana diliniz olmasa da, kodunuzu okuyan bir sonraki kişi olabilir. Muhtemelen İngilizce öğrenen ana dilinizin diğerlerini de karıştırır.
Andy

2
ya da sadece Companysolması gereken zamanda iki katına çıkanlara zarar vereceksiniz Companies. Sonuçta, genellikle yazdığımız kodun tüm noktası aslında onu doğal dile yakınlaştırmaktır.
Andy

2
Her neyse, o kağıdı bok dolu buluyorum. Kod doğal dil ile bayt kodu arasındadır. İnsanların kod anlayışını kolaylaştırmak için değilse, sadece bayt kodunu doğrudan girmek için herhangi bir neden olmazdı.
Andy
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.