Kaynakların nasıl adlandırılacağına dair kurallar var mı?


Yanıtlar:


28

Herhangi bir resmi tavsiye var mı bilmiyorum.

Widget'ları ve kapsayıcıları olan düzenlerimdeki kimlikler için şu kuralı kullanıyorum:

<layout>_<widget/container>_<name>

Bu düzenlerde kullandığım tüm boyutlar, dizeler, sayılar ve renkler için aynı stratejiyi uyguluyorum. Ancak, genellemeye çalışıyorum. örneğin, tüm düğmelerde ortak bir textColor varsa, adın önüne düzen eklemeyeceğim. Kaynak adı 'button_textColor' olacaktır. Tüm textColors kaynağı aynı kullanıyorsa, 'textColor' olarak adlandırılacaktır. Stiller için de durum genellikle böyledir.

Menü kaynakları için kullanıyorum:

menu_<activity>_<name>

Animasyonlar yalnızca büyük harf kullanamadığınız için farklıdır. Aynı şey çekilebilir xml kaynakları için de geçerli sanırım.


1
Bunu sadece uzun isimlerden kaçınmak için düzen ve widget adlarını kısaltmayı tercih ederim, örneğin kimlik doğrulama düzenindeki kullanıcı adı düzenleme kutusu: "authentication_editbox_username" yerine "au_eb_username"
Hossein Shahdoost

46

Android SDK, başlamak için iyi bir yer olacaktır.

Örneğin, etkinlik içindeki kimlikleri kapsamaya çalışıyorum.

Olsaydı , tüm faaliyetlerde ListViewolurdu @android:id/list.
Bununla birlikte, iki listem olsaydı, daha özel olanı kullanırdım @id/list_appleve@id/list_orange

Böylece R.java file, benzersiz olanlar (bazen yeniden kullanılır) bir alt çizgiyle ayrılan genel olanlarla öneklenirken genel (kimlikler, ...) yeniden kullanılır .


Alt çizgi bir şey gözlemledim, örneğin:

Olduğu genişliğinin Düzen layout_widthiçinde xml ve layoutWidthde kod Ben buna sadık kalmak için deneyin böylece,list_apple

Yani bir Giriş düğmesi olacak login, ancak iki girişimiz varsa o zaman login_foove login_bar.


Cevabınızdan kar edemediğim için üzgünüm. Gözlerim için oruç tutamayacak kadar çok hedefe ateş ediyor. Örneğin, iki etkinliğin iki farklı görünümünde oturan bir kayıt düğmesini nasıl adlandıracağınızı merak ediyorum.
Stephane

@StephaneEybert, Karışıma etkinlik adını ekleyebilir, neden farklı bir etkinlik görünümüne erişmek isteyesiniz? :)
Samuel

Bu güzel ve basittir ve xml kodunu temiz hale getirir. Ancak, bazı büyük uygulamalarda hata ayıklamaya çalışıyorsanız, "kapat" adlı elli farklı düğmeyi bulmaya çalışmak sinir bozucu olabilir. Ben çok onun düzeni adı ile her Görünüm adýnýnönüne tercih ederim.
SMBiggs

25

Alındığı Android'in belgelerinde . Konuyla ilgili daha fazlası var.


12
İki
sentim:

1
"Herhangi bir türden paylaşılan önek kullanmanız gerekmediğini unutmayın - bunu yapmak yalnızca size kolaylık sağlamak içindir." Bu, bu grafiğin altındaki çizgi. Yani önek seçim meselesidir.
Tushar Vengurlekar

Düz Dizeler için adlandırma kuralı nedir? Başvurumda kullandığım yaklaşık 30000 karakter dizisi var. Bu akıllara durgunluk veriyor.
Kullanıcı3

17

Sorunuza cevap vermek için: Evet, var.

Birçoğunu örneğin google arama yoluyla bulabilirsiniz . Ve en iyi adlandırma kuralı diye bir şey yoktur. Her zaman ihtiyaçlarınıza ve proje özelliklerinize (en önemlisi kapsam) bağlıdır.


Son zamanlarda, Jeroen Mols'tan Android XML'deki kaynakları isimlendirme hakkında oldukça iyi bir blog yazısı okudum . Yazar, tüm kaynakların izlemesi gereken temel ilkeden ve ardından bu sözleşmenin her kaynak türüne nasıl uygulandığından bahseder. Her ikisi de Android kaynak adlandırma hile sayfasında açıklanmıştır :

Android kaynak adlandırma kısa bilgi sayfası

Daha sonra her öğeyi ve her kaynak türünü ayrıntılı olarak açıklar.


