bir programcı, birçok dil - ikilem adı


14

Birden fazla programlama dilinde çalışırken, karşılaştığınız bir sorun var ...

Bir dilde geçerli bir ad (tanımlayıcı) başka bir dilde geçersiz. Örneğin...

var new function thisJavaScript'teki bir anahtar kelimedir, ancak bunları Python'da serbestçe kullanabilirsiniz. Benzer şekilde list dict defJavaScript'te sorunsuz olarak kullanılabilir.

Bu çok yaygın bir durumdur ve programcılar genellikle birden fazla dilde programladıklarında hızla tanışırlar.

Ancak, işbirliği içinde çalışırken, kodda tutarlılık ve tekdüzelik sağlamak için ekip üyeleriniz için bazı kurallar / yönergeler belirlemeniz gerekir. Ekiplerle bu sorun, programlanırken neyin geçerli neyin olmadığını hatırlamaktan daha önemli hale gelir.

Benim sorum şu, hangi stratejileri benimsiyorsunuz ...

  • Kullandığınız tüm dillerde mevcut olan tüm ayrılmış kelimelerin birliğini almanız, herkese bir liste vermeniz ve kullanımlarından kaçınmanız yeterlidir?
  • "bağlam değiştirme" sırasında çeşitliliği kabul edin ve fazladan acı çekin
  • bir dilin diğerinin kullanabileceği bir ara zemin benimseyin, bunun tersi

(Not: Bu soruda sadece Python ve JavaScript hakkında konuşuyorum ... ama lütfen soruyu daha geniş olarak cevaplayın)

-- GÜNCELLEME --

Tüm cevaplar için teşekkürler. Bu yüzden ortaya çıkan genel fikir birliği, programcıların diğer dillerde ne yaptıklarına bakılmaksızın herhangi bir isim kullanmalarına izin vermek - isimler açıklayıcı olduğu sürece, acıtmaz.


1
Ya da her değişken adının bir ile başlamasını zorunlu kılın $. PHP, JavaScript ve bazı C / C ++ derleyicilerinde çalışır . Bütün ciddiyetle, bu PHP doğru IMHO var bir şeydir.
Joey Adams

Yanıtlar:


46

30 yılı aşkın deneyimim boyunca birkaç dilde programlanmış olsaydım, herhangi bir dilde çalışacak adlandırma standartlarını bulmaya çalışmanın muhtemelen gökyüzü fikrinde bir pasta olduğunu söyleyebilirim.

Deneyimlerimin başlarında, C kodumu daha önce kullandığım Pascal koduna benzetecek şeyler oluşturmak için C'de # tanım makroları kullanmaya çalıştım. Pascal'da programlamaya o kadar alışkındım ki, C'yi Pascal gibi çalıştırabilirsem beni daha üretken hale getirebilirdim. Kısa süre sonra yanıldığımı keşfettim.

Beni daha üretken yapan şey, C'yi öğrenmek ve Pascal sözdizimini başka bir dile kullanmaya çalışmak değildi.

Programcılarınızı tek bir dilde bir şeyler yapmalarını engelleyerek potansiyel olarak kısıtlayacağınızı düşünüyorum, çünkü kullandığınız başka bir dilde yanlış yapmak.

Adlandırma kurallarınızı değişken kullanımı açıklamak için anlamlı olan şeylerle sınırlarsanız, muhtemelen hangi dilde olursa olsun iyi bir kod oluşturacaksınız.


3
Mantıklı olan isimler ihtiyacınız olan tek şey.
JeffO

24

Herhangi bir dilde yeterince açıklayıcı olmadıklarından, ilk etapta "list", "new", "var", "this" isimlerini adlandırmamalısınız.


2
Aynen "işlev". Eğer bir anahtar kelime değilse, sadece bir anahtar sözcük değildir.
MPelletier

11

Örneğin, javascript'ten python'a geçmek zaten bir bağlam anahtarıdır. Değişken isimlerinin kayması, özellikle isimdeki değişiklikler dil ile deyimsel olması kötü olduğunu düşünmüyorum. Hatta daha güçlü bağlam anahtarları bu durumda yardımcı olabilir iddia edebilir "dostum, şimdi python değil javascript yazıyorsunuz."


7

Açıklayan değişken isimlendirme kullanıyorsanız, tarif ettiğiniz problemin minimum olması gerektiğini düşünüyorum. Bununla birlikte, eğer asgari ise, diller arasında değişken isimlendirmenin neden olduğu bağlam kaymasını kabul etmek de minimal olur.


5

