İyi bir isim düşünemediğinizde fonksiyonları / değişkenleri / vb. Ne adlandırıyorsunuz? [kapalı]


13

Bir işlevi / değişkeni / vb. Nasıl bir isim buluyorsun?

Eğer bir kullanırsanız geçici bunu 's gerçek adını verene kadar bir yer-kart olarak adı, geçici adı ne kullanıyorsunuz?


Güncelleme

Gibi şeyler kullanıyoruz WILL_NAME_LATER, NEEDS_NAMEya TO_BE_NAMED. Kabul edilmiş bir kongre olmasını umuyordum, aslında bu kabul edilmiş konvansiyonu kullanırsam IDE'm değiştirene kadar ismi vurgulamasını umuyordum.


Değişken adları için tüm büyük harfleri kullanmaya dikkat edin. Popüler sözleşmeyle, küresel bir değişken anlamına gelir.
sünger

@ sunpech, biliyorum, sabitleme için de bu adlandırma kuralını kullanıyorum. Ancak büyük harf kullanımını ön plana çıkarıyor, bu yüzden yeniden adlandırmayı unutma. Uzun süredir böyle ismini bırakmıyorum.
JD Isaacks

3
Söyleyen tüm insanlar için, asla bir isim bulmakta sorun yaşamamalısın ... Jon Skeet bile bazen yapamaz: stackoverflow.com/questions/521893/…
JD Isaacks

@JohnIsaacks Sanırım geçici olarak cesur olmalısın . Çok fazla insan bu soruyu okuyor ve kutsal bir şeye kod yapıyor. Dürüst olmak gerekirse, evet, özellikle daha önemli bir şeye geçmeye çalışırken özensiz kod yazabilirsiniz. Burada kodu taşa kazmıyoruz.
sünger

1
Bunun gibi bir şey için konvansiyonu, neden güncellemeniz gerektiğinin açıklamasıyla birlikte koda bir TODO eklemek olacaktır. Birçok araç bu TODO'ları ayrıştırabilir ve yapılması gerekenlerin bir listesini gösterebilir.
Eduardo Scoz

Yanıtlar:


29

Tasarlamak istediğiniz bir eser için bir isim düşünememek neredeyse imkansız. Özlü veya seksi olmadığı için hangi ismi bulduğunuzdan hoşlanmayabilirsiniz, ancak çok fazla düşünürseniz, kötü adlandırılmış bir eserle sonuçlanırsınız.

Diyelim ki nesneler inşa etmenize yardımcı olacak bir şeyiniz var, ancak bunun genellikle fabrika olarak adlandırıldığını bilmiyorsunuz. Sadece ObjectCreator deyin. Kulağa çok kulağa hoş geliyor, ama en azından açık.

Ana bilgisayar adlarını IP adreslerine dönüştüren bir sözlüğünüz olduğunu varsayalım. Sadece devam edin ve HostnamesToIpAddresses deyin. Elbette uzun, ama tam olarak ne yaptığını söylüyor.

Bir şey için bir isim bulamamanız, ne yaptığını bilmediğiniz anlamına gelir, bu da önünüzde daha büyük bir sorununuz olduğu anlamına gelir.


8
Her zaman tanımlayıcıların çok uzun olduğundan şikayet eden insanları tokatlamak istiyorum (sadece üç veya dört kelime olduğunda). Yazma hızımızla sınırlı kalmamalıyız ve eğer öyleyse, ABCD'ye bakmalı ve yazmayı öğrenmeliyiz!
dash-tom-bang

1
+1 nedeniyle "The inability to come up with a name for something means you don't know what it is doing". Bence bu gerçekten önemli bir nokta. Bunun farkına varmak, koddaki belirsizlikleri ve belirsizliği bulmanıza yardımcı olur.
BiAiB

34

Her zaman değişkenlerime ve fonksiyonlara harika isimler vermeye çalışırım .

Harika bir isim düşünemezsem iyi bir isim bulurum .

İyi bir isim bulmaya olamaz, ben bir kullanacağız tamam adını .

15 yıllık profesyonel programlamada hiç iyi bir isim bulamadım.


6
Şiirsel olduğu için +1.
sünger

1
... ancak 15 yıl 6 ay önce Microsoft Bob doğdu.
VirtuosiMedia

12

