Neden açıklayıcı olmayan dahili kod adları kullanıyoruz? [kapalı]


16

Kod adlarını kullanmak oldukça yaygın. Firmamız da onları kullanıyor.

Ama asıl endişem bu isimlerin genellikle hiçbir yerde belgelenmemesidir. Ve anlam ağız kelimesi tarafından yayılır. Ve isimlerin adlandırdığı aracın veya varlığın işlevi ile ilgisi yoktur.

İç test makinelerinin takımyıldızlardan sonra adlandırıldığını, Halka açık sunucuların Yunan tanrılarının adını aldığını görüyorum. Ve projeler yerlerden veya rastgele seçilen bir film yıldızının veya karakter adının adını taşır. Ancak, makinelerin Windows veya Linux olup olmadığı konusunda doğrudan bilgi yoktur; 32 veya 64 bit sunucular. Ya da proje ne hakkında.

VCS'nin birisinin "Gandalf" projesini veya "Callanish" projesini veya herhangi bir projeyi kolladığını gördüğümde sadece kötü bir his var. Aynı nedenden ötürü, genellikle işlevlerinizi ve bunun gibi değişkenleri adlandırmazsınız.

En azından yeni varlıklar için daha açıklayıcı isimler kullanmamızı önerdim, ama çok güçlü bir muhalefetle karşılaştım. Görünüşe göre benim dışımdaki herkes böyle isimleri sever.

Öyleyse neden açıklayıcı olmayan kod adları kullanıyoruz?

Beni yanlış anlamayın Program sürümlerini ve kilometre taşlarını adlandırırken veya pazarlama nedenleriyle güzel bir ürün adına sahip olmakta sorunum yok. Ama diğer tüm yerleri açıklayıcı isimler görmek istiyorum.

DÜZENLE:

Size bir bağlam vermek için: Gandalf, 64 bit kodunu taşıyan bir projedir. Callanish onu Android'e bağlayan şeydir ... Eski şubeye 64bitporting ve ikincisine androidporting diyorum. Belki de ona eklenmeyi hedeflediğimizi belirten bir sonek. Böylece herkes adıyla ne olduğunu bilirdi.

Söz konusu sunucular, ürünü test ettiğimiz sanal makine görüntüleri ... Aslında çalıştığı fiziksel makineyi bilmiyorum. Yani onlara windowsxp_32, windows7_64, debian_32 veya solaris_64 demek tamamen iyi.


6
Size açıklayıcı olan, başkası için yeterince açıklayıcı olmayabilir. İsim, isim, isimdir. Karışıklık veya anlaşmazlık yok.
Robbie Dee

1
Pek çok cevap ve yine de, "Sunucularımı maksatla mı yoksa Yunan tanrıları olarak mı adlandırmalıyım?" Ve evet, ftp olan sunucuları hatırlamak söz konusu olduğunda, fileserver4'ü hatırlamak Aphrodita'dan daha kolaydır.
Vorac

2
Yazılım geliştirmeyle ilgisi olmadığı için bu sorunun konu dışı olduğu görülmektedir.
Mike Partridge

4
Bir isimde ne var? Başka bir kelime ile gül dediğimiz şey tatlı kokuyordu.
Caleb

3
Umarım Gandalf şubesi, bir birim test çerçevesinin kod adı değildir. İçinden geçen herhangi bir şey GEÇMEMELİDİR!
corsiKa

Yanıtlar:


25

İnsanlara kendi özelliklerine göre değinmiyoruz, çünkü onları açıklığa kavuşturmaya yetecek kadar ayrıntılı bir şekilde listelemek ve özellikleri değişebilir. Saç kesimi olursa ne olur? Bunun yerine onlara isimler veriyoruz. Ayrıca, insanlar kelimeleri hatırlamada rastgele sembollerin akışından daha iyidir.

Feragatname: Bu soru nedeniyle bazı görüşler ve anekdot hikayeleri içerecektir.

Birkaç yıl önce çalıştığım bir yerde, tüm sunucularımız aylardan ve vücut parçalarından seçildi. "Rhea", "Miranda", "akciğer", "böbrek" vb.

Sizin gibi, bunun biraz aptalca olduğuna ve bunları "arc-sql-w-4" veya "lon-web-lin-2" gibi daha "açıklayıcı" adlarla değiştirmemiz gerektiğine karar verdi. Bu çok muhalefetle karşılandı. Ama geçti. Her şeyi yeniden adlandırdık.