Bu sözleşmeyi küçükten orta ölçekli projelere (kişisel kullanım, birkaç aylık sözleşme uygulamaları) kullanabileceğinizi söyleyebilirim. Yine de 50+ aktivite veya 1000+ dizge gibi uzun süreli projeler için tavsiye etmem.

Bu kadar büyük ölçekli projelerdeki kaynak değerlerine yönelik sözleşmeler, bunların nasıl kullanılacağına dair daha fazla araştırma yapılmasını gerektirir. Örneğin dizeleri ele alalım. Ekibinizin büyüklüğü, kullandığınız çeviri merkezi (varsa), VCS'den etkilenebilir (örneğin birleştirme çakışmalarını önlemek için) vb. Dizeleri birden çok dosyaya bölmeyi bile düşünebilirsiniz.

Başlamak için bir şey aradığınızı varsayıyorum. Bu yüzden bahsettiğim blog gönderisini tavsiye ederim. Yeni başlayanlar için iyidir ve kendi adlandırma kurallarınızı oluşturmak için kesinlikle ilham kaynağı olarak kullanabilirsiniz.

Ayrıca, bir proje büyüdükçe, birçok ihtiyaç ve gereksinimin zamanla değişebileceğini unutmayın. Bu nedenle başlangıçta uygun olan adlandırma kurallarının 2 yıl sonra uygun olmaması tamamen normaldir. Ve tamamen iyi. Geleceği tahmin etmeye çalışmamalısın. Sadece bir kongre seçin ve ona uyun. Size ve projenize uygun olup olmadığını göreceksiniz. Değilse neden uygun olmadığını düşünün ve başka bir şey kullanmaya başlayın.


15

Kaynaklarda kullanılan birkaç kural vardır:

  • Ayrı dosyalar olarak var olan kaynaklar için, küçük_ büyük_görü_göstergesi_ayrılmış olmalıdır. Appt aracı, dosyalarınızın yalnızca küçük harf olmasını sağlar, çünkü büyük / küçük harfe karma kullanmak büyük / küçük harfe duyarlı olmayan dosya sistemlerinde sorunlara neden olabilir.
  • Yalnızca değerler / ... (öznitelikler, dizeler, vb.) İle bildirilen kaynaklar için kural genellikle mixedCase şeklindedir.
  • Bazen adları basit ad alanlarına sahip olacak şekilde "sınıflandırma" ile etiketlemek için kullanılan bir kural vardır. Bu, örneğin layout_width ve layout_alignLeft gibi şeyleri gördüğünüz yerdir. Bir düzen dosyasında, hem Görünüm hem de üst düzen yönetiminin öznitelikleri, farklı sahipler olsalar bile birbirine karıştırılır. "Layout_ *" kuralı, bu adlar arasında hiçbir çelişki olmamasını sağlar ve adın hangi varlığı etkilediğini anlamak kolaydır.

Bu "layout_blah" kuralı başka birkaç yerde de kullanıldı. Örneğin, bir görünümün sahip olabileceği çekilebilir durumlar olan "state_blah" özellikleri vardır.

Ayrıca bu iki kural nedeniyle (dosyalar için alt çizgi_separated, bildirilen kaynaklar için mixedCase), bir dizi tutarsızlık bulacaksınız. Örneğin renkler, dosyalarla veya açık değerler olarak bildirilebilir. Genelde hepsine altçizgi_sırtı ile bağlı kalmak isteriz, ancak bu her zaman olmaz.

Sonuçta, kaynaklar için adlandırma kuralları konusunda fazla endişelenmiyoruz. Tutarlı tuttuğumuz en büyük özellik, öznitelikler için "mixedCase" ve düzen parametresi özniteliklerini tanımlamak için "düzen_blah" kullanımıdır.

Ayrıca buradaki kamu kaynaklarına göz atmak, sözleşmeler için iyi bir fikir vermelidir:

http://developer.android.com/reference/android/R.html

Özniteliklerin tamamen tutarlı olduğunu göreceksiniz (düzen_ kuralını anladığınız sürece), tüm çekilebilir öğeler alt çizgi_ ayrıldı, vb.


12

Bu, herhangi bir dil veya çerçeve için ortak bir sorundur, ancak ayrılmış kelimelerden kaçındığınız sürece, bir şeylere ne dediğini hatırlayabildiğinizi varsayarsak sorun olmaz.

Android'in xml kaynak dosya adlarına bir sınırlama koyduğunu ancak alt çizgilerin uygun göründüğünü not ettim. ADT aslında belirtir

Dosya tabanlı kaynak adları yalnızca küçük harf az, 0-9 veya _ içermelidir.

İlk başta beni harekete geçiren bir şey, kimliklere sahip ad alanlarının eksikliğiydi, ancak bu genellikle göz ardı edilebilir, eğer iki kimliğiniz varsa, aynı Android yalnızca tanımlanan kimliği yeniden kullanır.

