Fonksiyonları olan fiilleri, sınıfları olan isimleri kullanın - peki ya arayüzler? [kapalı]


23

Tamam, fiillerin işlevlerle ve isimlerin sınıflarla kullanılmasının normal kurallarını anlıyorum. Arayüzler ne olacak? Arayüz isimleri ile geldiğinde bu kadar açık olmayan herhangi bir metodoloji var mı?

Sadece netleştirmek için, ismin önüne bir "Ben" koymak ya da camelCase veya PascalCase kullanıp kullanmamaktan bahsetmiyorum. Bir arabirim için açık, anlamsal bir ad bulma yöntemini merak ediyorum.

EDIT Bir arayüzün en net şekilde nasıl isimlendirileceğini saplantılıyorum. Sanırım sadece bir isim olmalı çünkü sınıfları isimlendirmeyi düşündüğümde ilgili olabileceği en yakın "gerçek" dünya nesnesini düşünüyorum. Sanırım gerçek dünya arayüzleri klavye, fare, uzaktan kumanda, ATM ekranı gibi şeyler. Bunların hepsi isim. Her neyse, arayüz adlarını formüle etmek için iyi bir yol hakkında herhangi bir ilave fikir edinmek memnuniyetle karşılanacaktır.


2
Hm .. Başlığa dayanarak, bunun programlama ile İngilizce arasındaki konuşma bölümlerini eşitlemek olacağını düşünmüştüm. Bu durumda, madlibs mümkün görünüyor.
Izkata

Unutmayın, bir sınıf oluşturduğunuzda, o sınıfın başlattığı nesneler için bir arayüz de yaratırsınız ... Veya başka bir deyişle, sınıflar arayüzler olarak gerçekleşir . Bu yüzden aynı adlandırma kuralını kullanmaları gerekir.
Daniel T.

Ayrıca, IMHO "işlevli fiilleri kullanma" çok geneldir. Fiilleri komutlarla ve isimleri sorgulamalı olarak kullanmalısınız .
Daniel T.

Yanıtlar:


21

Arayüzün tanımladığı şeylere bağlı olduğunu söyleyebilirim. Arabirimin oldukça ayrıntılı ve ayrıntılı olduğu bazı durumlarda, bir ismin en iyisi olduğunu düşünüyorum. Örnek olarak IList, ICollection.

Bazen bir arayüz, bir sınıfa belirli genel özellikler eklemekle ilgili olsa da. Bu durumda bir sıfatın en iyisi olduğunu düşünüyorum . Örnekler IDisposable, IEnumerable...

Belki de bunu düşünmenin başka bir yolu da arayüzünüzün kaç tane "yetenek" tanımlamasıdır.

Örneğin, IList<T>arayüz bu yetenekleri tanımlar: Ekle, Temizle, İçerir, Ekle, Kaldır, ... Bunlar listenin tüm özellikleridir, yani IListiyi bir isimdir.

IDisposableÖte yandan, yalnızca bir yeteneği tanımlar: At. Bu yüzden tek kullanımlık olan her şey için uygundur. Dolayısıyla adı IDisposable.


10
Arayüzünüz nesnenize yapılabilecek şeylerden sonra adlandırılacaksa "_able" sıfatını kullanmanızı öneririm (örneğin IEnumerable), arayüzünüz nesnenin diğer nesnelere yaptıklarından sonra adlandırılacaksa "_er" adı ( örneğin IEqualityComparer) ve eğer arayüzünüz davranışını taklit ettiği bir türden (örneğin IList<T>) isimlendiriliyorsa, genel bir isim .
Supercat,

@Supercat tarafından yapılan yorum gerçekten bu cevaba dahil edilmelidir. Çok mantıklı.
Nikhil Vartak

Aslında arayüz isminin önekini vermek Igereksizdir.
user1870400

5

Bir arayüz davranışı açıklar, böylece isimler söylemelidir. Bunun için bir kuraldan emin değilim, ancak duyduğunuzda adı bileceksiniz.

Bazı örnekler:

Flyable      - Can Fly
Workable     - Can work
Negotiatable - Can negotiate.

Arayüzleri Iadlandırmak ve çağırmak uygun değildir Set, ISetçünkü geliştirici olarak arayüz mü yoksa sınıf mı olduğu konusunda endişelenmenize gerek yoktur. Görüyorum ki bu uygulama şu anda Java'da mevcut değil.


+1 "geliştirici olarak bir arabirim veya bir sınıf olduğu için endişelenmemelisiniz."
Kazark

"bir geliştirici olarak bir arayüz mü yoksa sınıf mı olduğu konusunda endişelenmemelisiniz" - aynı fikirde değilsiniz, çünkü eğer bir arayüz ise o zaman hangi üyeleri uygulamanız gerektiğini bilmeniz gerekir.
Maximus Minimus

@MaximusMinimus ön eki ile beraber Igereksizdir. Öyleyse neden Anormal sınıfları Cvb.
user1870400

@ user1870400 - doğru, ancak katılmıyorum kısmı bu değil.
Maximus Minimus

4

Bir arayüz gerçekten bir türün "ne" değil, "nasıl" değil bir ifadesi olduğundan, onları en azından konuşma perspektifinin bir kısmından sınıfları adlandırdığınız şekilde adlandırırdım. Buna ekleyebileceğim tek şey, genellikle belirli uygulayıcılardan daha genel olacağıdır (örneğin, "Müşteri" arayüzü "ProspectiveCustomer" ve "PayingCustomer" uygulayıcılarına sahip olabilir).


0

Arayüz sınıf gibi kullanılır. Bu nedenle, isimleri olan sınıfları adlandırırken bir isimle de adlandırılmalıdır. Sınıfları "Araba" ve "Kamyon" olduğunda, soyut isimleri, örneğin "Araç" ı seçin.


0

Hızlı Yanıt: Arayüz daha eklenmesi hakkındadır SET vb varlıklar, sınıflar, modeller, kavramlar arasındaki yetenekleri, özellikleri, ortak sınırların veya bağlantıların ..

Sınıflara ve varlıklara ortak davranışlar eklemenin yanı sıra, gerçekleşen özelliklerin setini tanımlamak için iyi bir anlamlı isim ortaya çıkacaktır.

Arayüz Adlandırma gibi: IStateMachineBuilder, IUserContextProviderBuilder, IEntityBuilderBuilder, IActiveAware, etc.muhtemelen kavramı açıklar.


1
Evet, arayüzler sözleşmeleri veya yetenekleri temsil eder; çok iyi bilinmektedir. Fakat bu nasıl isimlendirileceği sorusuna nasıl cevap veriyor? Gerçekten bu konuda söylediğiniz şey, "Bir düşünün, ilham size çarpacaktır." Bu, örneğin, aşağıdaki adlardan hangisinin seçilmesi gerektiği, herhangi bir nedenden ötürü hiçbir öneride bulunmaz: IStateMachineBuilder(isim), IBuildStateMachine(bir eylemden sonra adlandırılmış), ICanBuildStateMachine(bir yetenekten sonra adlandırılmış), vb.
stakx

0

Eğer arayüz sadece metotlar içeriyorsa, "Actions" gibi bir fiil kullanarak isimlendirmek iyi olacaktır, burada statik olan bir sınıf temsil ediyormuş gibi, statik, son alanlar varsa o zaman "Vehicle" gibi bir genel isim kullanabiliriz.

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.