Peki yanlış giden neydi?

Daha önce, "kalp" kontrollü "kafa" ya da "Tarvos" un X için bir uygulama sunucusu olduğunu hatırlayabildiğimiz için hangi makinelerin birincil veritabanları ve köleler olduğunu kafamızın üstünden biliyorduk. Şimdi, aradığımız makineyi kısmen ama tamamen açıklamamış olan belirsiz bir sembol yığınını hatırlamak zorunda kaldık. Başımızda bazı arama tablosu aracılığıyla "lon-web-lin-1" in A ürünü için bir uygulama sunucusu ve "lon-web-lin-2" nin B ürünü için olduğunu bilmek zorundaydık.

FartDownTrousersForALivingDoYou gibi şifreleri kullanmanızın nedenlerine benzer. 43gH5 # 1 € yerine. İnsanlar kelimeleri hatırlamada iyidir, rastgele önemsiz yığınları değil. Kelimeler, şeylere atıfta bulunan sembollerdir.

Bir başka (muhtemelen daha pratik) sorun, DNS ve sunucu adlarınızı işlevlerine bağlamanızdır. Bu, adı değiştirmeden işlevi değiştiremeyeceğiniz anlamına gelir. Bizim için bu fiziksel konumu ve işletim sistemini de içeriyordu. Hangi eşek büyük bir acıdır.

Ayrıca, bu son nokta. İsimler çok daha eğlenceli.

Proje isimleri ne olacak?

Peki "Gandalf Projesi" yerine ne öneriyorsunuz? "Prototip fonksiyonu X'i projelendirin ve bir ürüne dönüştürüp geliştiremeyeceğimizi görün" Proje kapsamı değişirse, projeyi yeniden adlandırır mıyız? Yine isimler, şeylere atıfta bulunan steno sembolleridir.


5
Açıklayıcı olmayan hiyeroglifler için açıklayıcı metaforları değiştirdiğiniz anlaşılıyor. Hangi ürünün hangi sunucuda çalıştığını netleştiren bir adlandırma modeli uygulamış olmanız gerekir. "Açıklayıcı" olmak budur;)
back2dos

9
@ back2dos - Ve yeni bir uygulama sunucuya konuşlandırıldığında veya mevcut bir uygulama farklı bir sunucuya taşındığında, etkilenen tüm sunucuları yeniden adlandırır mısınız? Ürün A'nın adı ne zaman değiştirilirse (kod adları kullanmadığımız için)? Bu adın bir istemcide depolandığı her yeri değiştirecek misiniz? Yoksa değişikliğin kapsamını en aza indirmek için yanıltıcı DNS takma adlarını yerinde mi bırakacaksınız?
Justin Cave

5
@ back2dos - Yeni bir uygulama her dağıtıldığında sunucuların yeniden adlandırılması (ve tüm istemcilerin güncellenmesi) oldukça hızlı bir şekilde acı verir. 10. uygulamayı belirli bir sunucuya dağıtırsanız ne olur? Belirli bir sunucu adına referansları olan yüzlerce istemci makineniz olduğunda ne olur? db3.todoappyalnızca sunucu işliyorsa daha bilgilendiricidir todoapp. Pazarlama, uygulamayı "Organizer Pro" olarak adlandırmaya karar verirse ve sunucuda başka 8 uygulamanız varsa, adları yönetmek oldukça karmaşık hale gelir.
Justin Cave

4
Ayrıca, makineler birden fazla işleve sahip olduğunda ne olur? İsimler yönetilemeyecek şekilde büyür veya doğru bir şekilde tanımlanamaz.
tom

3
Back2dos ile anlaşmamak zor. "tanımlayıcı olmayan hiyeroglifler" tam olarak örneklerini okurken düşündüğüm şeydi. Back2dos'un rol ve kimliği arasındaki ayrım da özellikle önemlidir. Şirketimde, sunucular rollerine göre adlandırılıyor ve "http-blog-db-failover" gibi bir ad "Hermione" den çok daha açık görünüyor ve MongoDB'den CouchDB veya pazarlama, blogları barındıran web sitesinin ticari adını değiştirmeye karar verdiğinde.
Arseni Mourzenko

