Sınıfları adlandırmak güçsüzleşir [kapalı]


9

Bunun bir OKB özelliği olup olmadığından emin değilim, ancak bazen dışarıda kullanıldığına inandığım bir sınıf (veya işlev veya ad alanı vb.) belirli bir projenin. Örneğin bir API. Veya bir yardımcı sınıf sınıfı kitaplığı.

Adlandırma tam olarak doğru değilse (aklımda) devam edemiyorum ... Doğru adı bulmaya çalışırken takılırım. İsimlerin nasıl göründüğünü görmek için kullanacak küçük uygulamalar yazmaya çalıştım, ancak bu yardımcı olmadı ...

Bunun önemli olmaması gerektiğini biliyorum ve ilk önce mükemmel hale getireceğinizi varsaymak herhangi bir programlama zihniyetine karşı ... Sadece kendimi güçsüz hissediyorum ...

Herhangi bir ipucu / fikir büyük mutluluk duyacağız ...


3
Deneyimlerime göre, sınıfın bedenini kesinleştirdikten, yeniden çarpanlaştırdıktan vb. Sonra, sınıfın adı ve yöntemleri yerlerine düşmeye başlar.
İş

11
Zorunlu alıntı: “Bilgisayar Biliminde yalnızca iki zor sorun vardır: önbellek geçersiz kılma ve bir şeyleri adlandırmak.” - Phil Karlton
Macke

Tanıdık His. Sadece vazgeçmeyin, "Common", "Utilities", "Managers" ve "Helpers" adlarını vermeye başlamayın. :)
Arnis Lapsa

Yanıtlar:


10

Aklıma gelen sorun sadece iyi isimler bulmanın daha iyi bir yolunu bulmak değil, bununla ilgili zorunlulukların üstesinden gelmektir. Dürüst olursam, kendi içimde de benzer bir özellik tanıyorum. Ne de olsa isimler önemlidir ve üzerinde çalıştığım kavramlar için iyi bir isim istiyorum. Ancak, her zaman en önemli şey değildir.

İşte bu tür şeylerin üstesinden gelmek için kullandığım yöntemlerden bazıları:

  1. Mükemmel bir çözüm olmadığını, sadece diğerlerinden daha iyi çözümler olduğunu kabul edin.
  2. İlk önce koyun. Bir programlama ödevini tamamlamak, mükemmel bir şekilde yapmaktan daha önemlidir.
  3. Diğer insanlara sorun. Hepimizin bataklık yaptığımız alanları var, ama neyse ki farklı yerlerde farklı insanlar bataklık yapıyor. Belki başka biri iyi bir isim bulur ya da bunun gerçekten önemli olmadığını söyler.
  4. Bir zaman sınırı belirleyin. Asıldığınız şeyi yapmak için kendinize x dakika verin, sonra devam edin.
  5. Daha sonra geri döneceğinize kendinize söz verin. Geri dönmek istediğiniz şeylerin bir kaydını tutun. Bu tür problemlerin birçoğu, onları biraz yalnız bıraktığınızda daha açık hale gelir. Ya daha sonra daha iyi bir isim bulacaksın ya da bunun gerçekten önemli olmadığını anlayacaksın.
  6. 100 yıl içinde hiç kimsenin umursamayacağını unutmayın.
  7. Tam tersini yapın. Bir sınıfa gerçekten kötü bir isim verin ve neler olduğunu görün. Bu, ya daha iyi isimler için zaman harcamanın gerekliliğini doğrulayacak ya da ne kadar az önemli olduğunu gösterecektir. Ayrıca, bu saplantılı zihin setinden kurtulmanıza yardımcı olacaktır.
  8. Dua etmek. Bu genellikle benim için işe yarıyor.
  9. Yaptıklarınızdan ayrı olarak kendinize değer verin. Kendi değerinizin mükemmellik sunmaktan geldiği fikrinden uzaklaşın. İçsel değere sahip olduğumuzu fark ettiğimizde, işlerimizden ayrı olarak, kendi standartlarımızı ölçmediğimizde daha az utanç duyarız.
  10. Yeni kelimeler oluşturun ve sınıflarınızı adlandırmak için kullanın ya da sadece eskilerini yeniden kullanın. Programlama yaratıcı bir süreçtir ve bazen yakaladığımız fikirler yeni fikirlerdir. Yeni fikirlerin yeni isimlere ihtiyacı var. "EmployeeTransmogrifier" bir sınıf için mükemmel bir isimdir.
  11. Yanlış sorunu çözmeye çalıştığınızı düşünün. Örneğin, arayanın ihtiyaçlarının ne olduğu konusunda net bir fikir sahibi olmadan bir API yazmak iyi bir fikir değildir. Bu sorunu çözerseniz, adlandırma sorununuz çok daha kolay olabilir.
  12. Öğlen yemeği yemek. Öğle yemeği her zaman iyidir.

