Bir Android uygulaması geliştiriyorum ve Java ve Android'de çok yeniyim.Java sabitleri dosyası
Bazı etkinliklerde kullanmak için bazı sabitler oluşturmak istiyorum. Bu sabitleri nerede tanımlayabilirim?
Teşekkürler.
Bir Android uygulaması geliştiriyorum ve Java ve Android'de çok yeniyim.Java sabitleri dosyası
Bazı etkinliklerde kullanmak için bazı sabitler oluşturmak istiyorum. Bu sabitleri nerede tanımlayabilirim?
Teşekkürler.
ve en OO dilleri, sabitlerini tutmak için sadece bir sınıf tanımlamak için sağlar. İlişkilendirildikleri bir sınıftaki sabitleri tanımlamak daha iyidir. Genellikle bir tane var. Örneğin.
interface MyComponent {
/** The default height for a component */
public static final int DEFAULT_HEIGHT = 5;
// other stuff
}
gerçekten varsa değil biri ayrı bir sınıf tanımlamak için çekinmeyin.
DÜZENLEME: Burada anahtar noktalar şunlardır:
Normalde, a la, bir Sabitler sınıfını kullanabilir veya kullanıldıkları sınıflarda onları tanımlarsınız:
String inst = Constants.SOME_TEXT;
Sadece gösterdiğiniz örnekleri biliyorum, ancak CONST_'in sabitler için bir önek olarak kullanılmaması gerektiğini vurgulamak isterim. ALL_CAPS, bir sabiti belirtmenin standart yoludur. –
Ayrıca, bir sınıf yerine bir arayüz de yapabilirsiniz. –
Doğru, bu sadece bir örnektir ve muhtemelen C/C++'dan geliyorsa (ki bu sorudan kurtuldum hissi) askerin arka planını hatırlatıyor. – billjamesdev
:
class Constants {
public static final int NUM_TRIANGLES = 4;
public static final String SOME_TEXT = "This is a constant";
}
Sonra kendilerine başvurmak istiyorum Java numaralandırmalarında bazı sabitleri tanımlayabilirsiniz. Tek bir Java numaralandırıcısı, ilişkili verilerin birden çok alanını tutabilir.
Sayımcılara erişmek, yerel değişkenlere veya "statik final" e göre oldukça yavaş bir işlemdir (bildiğim kadarıyla java derleyicisi tarafından satır içi derlenir). Ayrıca, Sayımlar bellek/alan kullanımı söz konusu olduğunda oldukça yüksek bir yüke sahiptir. Http://developer.android.com/guide/practices/design/performance.html#avoid_enums – Tseng
en yaygın yolu onlara ihtiyaç sınıflarda 'constants' yaratmak idi şudur:
yerine o da korumalı veya kamu, default bildirilebilir özel birclass Example {
private static final int FILENAME = "test.txt;
}
. Sabitleri tanımlamak için bir OO anti pattern kabul edilmesine rağmen, tüm uygulama için sabitleri saklayan özel bir 'sabit' (God) sınıfıdır. Alternatif olarak, yapılandırma verilerini bir Java properties file'da da saklayabilirsiniz, bu bir anti-desen olarak kabul edilmez.
Diğer bir seçenek, o hızla popülerlik kazanıyor, Dependency Inject (DI) desen kullanımıdır. Genellikle bu desen bağımlı nesne için kullanılır, ancak aynı zamanda nesneler içine sabit değerler enjekte etmek için de kullanılabilir.Bu örneğin Google'ın hafif Guice DI çerçeve ile uygulanacak: Özel bir Binder sınıfında
class Example {
String filename;
@Inject
public Example(@ConfigFilename String filename) {
this.filename = filename;
}
Eğer @ConfigFilename ile açıklamalı Strings bir değer bağlayacaktır. Bu şekilde, bağımsız olarak test edilebilecek minimum birleştirme ve sınıflara sahipsiniz.
Android'de bir özellik dosyası kullanırsam. Onu nereye koyabilirim? – VansFannel
Örneğin, sınıf yolundan özellik dosyasını okumanın birkaç yolu vardır (sınıfları olan dizin): http://www.javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html – Kdeveloper
Hançer çok havalı https://github.com/square/dagger – Caipivara
adresine bakın, sadece değişkenlerin ve sabitlerin kod okunabilirliği için bir arayüz içinde olmamasını okudum. Buna katılıyorum, çünkü iyi bir isimlendirme ve bir “Sabirler” sınıfının daha iyi olduğunu düşünüyorum çünkü çoğu sabit farklı sınıflarda kullanılacaktır. Uygulamayı "yapılandırmak" için sabitler kullanıyorsanız, aynı zamanda tek bir yerde herhangi birşeye sahip olmak da iyidir – WarrenFaith
Değişkenler bir arabirimin içinde olamaz. Sabitler, inanıyorum ki, arayüzü uygulayan tüm sınıflar ile alakalıysa. Eğer sabitleriniz ALL sınıfları tarafından kullanılıyorsa, o zaman evet, bir Constants sınıfına koyun (yukarıda söylediğim gibi). Uygulamayı yapılandırmak için kullanılıyorsa, belki de Uygulama sınıfına aittirler. En önemli şey, onları bulmayı kolaylaştırmak ve herhangi bir sınıfa yüksek bir bağla sahip olmamaktır. Bir Constants sınıfı, dikkatli bir şekilde tedavi edilmezse, çok yüksek bir bağlanma eğilimindedir. – DJClayworth