Yöntem ve işlev adlarında “A”, “an” ve “the”: Almanız nedir? [kapalı]


16

Birçoğumuzun şu veya bu şekilde yöntem isimlerini gördüğümüzden eminim:

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

Yani, dilbilgisi açısından doğru İngilizce cümleler olan ve sadece nesir gibi okunmaları için ekstra kelimeler içeren yöntem adları. Kişisel olarak, bu tür "gerçek" yöntem adlarının çok büyük bir hayranı değilim ve hala mümkün olduğunca net olmakla birlikte özlü olmayı tercih ediyorum. Bana göre, "a", "an" ve "a" gibi kelimeler, yöntem adlarında basitçe garip görünüyor ve yöntem adlarını gereksiz bir şey eklemeden gereksiz yere uzun yapıyor. Önceki örnekler için aşağıdaki yöntem adlarını tercih ederim:

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

Deneyimlerime göre, bu, daha uzun isimleri yazmanın diğer yaklaşımından çok daha yaygındır, ancak her iki stili de gördüm ve bu iki yaklaşım hakkında diğer insanların düşüncelerinin ne olduğunu merak ettim.

Peki, "nesir gibi okunan yöntem isimleri" kampında veya "ne demek istediğimi söyleyen ama kötü bir yabancı dilden İngilizce'ye çeviri gibi yüksek sesle okunan yöntem" kampında mısınız?


7
Hiç böyle isimlerle yöntemler görmedim WriteTheRecordToTheDatabase. Birisi bunu kontrol ettiyse, ciddi bir konuşma yaparlardı.
Tim Robinson

13
" Please"? Vay canına
konfigüratör

3
Ben sadece wordpress "the_contents ()," "get_the_post ()," gibi şablon yardımcı fonksiyonları olduğunu eklemek istiyorum. Bu bok beni dışarı hata.
Carson Myers

1
@Carson Myers Hah, bunun gerçek dünyaya mükemmel bir örneği. WordPress koduna baktığım son anıları bastırmış olmalıyım :-)
Mike Spross

Yanıtlar:


21

Düzyazı yöntemlerinin bir istisna dışında emildiğine katılıyorum:

Birim Test Kutuları

Bunlar genellikle kodunuzda asla çağrılmaz ve test raporlarında gösterilmez. Bu nedenle, biraz daha düzyazılı okumalara sahip olmak kullanışlı:

  • AddacustomerOrderFailWhenCustomersIdIsInvalid: Başarısız
  • OutOfBoundsPriceReturnsAnError: Geçti
  • CanDeleteAnEventFromASeason: Geçti

Bu bile idareli bir şekilde yapılmalıdır, ancak bunu gramer eklemelerinin neyin geçtiğini ve neyin başarısız olduğunu ifade etmesini biraz daha kolaylaştırabileceği en az bir vaka olarak görebilirim. Bu, elbette, diliniz / çerçeveniz, test okumasındaki yöntem adları dışında test açıklamaları için iyi bir mekanizma sağlamadığı sürece, bu durumda bunu da göz ardı eder.


1
Düzyazı yöntemi adlarının gerçekten yararlı olabileceği iyi bir örnek için +1. Şimdi sen söyleyince çünkü ben komik olan bu özel yazma birim test isimleri yapılır ve özellikle bu yüzden ben bunları daha sonra çalıştırdığınızda halt testi yaptığını biliyordu.
Mike Spross

Bu yararlıdır ve Roy Osherove'un önerilen MethodUnderTest_Condition_ExpectedBehaviour birim testi adlandırma kuralına uyar . ör AddOrder_WithInvalidCustomerId_Fails. CreateItem_WithOutOfBoundsPrice_ReturnsErrorveDeleteEvent_EventExistsInSeason_Succeeds
StuperUser

Beklenen davranış için @StuperUser, aslında beklenen test sonucu koydu ve böylece yöntemin ne dönmesi gerektiği hakkında hiçbir fikrim yok.
yenilebilir kod

@danRhul Fair point, yeterince açık değildim; .._AdditionFailsve .._DeletionSucceedsdaha iyi olmalı. Yöntem sonucunu koydum, ancak belirttiğiniz gibi test / başarısızlık terminolojisini test etmekle karıştırılabilirler.
StuperUser