4
Öğle yemeğinde +1. Birçok insan bir sorunu çözmek için başka bir şey düşünmeye yeterince değer vermez.
holysampler

Bazı harika ve iyi düşünülmüş noktalar ...
davidsleeps

5

birinci olarak

Kendinize "bu sınıfın tek amacı nedir?" Sorusunu sorun. Tek Sorumluluk İlkesine bağlı kalmaksızın, sınıfları ve yöntemleri adlandırmak çok zorlaşır. Bu soruya cevap veremiyorsanız, sınıfın ne yapmasını istediğinizi yeniden düşünmeniz ve endişeleri ayırmanız gerekebilir. Bu, adlandırmayı kolaylaştırır

ikinci olarak

Sınıflarınızı nasıl adlandırdığınıza dair bir düzeniniz var mı? Belki de yukarıdaki SRP'ye hitap ettikten sonra takip edilmesi çok daha kolay hale gelen bazı yaygın adlandırma kalıplarına, örneğin kalıba bakmayı deneyin. Sınıfınız XML'i ayrıştırıyor mu? XMLParser'ı deneyin. XML'i ayrıştırıyor, girdiyi temsil etmek için etki alanı modelleri oluşturuyor, DB'ye devam ediyor ve Twitter'a bir başarı mesajı gönderiyor mu? Yeniden düzenleme yapmayı deneyin.

üçüncü olarak

Nereden geldiğinizi anlıyorum ve daha önce benzer bir durumda bulundunuz. Belki de sınıfınızı başlangıçta geçici bir adla bazı işlevlerle silmeyi deneyin. Herhangi bir iyi IDE veya yeniden düzenleme asistanı ile, sınıfın yeniden adlandırılması tek tıklamalı bir eylem olmalıdır, bu nedenle sınıfınıza ilk olarak adlandırdığınız şeyin kalıcı olması gerekmez! Bu hem OKB blokunuzu aşmanıza yardımcı olur, hem de bilinçaltınıza biraz daha ilerlemeniz için zaman tanır.


Sonunda ve biraz konu dışı

Geçen gün yaptığım bazı işlerde bir ampul anım vardı, kritik olmayan bir sistem uyguluyordum ve farklı sınıf isimleri vb. İle oynamak için adil bir zaman harcıyordum. özel uygulamalarına göre sınıflar ... Örneğin, IXMLParser ve XMLParser'a sahip olabilirsiniz, ancak girdiniz JSON olarak değiştiğinde ne olur? Bunun yerine IInputParser'ı deneyin, böylece her ikisi de IInputParser'ı farklı şekillerde uygulayan somut sınıflar XMLParser ve JSONParser oluşturabilirsiniz.


Evet, ben de bu tür bir an yaşadım ... sorun çok iyi olsun ve asla istenen kodu yazamazsınız, üçü her zaman soyutlama düzenidir ...
Robin Vessey

1

Benim için genellikle tasarım aklımda net olmayan bir işarettir, bu yüzden bir isim oluşturuyorum ve kendime daha iyi bir tane bulmak için bir zaman veriyorum (diyelim 2 dakika), o zamanın sonunda, ilk geldiğim kişiyi kullan. Barney, Wilma ve Fred ile başlamanın favorileri. "BarniesInputParser" gibi şeyler yapıyorum İsimler o kadar kötü ki daha iyi bir tane bulmak ya da daha sonra değiştirmek zorunda. Ayrıca benzersiz oldukları için o kadar kötüler ki, yeniden düzenlemeyi önemsiz ve güvenli hale getiriyorlar ve eksik koda bakan herkes aniden eksik olduğunu görebiliyor.

Önemli olan, işlevsellik eklemezken, beyninize adı tanımlamak (ve tasarımı netleştirmek) için yeni bilgiler vermemenizdir. Tek yaptığınız aynı girdiyi farklı şekillerde canlandırmak.

Ya da bir kahve yap. Makineye gitmeden önce sahip olacaksınız ...


korkutucu bir şekilde, bu şekilde adlandırılan sevk edilen yazılımı biliyorum ... 5 yıl sonra şirkette hala "Tim" in kim olduğunu bilen tek kişi olduğunuzu açıklamaya çalıştığınızı hayal edin.
Yaur

0

Bunu bir süre önce bir arkadaţýmdan aldým. İşleminizin ne yapması gerektiğini yazın. Kısa bir anlatım. Sonra isimleri alın ve sınıflara, fiilleri yöntemlere ve zarfları özelliklere dönüştürün.


Bu basit, öğretme için CS101 tipi egzersizdir NYAT . Ancak, bir profesör veya ders kitabı yazarı tarafından kabul edilmeyen herhangi bir gerçek sistemde yetersiz kalır.
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.