Ayrılmış kelimelerin çoğu (herhangi bir dilde) oldukça geneldir. Daha açıklayıcı olan değişken / işlev adlarını tercih ediyorum ve bu neredeyse hiç bu problemle karşılaşmayacağım anlamına geliyor. Orijinal isim şeması ile Charles Simonyi tarafından enfekte olduğunu itiraf etmeliyim - bu 70'lerin sonlarında, Macar Notasyonu bile denilmeden önce Xerox'taydı ve bu da isimlerin aklı başında bir insandan başka bir şey olduğu anlamına geliyor. hiç ayrılmış kelimeler olarak kullanırdı.


5

Bunun gerçek değil varsayımsal bir sorun olduğunu anlayana kadar kılavuz yazarak zaman kaybetmeyin .

Bunun nerede sorun olabileceğini düşünebileceğim bir durum, veri yapılarını programlama dilleri arasında paylaşmanızdır. Örneğin, istemci tarafında sunucu tarafında bir Python nesnesine yansıyan bir Javascript nesneniz varsa ve bunların doğal olarak üyeleri için aynı adlara sahip olmasını istiyorsanız. Bu durumda kural basittir: Hiçbir dilde ayrılmış sözcük olan adları kullanmayın. Bu kadar. İsterseniz bunu kılavuzlara yazın. Şimdi daha önemli görevlere geçin.

BTW, ne liste ne de dikte Python'da ayrılmış bir sözcük değildir. Oldukça berbat olanlar olsa da değişken isimler olarak kullanılabilirler.


3

Deneyimlerime göre, bunun çözümü, tüm diller için geçerli olan geniş adlandırma kurallarına sahip olmaktır. JavaScript, C # veya başka bir funky dil olsun, değişkenlerin ve sınıfların adlandırılma biçimi bir kod tabanı içinde bir standart haline gelebilir, bu yüzden genellikle bu sorunu çözdüğünü görüyorum. Sözleşmeler herkesin konsensüsüyle, sadece rehberlik isteyen çoğunluk tarafından, "Bu şekilde yapıyoruz" diyerek veya hayal edebileceğim birkaç olasılıkla kararlaştırılabilir.

Sınıfım veya değişken adım çoğu zaman bu kadar kolay çakışmayacak kadar açıklayıcı olduğundan, tanımladığınız tanımlayıcı sorunu nadiren görüyorum. Aynı zamanda, eğer takım başkalarıyla birlikte çalışıyorsa, takımın bunu nasıl ele almak istediğine dair netlik kazanmak önemli bir noktadır.


2

Kodu bir dilden diğerine taşımayı planlamıyorsanız, bunun nasıl bir sorun olabileceğini göremiyorum. Kişisel olarak hangi değişken adlarının geçerli olduğunu unutma eğilimindeyseniz, kişisel olarak geçerli olduğundan emin değilseniz bir değişken adı kullanmayın. Ancak başkaları geçersiz değişken adları kullanıyorsa, kodları derlenmez veya çalışmaz. Başka birinin kodu üzerinde çalışıyorsanız ve onlar 'var' adını verdiyse, kullandıkları dil için geçerli bir ad olduğundan emin olabilirsiniz.

Kodu bir dilden diğerine taşımayı planlıyorsanız, yasaklanmış adların bir listesine ihtiyacınız olabilir. Örneğin, C kodlama uygulamaları belgem yeni veya sınıfın değişken olarak kullanılmasını yasaklar, çünkü bu kodun C ++ 'a taşınmasını zorlaştırır. Bu durumda, gerektiğinde bu işi kolaylaştıran kurallar koymak mantıklıdır,


-2

Sadece küçük harf öncü CamelCase'e sadık kalın. Her yerde çalışır. Buna, uyumsuz sistemler arasında en düşük ortak payda aramak denir ve bunu sık sık yaparken bulacaksınız!


5
Bazı diller dışında ilk harfin durumu sözdizimi bakımından önemlidir.
Karl Bielefeldt

1
... ve birçok dilde kurulan kültürel yarı standardı ihlal ediyor.
tdammers

Macar Notasyonu CamelCase ... ;-)
Zeke

@Karl: öneri dilin sınırları ile sınırlı. Java'nın değişken isimlerini dolar işareti ile başlatabileceğini biliyor muydunuz? PHP gibi görünen Java kodunu gördüm, önceki programcının programlamayı öğrendiği belliydi!
dotancohen

@dotancohen: Yıllar önce, hocal dergisinde pascal'ın sahneyi hazırladığı bir pascal programına baktığımı hatırlıyorum. Kodun yapısından (ve değerleri alt rutinlere ve fonksiyonlara aktarmak için küresel değişkenleri kullanmaları), programın Pascal'ı yazdığım en iyi temel programlardan biri olduğu göze çarpıyordu . ;-)
Zeke Hansell
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.