Bir değişken veya işlev üzerinde iyi bir ad düşünemiyorsanız, ne yaptığınızı anlamıyorsunuz veya kötü bir tasarıma sahipsiniz. Her iki durumda da, "x" gibi rasgele bir adı tokatlamak (koordinatlarla uğraşmadığınız sürece) ikileminizi çözmez; sadece daha da kötüleştirecek ve acıyı daha büyük tutacak.


8
Katılmıyorum. Geliştiriciler her zaman işletmenin terminolojisini tam olarak anlamayacaktır. Heck, müşteri bile ihtiyaç toplama sırasında terminolojiyi aktaramayabilir - zaman zaman kendi işlerini bile olsa! Ancak bu, yazılımın üretilmesini engellemez. Prototiplerin yaratılmasını durdurmaz. Ya da kod bile anlayış eksikliği nedeniyle dışarı atılır. Ancak bu durumlarda kodun hala üretilmesi ve teslim edilmesi gerekmektedir.
sünger

3
@sunpech Affedersiniz, ama bu biraz korkutucu. Bize aslında ne yaptığını bilmeden rastgele kod yazmanın yaygın olduğunu söylemeye mi çalışıyorsunuz? Bir şey bilmiyorsanız, öğrenmek için biraz çaba gösterin ve gelecekte sorunlardan kaçınacaksınız.
Adam Byrtek

@AdamByrtek Hayır, bunu demek istemiyorum. Söylediğim şey, bir müşterinin ne istediğini en iyi şekilde anlamak her zaman geliştiriciye ve takıma bağlı değildir. Bazı müşteriler ne istediklerini açıklamakta zorlanırlar ya da ne istediklerini bilmezler. Hatalı kod oluşuyor. Projelerde kötü gereksinimlerden gerçekçi olmayan sürelere kadar sorunlar yaşanıyor. Bu gerçek. Bir geliştiricinin tüm bilinmeyenleri çözeceği, müşterilerin mükemmel olduğu ve son teslim tarihlerinin doğru olacağı mükemmel bir dünya yoktur. Prototipler için oluşturulan kodlar atılacaktır. Ancak kodlamanın hala gerçekleşmesi gerekiyor.
Eylül'de sünger

devamı ... Check-in işleminden hemen önce üretim kodu veya nihai kod hakkında konuşmuyoruz. Henüz tam olarak anlamadığımız bir şeyi nasıl adlandıracağımızdan bahsediyoruz - başlangıçta muhtemelen iyi bir nedenden dolayı belirsiz olan bir şeye başlamak için (örnek: takımdaki hiç kimse henüz anlamıyor, belki değil) hatta müşteri). Ancak işler, bilinenlere dayanarak hala ilerlemelidir.
sünger

1
@ sunpech: Aslında kodda gördüğüm foove barkullandığım tek yer , bir kavramı göstermek için kullanılan küçük kod snippet'lerinde. Tabii, isimleri düşünürken de tökezledim, ama hiçbir zaman footek makul seçenek olan kötü bir pozisyonda bulunmadım . Bu olsaydı, gerçekten ne yaptığımı bilmiyorum ve ne yapacağımı bilinceye kadar çizim tahtasına ve sahte koduna geri dönmem gerekiyor.
gablin

5

Bu soru ve özellikle cevapları beni anlamsız korkutuyor. Birisi, değişkene sadece "Kupa" adını verdiğiniz kodu korumak zorunda kalacak. Eğer şanslı değilseniz, o kişi siz olacaksınız!

Bir değişkeniniz var. Bu bir şey. Zaten bir şeyi temsil ediyor. Ve şeylerin isimleri var. Bunların böyle olduğunu biliyorsunuz! Gerçekten bir şeyi başka bir şeyin arkasına isimlendirmeniz gerektiğini mi söylüyorsunuz çünkü gerçek şeyin adını bulamıyorsunuz?

Yineleyiciler i olarak adlandırılmalıdır. İç içe yineleyiciler muhtemelen bir hatadır, ancak onlara ihtiyacınız varsa, o zaman sesli harflerin geri kalanından geçerek (a, e, o, u ve tanrı bana yardım eder, evet, bazen y).

Bunun dışında, ne olduğunu söyle ve onunla yap!


9
Protesto etmeliyim! Açıkça, iç yineleyici j ve o içindeki k olarak adlandırılmalıdır . Uzun zamandır devam eden matematiksel gelenek omzunuzun üzerinden bakıyor!
Frank Shearar