10

Eşyaları özelliklerine göre adlandırmak temelde kötü bir fikirdir. Bunun nedeni, özelliklerin tanım gereği değiştirilebilir olgular olmalarıdır ; bir şeyin kimliği , özellikler değiştirilse bile aynı kalır.

Birisi dosya sunucusunun Linux'a taşınması gerektiğine karar verir mi? Adı "Apollo" ise, bu bir sorun değildir. Ad "pencereler" e atıfta bulunursa, ya yanıltıcı olur ya da her yerde büyük bir masraf veya riskle değiştirilmelidir. Yeni bir çıktı biçimi mi sunuyorsunuz? Tanrı sevgisi için, ona 'newFormat' deme! Bu olacak sonuçta yine değiştirilecek ve hatta yeni biçimi ayırmak için daha da açıklayıcı bir ad gerekir. Ya '3' deyin, böylece daha sonra '4' ya da 'altın'a yükseltebilirsiniz, böylece' platin'e yükseltebilirsiniz.

(Ek bir neden, bilgi külçelerinden oluşan isimlerin çirkin olması. Hiç kimse "PC-Marketing-Windows7-143" adlı bir bilgisayarda çalışmak istemiyor - bunun üzerine "Apollo" hatta "Bacchus" alacaklar Ancak asıl mesele kimlik / mülkiyet bölünmesidir.)


5
Açıklayıcı adlar özellikleri değil amaçları açıklar . Çıktıyı görüntüleyen bir işlevi çağırırsanız Hermesevet, daha tanınabilir functionWithTenLinesOfCode. Şahsen ben buna derdim print.
back2dos

@ back2dos OP'nin verdiği örnekler eşdeğer gibi görünüyorprint_left_aligned_to_CRT_monitor()
Izkata

@Izkata: Kabul etmelisin, bu daha iyi Cathy(). not: Ben şahsen fonksiyon ve değişken isimleri Guns & Roses sözleri alıntı ile üretim kodu gördüm ve Buffy referans değişken ve fonksiyon isimleri ile üretim kodu yazma suçluyum.
slebetman

10

Deneyimlerime göre 3 neden var:

  1. Birçok benzer şeyi adlandırmanız gerektiğinde, hepsi için benzersiz açıklayıcı adlar bulmak zor olabilir. İnsanlar buna atıfta bulunmanın kısa ve benzersiz bir yoluna ihtiyaç duyarlar ve isimleri kullanmak sayıları kullanmaktan daha iyidir (sayı çok kısa olmadığı sürece). Bir isim verdiğinizde, aklınızda bir kişilik kazanma eğilimindedir, bu nedenle Gandalf sunucusunun, lapa güç konektörü SERWIN15AB23'ten daha iyi olan sunucu olduğunu hatırlarsınız. Ayrıca ikisini bir yazım hatasıyla karıştırmanız daha az olasıdır.

  2. Adlandırma işlemi eğlenceli olabilir. Bazı şirketler bunu bir oyla yapar. Diğer insanlar benzersiz isimler bulmaktan hoşlanırlar. Sadece herhangi bir ebeveyne sorun.

  3. Dış projeler için, genellikle adın ne olduğuna karar veren pazarlamadır ve normalde bunu gönderilmeden hemen önce yaparlar. Microsoft en son işletim sistemi "Windows 10 "'u ne zaman aramaya karar verdi? Her zaman böyle adlandırıldığından şüpheliyim. Proje bundan önce uzun bir süre devam ediyor olabilir ve bazı durumlarda projeyi gizlemek istersiniz, böylece şirket dışındaki insanlar ne hakkında konuştuğunuzu bilmez.


5
Ayrıca, adların söz konusu göreve uygun hale getirilebileceğini de eklemeye değer. Gandalf "sihir gerçekleşir" inşa sunucusu olabilir, Cerberus güvenlik duvarı, Hephaestus dev sunucusu vb olabilir ... sayıları fonksiyonlarla ilişkilendirmek çok zor
Liath

1
Bu arada: "Windows 10" iç adı aslında "Windows NT 6.4" dür. Ancak pazarlama asla 6.0 aka "Vista" işletim sistemi çekirdeği büyük bir yeniden tasarım aldı son sürümü olduğunu kabul etmeyecektir.
Philipp