İd'ler için 3 harfli niteleyici ve ardından deve notasyonunda ifade ettiği şeyi kullanıyorum, örneğin statik bir metin etiketi (veya metin görünümü) için lblFoo, düzenlenebilir bir metin kutusu için txtFoo (Android'de edittext). Bu ilk bakışta tuhaf görünebilir ama bunu VB6'dan beri kullanıyorum ve bu kontrollere etiket ve metin kutusu deniyordu.

İşte sık kullandığım birkaç tane daha:

  • btnFoo - düğme
  • pwdFoo - şifre
  • lstFoo - liste
  • clrFoo - renk
  • tblFoo - tablo
  • colFoo - sütun
  • rowFoo - satır
  • imgFoo - resim
  • dimFoo - boyut
  • padFoo - dolgu
  • mrgFoo - kenar boşluğu

Aynı şeyi java dosyasında da kodda kullanıyorum, bu yüzden düşünmek zorunda kalmıyorum, paket kapsamı buna oldukça mutlu bir şekilde izin verecek:

Button btnFoo = (Button)findViewById(R.id.btnFoo);

Alt çizgi kullanarak biraz boşluk eklemeyi tercih ederseniz, yani btn_foo ... Eski alışkanlıklarımı bozabilseydim, muhtemelen bunu yapardım.

Bunları kısaltmanın ideal olmayabileceğini ve sadık kişilerin tam adın kullanılması gerektiğini savunabileceklerini, ancak düzinelerce kontrolü adlandırdığınızda ve farklı sistemler ve çerçeveler arasında geçiş yaptığınızda, tam adlar anlamlarını yitirir. bunları VB, C ++, ASP.NET, WinForms in C # ve VB.NET, Android ve Python'da on yılı aşkın süredir kullanmaktadır. Android'in ona metin kutusu mu yoksa edittext mi dediğini asla hatırlamama gerek yok. Bilmem gereken tek şey lblFoo'nun statik etiket olduğu ve txtFoo'nun kullanıcının girdi yazdığı şey olduğu.

Son bir not, önemli şeylere hangi kurala karar verirseniz verin, denetimleri doğru ve tutarlı bir şekilde adlandırmaktır, böylece belirsiz varsayılan id'ler, örneğin TextView5 veya farklı kuralların bir karışımı ile uğraşmazsınız.


4

Tasarımcı ve geliştiriciler için faydalı bağlantı - burada

Boyutlar ve boyutlar, adlandırma kuralları, stiller ve temalar, dokuz yama vb.


3

Google tarafından desteklenen herhangi bir standart kongre olduğunu sanmıyorum. Farklı resmi Google uygulamalarında bile, insanların bir şeyleri adlandırmanın her türlü yolunu gördüm.

Bir dizin hiyerarşisinde 100 mizanpaj (veya çekilebilir öğeler, menüler, vb.) Dosyalarını anlamaya çalışırken size en çok yardımcı olan şey ne olursa olsun.


3

Kısa bir cevap: Android geliştiricilerinden bir şeyler öğrenmek istiyorsanız, iyi bir örnek destek kitaplığı v7'dir ( https://dl-ssl.google.com/android/repository/support_r21.zip )

Aksi takdirde, kaynakları adlandırmak için düşündüklerim:
1. kod yazarken kaynakları kolayca bulmak
2. kodu okurken kaynakları kolayca anlamak
3. isimleri çevirmenler için kullanışlı hale getirmek ( R.string.*yalnızca kaynaklar)
4. düzenleri yeniden kullanmak <include/>( R.id.*kaynak çakışmaları)
5. uğraşmak kütüphane projeleriyle

Mantıksal olarak, kaynakları düzenlemek, java sınıflarını paketler halinde gruplamaktan (veya dosyaları klasörlere koymaktan) farklı olmamalıdır. Ancak, Android kaynaklarının ad alanı olmadığından, aynısını elde etmek için kaynak adına önekler eklenmelidir (örneğin com.example.myapp.photoolur com_example_myapp_photo).

Uygulamayı, kaynak önekleri olarak kullanılabilecek kısa benzersiz adlarla ayrı bileşenlere (etkinlikler, parçalar, diyaloglar vb.) Bölmenizi öneririm. Bu şekilde, ilgili işlevselliğe sahip kaynakları birlikte grupluyoruz, bu da onları bulmayı kolaylaştırıyor (1. nokta) ve aynı zamanda hem <include/>kitaplık projeleriyle (4. ve 5. maddeler) ad çatışmalarını önlüyoruz . Birden çok bileşende ortak olan kaynakların hala bir öneki olabileceğini unutmayın (örneğinR.string.myapp_ok_button ) .