10

Lawrence'ı Ofis Alanından yorumlamak için ...

Hayýr, hayýr, adamým, burada çalýţtýđým biri "UploadTheFileToTheServerPlease" iţlevi olarak isimlendirdiđine inanýrsa, bir tekme atýyor.


10

Böyle "uzun" isimler nesir gibi gelmez . Yalnız olduğunda - belki de, ancak kodun geri kalanıyla birlikte, sadece daha fazla dağınıklık yaparlar. Bunu kontrol et:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

Bu geçerli bir İngilizce metin değil ve hiçbir programlama dilinde bir dil gibi görünmeyecek. Dolayısıyla, makalelere bayt harcamanın bir anlamı yok.


1
Bu yaklaşımı neden bu kadar sevmediğime iyi bir örnek! Soruyu yazdığımda, yalnızca nesir gibi ses çıkararak yöntem adlarına odaklanıyordum, ama seninle aynı fikirdeyim: çağrı kodunun gerçekten düzyazı gibi okunmasını sağlamak oldukça zor, bu yüzden bireysel işlev adlarının yazılı gibi ses çıkarmasına gerek yok İngilizce.
Mike Spross

3
Ben öneririmbool ResultOfTheGentlyUploadOfTheFileToTheServer
Wizard79

'Değişkenlerin' ve 'aMethod'un takip edilmesi gereken şirket standartları yaratan bir kişi ile çalıştım. Aynı kişi, tüm kod satırlarının dikey olarak sıralanmasını da severdi.
Chris

7

Programcılar açısından "UploadFileToServer", "UploadTheFileToTheServerPlease" dan daha kolay okunur ve anlaşılır olur.

İngilizce dilbilgisinden daha fazlası, okunabilirlik ve anlaşılabilirlik programlamada daha önemlidir!


Tamamen katılıyorum ... Birkaç gün boyunca ilk stilde yazılmış kodu okursam, beni çıldırtacağından eminim ..
Naveen

@Naveen: Böyle bir kodla çalıştım ve ilk şansım tüm bu yöntemleri yeniden adlandırdım. Ve bu sadece geliştirici veya değilse emin değilim, ama yani cümle, onları yazarken fonksiyonlar birden şeyler yapmak için bir eğilim olduğunu düşünüyorum UploadTheFileAndProcessItAndEmailTheOrdersToTheCustomersumarım hiçbir şey olmasına rağmen oldukça gerçek hayatta o feci.
Mike Spross

@Mike Sonra yöntemi 2 farklı yöntemlere refactor;)
Gopi

2

Hayatımın kaç yazım hatası olduğu göz önüne alındığında,

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

Cidden, sınıf adımın ne olduğuna bile bakardım. Sınıfım "Dosya" olarak adlandırılmış olsaydı, muhtemelen

*UploadToServer
*DownloadFromServer

Yani olurdu

   File file = new file;
   file.UploadtoServer(ServerAddress);

Sadece önemsiz bir örnek, ama umarım bu yeterince açıklayıcıdır.


Hehe. Aslında "Teh" adındaki "İngilizce benzeri" adlandırma modelini izleyerek yöntem adlarını kullandım. İkinci noktanıza gelince: Tamamen katılıyorum, yöntem isimlerinde artıklık benim bir başka evcil hayvanımdır ( File.UploadFileToServer... ugh).
Mike Spross

0

Şahsen umrumda değil. Onları gördüm ve beni rahatsız etmiyorlar. Başka bir programcı onlar hakkında konuşana kadar onları düşünmedim bile. Birinin çok az önemli bir şeye çok fazla önem vereceğini şok edici buldum. Demek istediğim aslında kızgındı. Ama bu kariyerimin başlarında, yaklaşık 11 yıl önce oldu ve o zamandan beri geliştiricilerin küçük şeylere kızgın olmasının aslında oldukça yaygın olduğunu gördüm. Bu yüzden geliştiricilerin yöneticilerine çok iyi ödeme yapılır. Geliştiricilerle günlük olarak uğraşmak zorundalar.

Ve bunu "UL_FlToSrv" yerine görmeyi tercih ederim.

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.