2010-02-10 18 views
5

Delphi 2010'daki genişletilmiş RTTI, çalışma zamanında tanımlı Class and Record Helpers listelenmesinin bir yolunu sunuyor mu? Bir sınıf için birden fazla sınıf yardımcısı tanımlandığında, Delphi does not show a hint or warning'u bildiğim kadarıyla, sınıf yardımcısı tespiti 'kalite güvencesi' konusunda yardımcı bir rutindir olabilir. Delphi'deki tüm Sınıf Yardımcılarını çalışma zamanında RTTI kullanarak bulun.

Not; Tabii ki, asla kaynak kodu olmadan üçüncü parti bileşenleri veya kütüphaneleri kullanmamam gerektiğini biliyorum, bu da sınıf yardımcısının grep'lerini kolaylaştıracaktır.

+2

birden fazla yardımcı çalıştırma sırasında tanımlanan olup olmadığını önemli değildir. En yakın zamanda tanımlanmış olandan başka bir yardımcı tarafından tanıtılan yöntemleri kullanmaya çalışırsanız, kodunuz bile derlenmez, yani * çalışma zamanı olmaz. –

+0

@Rob: bağlantılı sayfadan alıntı (Turbocharging Delphi 2010): "tek bir sınıf türü ile birden çok sınıf yardımcılarını tanımlayabilir ve ilişkilendirebilirsiniz" - bu, tek bir sınıfla birden çok sınıf yardımcıunu ilişkilendirirseniz kodun derlenmeyeceği anlamına gelir artık? – mjn

+1

Birden çok yardımcı oluşturabilir, ancak yalnızca bir seferde geçerli olacaktır. Lütfen sadece alıntı yaptığınız cümleyi okumaya devam edin: "kaynak koddaki herhangi bir konumda yalnızca sıfır veya bir sınıf yardımcı uygulaması geçerlidir. En yakın kapsamda tanımlanan sınıf yardımcısı geçerli olacaktır. Sınıf yardımcı kapsamı normal Delphi modasında belirlenir (ör. ünitenin kullanım cümlesi sol) " –

cevap

9

sınıf yardımcıları sadece kapsamda "en yakın" ne yardımcı dayalı bir sınıf için geçerli olduğundan, bir sınıf sadece bir yardımcı var olduğunu bilemez. Örneğin, bir kaynağınız olmadığı başka bir üniteden bir sınıfa “yardım etmek” için ünitenizde bir sınıf yardımcısı oluşturabilirsiniz. Diğer ünitedeki sınıfın herhangi bir yardımcı hakkında hiçbir fikri yoktur. Eğer bu bilgiye sahip olsaydı, bunu hesaba katmak için yeniden derlenecekti ... ki bu da bir sonraki sayıya götürür;

bu düşünün: Eğer uygulama boyunca birçok başka birimler tarafından kullanılan ortak bir birimde ilan bir sınıf olabilir. Bu birimlerin her birinde, farklı yöntemler ve "yardımcı" işlevler ile bu ortak sınıf için yeni bir yardımcı olduğunu beyan edersiniz. Her ünite kendi yardımcılarını da bildiren diğer birimler hakkında hiçbir şey bilmediğinden, tasarımla, bir şekilde bütün yardımcıları bir şekilde birleştirmenin bir yolu yoktur. Şimdi bu ortak birimin önceden derlenmiş bir paket sınırında yaşadığını düşünün.

Sınıf yardımcıları baştan çıkarıcı küçük rahatsızlıklardır. Şöhret ve servet vaat ediyorlar, ama çok sık sık, ölümlerine ve yıkımlarına yağmur yağdırıyorlar ... ... uzun süre sonra, onların, kendi kurtlarına verdikten sonra. Bu nedenle

, diline bunların sokulması çok spesifik problemleri, varolan çerçeve içine işlevselliğini tanıtmak "görünür" için yani yeteneğini çözdü. "Yalnızca bir yardımcı" kuralına bağlı kaldığınız ve bu yoldan sapmadığınız sürece, göreceli olarak zarar görmemiş olabilirsiniz. Her şeye rağmen, Beowulf, Leonidas (Sparta) ve Frodo Baggins'in bu sularda gezinmek için birleşik intestinal formasyonuna sahip olmanız gerekecektir.

burada RAD Studio ekibi olarak, şimdiye kadar bu önlenebilir bir sınıf yardımcı kullanmaya isteksiz olan, göz önüne alındığında. Biz bunları kullanmak ne zaman biz bile başlamadan önce Ve uygun bir falanks ...

burada ejderhalar söz konusu ... oluşturulmuştur

+3

+1. :-) Eh, ** intestinal ** adında sınıf yardımcıları için yeni bir görünürlük tanıtmış olmalı ve bu Ar-Ge ekibi ve kanama kenarında bir kaç Paladins için ayrılmış var ...

+2

Ya bilmek, ben Her zaman sorta neden bu şekilde uygulandığını merak etti. Neden sınıf yardımcıları Delphi ekibinin bile onlardan korktuğu kadar korkutucu olmalı?Neden herhangi bir zamanda bir sınıfa sadece bir tane kullanmakla sınırlıyız? –

+0

Esas olarak dilin kapsam belirleme kuralları ile ilgilidir. Bu kuralları yıkmak üzereydik, çünkü bu daha büyük bir karışıklık karmaşası yaratırdı. Bu kurallar ve bunların tuzaklarını gerçekten ve gerçekten anlıyorsanız, korkutucu değiller. Sorunlar, yardımcıların framework'ünüzün API'sinin ayrılmaz bir parçası olarak kullanıldığında ortaya çıkar. Ardından düello yardımcılarıyla gerçek güreşme riskini yönetirsiniz. –

İlgili konular