Önekten sonra, ad bize kaynağın ne için kullanıldığını (gerçekleştirilecek eylem, görüntülenecek içerik vb.) Söylemelidir. İyi bir isim seçmek, anlamak için önemlidir (2. ve 3. maddeler).

Bazen "bileşen_adı" bize yeterli bilgi verir, bu özellikle tür zaten R sınıfı tarafından verilmişse doğrudur ( R.string.myapp_name_string2. "dizge" de gereksizdir). Bununla birlikte, açıkça tür eklemek, anlayışı geliştirebilir (örneğin, çevirmenlerin bir tostu veya bir etiketi ayırt etmesine yardımcı olabilir). Bazen tür tabanlı filtrelemeye izin vermek için "ad" ve "tür" bölümleri değiştirilebilir (R.string.photo_menu_* bize fotoğraf bileşeni için yalnızca menü ile ilgili öğeler verir).

Diyelim ki resim çekmek için bir aktivite yazıyoruz, class com.example.myapp.photo .PhotoActivity. Kaynaklarımız şöyle görünebilir ("fotoğraf" bileşenine göre gruplandırılmıştır):

R.layout.photo //if only a single layout is used
R.menu.photo  
R.string.photo_capture_instructions_label  
R.id.photo_capture_instructions_label  
R.id.photo_capture_button  
R.id.photo_capture_image  
R.drawable.photo_capture_placeholder  
R.dimen.photo_capture_image_height  

2

Android'in belgelerine bakarsanız, "en iyi uygulamalardan" çeşitli bahsedilir, ancak kesinlikle somut kurallar yoktur. Örneğin, Simge Tasarım Yönergelerinde Google, simgeleri "ic_" önekiyle adlandırmayı önerir.

Kaynak Sağlama , başlamak için iyi bir yer olabilir .

Ayrıca , Google geliştiricilerinin işleri nasıl yaptığını görmek istiyorsanız , SDK kaynağını / örneklerinin yanı sıra Android Developers Blog'unu da inceleyin.


1

Dizeler için sonraki adlandırma kurallarını kullanışlı buldum:

[<action>]_<object>_<purpose>

Örneğin, clear_playlist_text, delete_song_message, update_playlist_positivebutton_text. Ve buradaki "eylem" isteğe bağlıdır.


0

Burada bir fikir edinmek için kod stili için google belgelerini okuyabilirsiniz


9
Bu makalede, Android'in kaynaklar konvansiyonu hakkında hiçbir şey yok.
Eugene

Üzgünüm sanırım sorunuzu yanlış anladım. Menü dosyalarında kelimeleri ayırmak için alt çizgi kullanmanız gerektiğini biliyorum. ör. options_menu.xml
Kevin Qiu

0

Kimliklerin önüne "x" eklemem dışında genellikle kaynak kimlikleri için (dosyalar için değil) java adlandırma kurallarını izledim, örneğin:

<TextView android:id="@+id/xTvName" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

Java'da bunu basit kullanabiliriz (basit olarak da hatırlayabiliriz)

TextView mTvName=(TextView)findViewById(R.id.xTvName);

Burada mTvName (Genelde android önerilen adlandırma kurallarıdır) ve mizanpaj dosyasında android TextView ID'sinin (x XML anlamına gelir) bir parçası olarak adlandırılan xTvName, Buttons ve EditText gibi nesneleri görüntülemek için bu tür adlandırma kurallarını takip ettim.

XML IDS'de : xViewTypeSpecificName

Java'da: mViewTypeSpeficName

Yukarıdaki kurallar, karmaşık düzenler oluşturduğumda hayatımı kolaylaştırıyor. İsimlerinizi olabildiğince kısa tutmaya çalışın ve diğer ortak geliştiriciler için anlaşılabilir ve anlamlı olmaları daha iyidir (ancak her seferinde mümkün olmayabilir), Deneyimlerimin başkalarına yardımcı olacağını umuyorum, önerilerinizi bekliyoruz.


0

Android projelerimizde butonlar, etiketler, metin kutuları gibi birçok bileşen var. Örneğin "ad" gibi basit bir ad, "ad" ı tanımlamak için çok kafa karıştırıcıdır, etiket veya metin kutusu. Esas olarak, başka geliştiriciler tarafından geliştirilen projeleri sürdürürken olur.

Bu tür bir karışıklığı önlemek için, Buttons TextBoxes veya Labels için aşağıdaki adları kullandım

Misal :

 btnName
 labName
 txtName
 listName

Bu sizin için yardımcı olabilir.


-2

Bazı kısıtlamalar var:

  1. Kaynak adı az, 0-9, _ içermelidir
  2. Kaynak adı az, _ ile başlamalıdır

Bu arada, yönergelere uymanız veya standart koddan öğrenmeniz daha tavsiye edilir.

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.