Huh. Hiç j ve k yapmadım. Yine de mantıklı olduğunu görüyorum.
Dan Ray

8
Dijkstra'nın bilgisayar bilimleri için doğal bir uyum olmasının bir nedeni, adının en yaygın üç yineleyici değişkenini doğru sırada içermesidir.
glenatron

3
@glenatron: Son olarak, bu ismi nasıl heceleyeceğinizi hatırlamanın bir yolu!
yapılandırıcı

4

Hemen harika bir isim bulamazsam, geçici olarak bir "tamam" adı kullanır, sonra kodlamaya devam ederim. En azından mükemmel olmasa bile öğeyi yeterince açıklayan bir şey olacak . Neredeyse her zaman, belirli bir kod parçasının ilk taslağını yazmayı bitirdiğimde, bana daha mükemmel bir isim olacaktı. Kodlama sürecinde, o değişkenle olan niyetlerim daha net hale geliyor. (Öte yandan, bazen benim için değişkenin başlaması kötü düşünülür ve başka bir şey lehine silerim.)


3

Fonksiyonun yapması gerektiğini düşündüğüm şeyi adlandırıyorum - az ya da çok niyeti ileten bir şey. Fonksiyonun gövdesi yazıldıktan sonra, onu ne arayacağınızı ve geri dönüp gerekirse yeniden adlandırmayı açıkça görüyorum.


1
Bu her zaman işe yaramaz, özellikle de geliştirici, işletme / endüstrinin terminolojisine veya hatta amacına aşina olmadığında. Daha sonra tanımlanması ve değiştirilmesi gerektiğini ifade etmek için daha genel ve bariz bir şey kullanılmalıdır. OP, niyetin ne zaman bilinmediğini ve başlangıçta ne kullanılması gerektiğini soruyor gibi görünüyor . Adlandırma, az ya da çok amaçlayan bir şeyse, iyi bir ad zaten çok uzakta değildir.
sünger

1
@ sunpech Cidden, oldukça özel bir alana sahip bir işe ilk başladığınızda bile, bir işlev adı bulmakta zorluk çekmedim. Belki sadece daha fazla fonksiyon yazmam gerekiyor. :)
Adam Lear

1
@ sunpech: Bir işlevi ne yaptığını bilmeden nasıl yazabilirsiniz?
yapılandırıcı

4
@sunpech: Bunu söylemedim. Az önce ne yaptığını bilmeden bir fonksiyon yazamayacağınızı söyledim. Bu mümkün değil. Bunun olduğunu hiç görmedim ve bunun nasıl olabileceğini göremiyorum. Belki de sapkınım, ama bir fonksiyona DoFoo () adını verdiğinizde, içine ne koyarsınız?
yapılandırıcı

2
@ sunpech: İsimlerin başından beri 'iyi' olması gerektiğini hiç söylemedim. Sadece bir işlev yaratmak istediğiniz bir duruma nasıl geleceğinizi göremiyorum ama ne yapacağını bilmiyorsunuz.
yapılandırıcı

2

foo ve bar . Henüz fonksiyonları / değişkenleri adlandırmanın arkasında bir anlam olmadığından, tanımlamaya çalıştığım şeyle Foo ve / veya Bar'ın bazı kombinasyonlarını kullanıyorum.

Daha sonra ne adlandırılması gerektiğini daha iyi anladığımda aramayı / bulmayı kolaylaştırır.

Ayrıca wikipedia'da Foobar'a bakınız .

Foobar, foo, bar ve baz terimleri bazen bilgisayar programlamasında veya bilgisayarla ilgili belgelerde yer tutucu adları (metasyntaktik değişkenler olarak da adlandırılır) olarak kullanılır. Amaçları önemsiz olan ve sadece bir kavramı göstermek için kullanılan değişkenler, fonksiyonlar ve komutlar gibi varlıkları adlandırmak için kullanılmıştır. Kelimelerin kendilerinin bu kullanımda bir anlamı yoktur. Foobar bazen tek başına kullanılır; foo, bar ve baz bazen birden fazla varlığa ihtiyaç duyulduğunda bu sırada kullanılır.


1

İşlevinize bir şey ekleyin ve şimdilik en iyi çekim adını verin. Örneğin, seçilen kullanıcının tüm ürünlerini veritabanına kaydeden bir işlev RENAME_SaveAllProductsForTheSelectedUserToTheDatabase() olabilir.