@Philipp sadece bir Windows 7 makinesinin komut satırına "ver" yazın - 6.1 (her zaman şaka olan vista SP1), Windows 8'in kafamın üstünde ne olduğundan emin değilim.
Liath

Windows 8.1 Pro (Bu bilgisayarın Güncelleme 1'e sahip olmadığından eminim): 6.3.9600 msdn.microsoft.com/en-us/library/windows/desktop/…
WernerCD

@Philipp AFAIK, geriye dönük uyumluluk nedenleriyle yapıldı, çekirdek ne kadar değiştiğini yansıtmıyor.
svick

6

Açıklayıcı adlandırma zor ™, otomatik olarak kullanabileceğiniz bir kelime listesi ile gelen bir temanız varsa çok daha kolaydır.

Bunları adlandırma aynı nesnenin birden olduğunda foo1.6, foo1.2vb hızla kafa karıştırıcı / hata yapmaya meyilli oluyor. Örneğin, testinizi çalıştırmanız gerektiğinde, açıkken Virgohatayı hızlı bir şekilde fark edeceksiniz Cancer.

Ayrıca adlandırma kuralları yayınlandığında eğlenceli bir toplantı yapar ve müzik türlerinden sonra konferans odası adlarını temel almaya karar verirseniz ve kafeteryaya ad verirsiniz Salsa.


1
Descriptive naming is hard™, it's much easier if you already have a theme which automatically comes with a list of words you can use.Çok doğru. Ancak daha kolay olması, uzun vadede iyi olduğu anlamına gelmez. Söyledikleriniz uygun API tasarımı yapmanın aksine değil, çünkü sadece işlevselliği ortadan kaldırmak çok daha kolay.
back2dos

4

Bu, yüksek bağlam veya düşük bağlam kültürüyle ilişkili olabilir . Her şirketin, kuruluşun veya ekibin kendi kültürü vardır. Yüksek veya düşük bağlam kültürü, bir kültürün ne kadar açık bir şekilde ilişki kurmaktan hoşlandığı ve insanların bağlamdan ne kadar bilgi alması beklendiği anlamına gelir.

Tüm hizmetlerin kültürel referanslardan isimlerle adlandırılması bazı esneklik sağlar, ancak açıklıktan da yoksundur. İsimleri - yani hizmetin bağlamını - destekleyen, ağızdan ağza veya “kabile bilgisi” olmalıdır. Örneğin, "fizzbuzz" sunucusu ya da kimsenin ne yaptığını bilmediği "marcopolo" hizmeti olduğu, ancak trafiği aldıkları, bu yüzden bir şeyler yapmaları gereken durumlar gördüm.

Ben düşük bağlamlı bir insanım, bu yüzden bir sunucu veya hizmetin amacı hakkında bağlam sağlayan basit, açık isimler seçme eğilimindeyim . Ayrıca daha okunabilir hale getirmek için kodumu adlandırma konusunda dikkatli olduğum yerde "kendi kendini belgeleyen kod" yazıyorum.

Ama şu anda tüm hizmetlerin Transfomers'ın adını verdiği yüksek bağlamlı bir dükkanda çalışıyorum. İç çekmek. En azından isimleri tutarlı bir şekilde kullanıyorlar.

Bu yüzden daha çok kültürel bir değer gibi görünüyor, ancak teknik uygulamalar kültürel tercihlere adapte olacak.

Yüksek bağlam da daha komik olabilir ve bu konuda bazı değerler vardır.


3

Kod adlarının bir nedeni şaşkınlıktır. Bir projenin adını anlamsız yaparsanız, başkaları ne tartıştığınızı anlamadan herkesin önünde konuşabilirsiniz.

Benzer şekilde, sunucularınıza anlamsız adlar verirseniz, yetkili kullanıcılar dışında hiç kimsenin üzerinde ne olduğu hakkında bir fikri olmayacaktır.


2

Önemli soru şu: Açıklayıcı nedir? Diğer cevaplar, açıklayıcı olmayan şeyleri gösteren harika bir iş çıkardı.

Açıklayıcılığın, şeyleri rolleri , amaçları ile çağırmaktan geldiğini belirleyelim . By yaptıklarını . Örneğin, bir "kesici" nin ne yaptığı oldukça açıktır. Şimdi bir balta, bir lazer veya bir bıçak olabilir. Çok önemli değil. Ve bir lazer bir "işaretçi" de olabilir, bir balta da bir "dekoratör" olabilir ve bir bıçak da bir "delici" olabilir.

Yani, diğerlerinin de belirttiği gibi, bir şeyin özellikleri ile yerine getirdiği görev arasındaki ilişki nispeten gevşek. Bu nedenle OS sunucu adının bir parçası olmak değil açıklayıcı o olduğunu, dikkat dağıtıcı gerçek amacından.

Bileşenin X'i nasılDoesX başardığı üzerinde çalışmak sizin işiniz değilse, bu sizin işiniz değildir. Eğer bu sizin işinizse, o zaman hemen onunla karşılaşırsınız.

Raket ucube işaret ettiği gibi, bazen açıklayıcı isimler bulmak zordur. Ama çoğu zaman, bu şeylerin ne yaptığını anlamamanın , isimlendirmeniz gerektiğinin bir işaretidir . Bu anlayışa sahip olmadan önce, muhtemelen bilmediğiniz şeyi nasıl yaptığını düşünmemelisiniz;)


