Yarn: Awalan vs akhiran dalam penamaan kelas

Dibuat pada 29 Okt 2018  ·  17Komentar  ·  Sumber: FabricMC/yarn

"BiomeDesert" vs "DesertBiome", dll. Atau "ComponentTranslatable" vs "TranslatableComponent".

Yang pertama memiliki keuntungan saat menyortir nama di editor dan merupakan preferensi pribadi saya; yang terakhir ini lebih umum dalam pengembangan Java dan lebih disukai oleh kebanyakan orang lain.

discussion

Komentar yang paling membantu

Ya. Saya sudah tertarik untuk melakukannya, itu hanya upaya yang layak untuk duduk dan melakukannya .

Semua 17 komentar

dari diskusi pribadi dengan @asiekierka tempo hari:

22:34 <kasheek> I have a 'block' package with:
22:34 <kasheek> 'BedBlock'
22:34 <kasheek> 'CactusBlock'
22:34 <kasheek> 'MagmaBlock'
22:34 <kasheek> and I import them all into one of my classes. I can:
22:34 <kasheek> - look at the imports, in alphabetical order, without reading "Block" before each word
22:34 <kasheek> - search for ".BedBlock" and get results for BedBlock *and* BedBlockEntity *and* BedBlockEntityRenderer
22:34 <asie> that last one
22:34 <asie> that's a good argument

Saya berpendapat bahwa pencarian di sebagian besar IDE Java modern akan cukup kabur sehingga terlepas dari pemesanan BlockBed/BedBlock hasilnya akan ditampilkan.

Saya pikir Mojang menggunakan sufiks (BedBlock) atau hanya nama (Bed).

[menggunting!]

Kelas-kelas itu, mungkin, dalam paket yang sama dan diberi nama seperti:

RenderType
RepeaterBlock
RotatedPillarBlock
Rotation
SandBlock

Contoh lain, yang juga menunjukkan nama Mojang tidak memiliki awalan I untuk antarmuka:

[menggunting!]

Yang pertama memiliki keuntungan saat menyortir nama di editor

Ini benar jika semuanya dipetakan ke dalam satu paket "sink" besar (mis. net.minecraft.src ), tetapi ini adalah pengganti yang buruk untuk paket pemetaan dengan benar. Dan jika kelas dimasukkan ke dalam paket seperti blocks , items , entities , awalan menjadi berlebihan.

Meskipun upaya Anda terpuji, tolong jangan posting konten MCP di sini. Silakan gunakan pemetaan Enigma atau pemetaan Tiny dari pomf untuk menunjukkan poin Anda di lain waktu, atau beri petunjuk tanpa memposting nama secara langsung.

Namun, penelitian ini dihargai! Kami sudah mengetahui bahwa Mojang tidak menggunakan awalan I berkat Brigadir, tetapi petunjuk lainnya cukup menarik. Saya berencana untuk melihat sendiri urutan abjad di beberapa titik, namun juga tidak perlu diasumsikan bahwa "nama internal" Minecraft sempurna atau cocok untuk lingkungan pengembangan yang lebih modded.

Saya pribadi suka memiliki awalan, karena itu berarti semua item dikelompokkan bersama, semua bioma dikelompokkan bersama, dll. Tentu saja, argumen kontranya adalah bahwa sufiks membuat segala sesuatu yang memiliki kesamaan dikelompokkan bersama, seperti IronIngot, IronSword, IronBlock, IronChestplate, dll.

@Boundarybreaker Sebenarnya, mereka tetap dalam paket. Jadi, di .block, semuanya sudah dikelompokkan bersama. Tidak masalah apakah itu BlockBed dan BlockChest atau BedBlock dan ChestBlock.

Ah, ya. Itu adalah poin yang bagus. Saya lebih banyak berpikir dari sisi mod-dev. Saya baik-baik saja dengan sufiks, kalau begitu.

Secara pribadi di semua kode saya, saya menggunakan awalan alih-alih sufiks pada nama kelas saya. Ada beberapa pengecualian untuk aturan itu untuk hampir setiap situasi yang muncul, saya akhirnya menggunakan awalan.

Saya merasa ini berfungsi lebih baik ketika mencari jenis objek di IDE saya, dan sejujurnya hanya terlihat lebih baik bagi saya.

Banyak dari ini berdasarkan opini dan jika Anda melihat kode sumber mod lain di github, cukup jelas bahwa kebanyakan orang senang dengan nama kelas menggunakan awalan daripada akhiran.

Saya pikir semua mod menggunakan awalan karena mereka menggunakan nama MCP dan nama MCP sebagian besar menggunakan awalan karena dulu semua minecraft di-deobfuscate menjadi satu paket net.minecraft.src . Namun, terutama dalam kode baru, fitur ada banyak contoh dengan sufiks. Misalnya ILightEngine , ChunkTask , SurfaceBuilder , IWorldCarver , IChunkGenSettings implementasi, kelas Config/Pieces/Structure untuk struktur. Kode untuk resep dan generasi jarahan memiliki banyak kelas turunan yang tidak menyertakan nama kelas dasar.

PERTIMBANGKAN untuk mengakhiri nama kelas turunan dengan nama kelas dasar.

Ini sangat mudah dibaca dan menjelaskan hubungannya dengan jelas. Beberapa contoh dari kode ini adalah: ArgumentOutOfRangeException, yang merupakan jenis Exception, dan SerializableAttribute, yang merupakan jenis Attribute. Namun, penting untuk menggunakan pertimbangan yang wajar dalam menerapkan pedoman ini; misalnya, kelas Button adalah semacam acara Kontrol, meskipun Kontrol tidak muncul dalam namanya.

Dari Pedoman Desain C#

Saya pikir menggunakan jenis awalan mengunci Anda dalam skema itu dan tidak mengizinkan "penilaian" apa pun. Tapi mungkin itu tidak terlalu diperlukan untuk hierarki pewarisan luas, seperti Block atau Item

Saya baru saja berpikir, lihat implementasi JEI. Tidak ada preseden awalan di api dan di seluruh kelas komunitas modding JEI-support adalah Machine+Category/Wrapper/etc.

MCP tidak memiliki suffix move karena ketergantungan skala besar dari mod yang ada. Ini tidak terjadi pada kain.

Ya. Saya sudah tertarik untuk melakukannya, itu hanya upaya yang layak untuk duduk dan melakukannya .

Saya baru saja berpikir: awalan != ejaan mundur, juga memiliki rasa yang berbeda

Contoh dari MCP: [snip!]

Saya pikir Anda akan setuju bahwa inkonsistensi dalam penamaan itu buruk, nama-nama seperti [snip!] mengerikan.

Aku mungkin terlambat dengan ini...

Tolong berhenti memposting contoh MCP di saluran komunikasi pomf, atau saya akan terpaksa memblokir Anda dari repositori GitHub.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

Runemoro picture Runemoro  ·  4Komentar

Awakened-Redstone picture Awakened-Redstone  ·  4Komentar

Runemoro picture Runemoro  ·  3Komentar

Runemoro picture Runemoro  ·  4Komentar

ChloeDawn picture ChloeDawn  ·  5Komentar