Tabii ki, bu durumda, sadece işlevi adlandırmalısınızSaveAllProductsForTheSelectedUserToTheDatabase()
yapılandırıcı

1

Bu değişkenleri adlandırmak zor ne olursa olsun //TODO find a better name, daha sonra yeniden adlandırmak için geri gidebilirsiniz bir yorum yapmak

Genellikle, / function / class değişkenini kullanmaya başladığımda onlar için daha iyi bir isim bulurum.


0

Kodu aklınızda tutarken kısa süre içinde iyi bir isim koymak en iyisi, daha iyi bir isim vermenizi dilediğiniz zamana kadar beklemektir!


0

Neredeyse hiçbir zaman iyi, açıklayıcı isimler bulmakta sorun yaşamıyorum .. ancak bazen sınıflandırma ve değişken isimleri çok benzer olduğu için isimlendirme oldukça gereksiz hale geliyor. WebClient webclient = yeni Webclient (uri); ...ve benzerleri.


0

Bazen geçici olarak zzzz kullanıyorum.

Size yardımcı olacak iyi bir kural şudur:

  • Boole döndürür ve yan etkisi yoktur: Sonra bir sıfat kullanın (ile başlayın, oldu) ama asla gelecekteki gerginlik.
  • Farklı bir tür döndürür ve yan etkisi yoktur: Sonra bir isim kullanın.
  • Bir şey yapmaktan başka bir şey getirmez mi? Sonra bir fiil kullanın.
  • Bu bir sınıf mı: O zaman bir isim kullanın.

-1

Geçmişte bob'u çok kullandım , ancak bu işlev / komut dosyasında düzgün adlandırılmamış tek değişken olurdu, çünkü aksi takdirde kod hızla okunamaz hale gelir.

(bob uni günlerinden kalmadır - bob ve fred çağıran değişkenlerinden uzaklaşmak)

Kullanmak mutluyum i bir sayaç için.

Kısa ve çabuk olmasalar bile anlamlı isimler kullanmak daha iyidir.


Uygulamaları içindeki sınıfları ve uygulamaları için böyle isimler kullanan bir adamla çalıştım. Muhtemelen söylemeye gerek yok, kodu genellikle çok zayıftı.
dash-tom-bang

2
@ dash-tom-band: Kodunun genellikle çok bob olduğunu düşünüyorum.
yapılandırıcı

Eğer bir numaralandırma için ismimi Macarca bir gösterimde çalıştırabilirsem, biraz gergin olsa bile genellikle yaparım. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
Peter Turner

-1

Yirmi yılı aşkın bir süredir değişmeyen değişkeni isimlendirmek için hiçbir fikrim yoksa ... eski kız arkadaşların isimleri ya da keşke kız arkadaş olsaydım. Bu tanımlayıcıların bulunduğu son kod birkaç yıl önce üretimden kaldırıldı.



-2

bla , ama sadece geçici. Ben her zaman geri dönüp onları iyi değişken isimleri ile yeniden adlandırıyorum.


1
Bunu asla kullanmayın. Hayır. Kötü.
Dinamik

-2

Doit (), a (), b (c) xxxx () ....

Tabii onlar refactored alıyorum .... genellikle


-3

Masamda bir şeyler kullanmaya meyilliyim.

  • Fincan
  • Alt
  • foo
  • b / a / c (tek harfli önemsiz)
  • alk (belirgin çok harfli önemsiz)

Ayrıca genel isimlere (en azından işlevler için) yaslanıyorum:

  • takas
  • süreç
  • reviseVar
  • tamircilik

Bu geçici şeyler içindir. Ben yemin şey depo, çok daha az üretime yapar.

...


Her zaman kirli hissediyorum, ancak bazen bir yöntemin en belirgin adı "Git" veya "Yapılacak" dır. Ne zaman daha iyi bir isim bulabilirsem, ama bazen gerçekten "programın isminin ima ettiği işi yapmak üzeredir." Ancak bu bir işlev adı için kullanmak için çok uzun. :)
dash-tom-bang

@ dash-tom-bang: Bazı nedenlerden rundaha iyi görünüyor go. Belki de hepimiz programlarımızın daha hızlı olmasını istiyoruz.
yapılandırıcı
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.