+1, ancak bir örnek eklemeye ne dersiniz? Soruyu yorumlarken kullandığım örneği kullanabilirsiniz ( http-blog-db-failoverblog barındıran bir web sitesinin yük devretme veritabanını barındıran bir makine için; Linux'tan Windows'a veya MongoDB'den CouchDB'ye geçmek adı etkilemez, pazarlama kararları da etkilemez. )
Arseni Mourzenko

2

İlk neden kısa ve akılda kalıcı olabilir. Projenin adını kaç kez söyleyeceğinizi veya yazacağınızı düşünüyorsanız, herkesin bildiği ve anladığı kısa bir ad varsa, önemli miktarda zaman kazanırsınız.

İkinci neden, dostluk inşa etmesidir. Eğer takım ismi seçerse, hepsi hoşuna giden bir isim seçebilir. Bu ince, ancak 'Q3 Muhasebe Güncellemeleri' adlı bir proje yerine Viper veya Gimley veya Boba veya Bugatti adlı bir proje üzerinde çalışırken takım moralinizi artırır. Bir grup araba meraklısı olan bir ekipte çalışan bir arkadaşım vardı. En sevdikleri proje başlama ritüeli, proje kodu adı olarak hangi arabayı kullanacaklarını seçmekti.


2

Her zaman bunun çoğunlukla yapılan bir şey olduğunu düşündüm çünkü insanları eğlendiriyor. İnsanlar medya tarafından karanlıkta dolaşarak gün ışığında çalışmak yerine değer katmak için şartlandırılır. 5 yaşında "Özel Ajan Oso" var; 15 yaşındayken James Bond. Gizlilik, insanların başka türlü sıradan faaliyetlerine (örneğin, bir bilgisayarın programlanması) önemli bir hava verir.

Benzer şekilde, bir kullanıcı Microsoft kod adı olduğunda "Longhorn" için bir logo yaptı ( http://en.wikipedia.org/wiki/File:Windows_Longhorn_logo.svg ). Neden birisi herhangi bir pazarlama çabasının bir parçası olmayacak bir kod adı için bir logo yapsın ki? İnsanlar yine böyle şeyler yapıyor çünkü onları eğlendiriyor. Photoshop'ta oyun oynamak, gerçek işi yapmaktan daha kolay / eğlenceli.


1

bilmediğiniz bir sistem olabilir.
Çalıştığım bir şirket, tüm sunucuları için Nobel ödülü kazananların isimlerini kullandı. Farklı Nobel ödülleri farklı kategorilerdeki sunucuları gösterdi.
Test sunucuları matematik kazananları, edebiyat kazananları sonrası veritabanı sunucuları, tıp kazananları sonra posta sunucuları, vb.
Adlandırılmış olabilir. onlarca yıl boyunca yüzlerce Nobel ödülü sahibi).

Evde benzer bir sistem kullandım, jet avcılarından sonra bilgisayarları, bombardıman uçaklarından sonra sunucuları ve volkanlardan sonra disk birimlerini adlandırdım.

Yazılım parçaları, ağaçlardan sonra isim üretim versiyonları, çiçeklerden sonra beta versiyonları vb.

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.