Saat menulis kelas utilitas di Java, apa sajakah pedoman yang baik untuk diikuti?
Haruskah paket menjadi "util" atau "utils"? Apakah ClassUtil atau ClassUtils? Kapan kelas menjadi "Helper" atau "Utility"? Utilitas atau Utilitas? Atau apakah Anda menggunakan campurannya?
Pustaka Java standar menggunakan Utils dan Utilities:
- javax.swing.Utilities
- javax.print.attribute.AttributeSetUtilities
- javax.swing.plaf.basic.BasicGraphicsUtils
Apache menggunakan berbagai Util dan Utils, meskipun kebanyakan Utils:
- org.apache.commons.modeler.util.DomUtil
- org.apache.commons.modeler.util.IntrospectionUtils
- org.apache.commons.io.FileSystemUtils
- org.apache.lucene.wordnet.AnalyzerUtil
- org.apache.lucene.util.ArrayUtil
- org.apache.lucene.xmlparser.DOMUtils
Spring menggunakan banyak class Helper dan Utils:
- org.springframework.web.util.UrlPathHelper
- org.springframework.core.ReflectiveVisitorHelper
- org.springframework.core.NestedExceptionUtils
- org.springframework.util.NumberUtils
Jadi, bagaimana Anda memberi nama kelas utilitas Anda?
Tidak ada aturan / konvensi standar di dunia Java untuk ini. Namun, saya lebih suka menambahkan "s" di akhir nama Kelas seperti yang disebutkan @colinD.
Itu tampaknya cukup standar untuk apa yang dilakukan oleh Master java API Designer Josh Bloch (koleksi java serta koleksi google)
Selama Helper dan Util berjalan, saya akan memanggil sesuatu sebagai Helper ketika memiliki API yang membantu mencapai fungsionalitas tertentu dari sebuah paket (mempertimbangkan sebuah paket untuk mengimplementasikan modul); berarti sementara Util dapat dipanggil dalam konteks apa pun.
Misalnya dalam aplikasi yang terkait dengan rekening bank, semua API statis utilitas nomor tertentu akan pergi ke
org.mycompany.util.Numbers
Semua API yang membantu aturan bisnis khusus "Akun" akan masuk
Bagaimanapun, ini adalah masalah menyediakan dokumentasi yang lebih baik dan kode yang lebih bersih.
sumber
Saya suka konvensi hanya menambahkan "s" ke nama tipe ketika tipenya adalah antarmuka atau kelas yang tidak Anda kontrol. Contohnya di JDK termasuk
Collections
danExecutors
. Itu juga konvensi yang digunakan di Google Collections.Ketika Anda berurusan dengan kelas yang Anda kendalikan, saya akan mengatakan metode utilitas termasuk dalam kelas itu sendiri secara umum.
sumber
Saya pikir 'utils' harus menjadi nama paket. Nama kelas harus menentukan tujuan logika di dalamnya. Menambahkan sufix -util (s) adalah redundan.
sumber
tld.organization.app.util
paket tidak boleh ada (bisa, tetapi tidak boleh), sejumlahtld.organization.app.feature.util
paket baik-baik saja.Saya cukup yakin kata "pembantu" dan "utilitas" digunakan secara bergantian. Bagaimanapun menilai dari contoh yang Anda berikan, saya akan mengatakan jika nama kelas Anda adalah singkatan (atau memiliki singkatan di dalamnya seperti "DomUtil") kemudian panggil paket Anda "terserah.WhateverUtil" (atau Utils jika ada lebih dari satu utilitas dalam paket Anda ). Lain jika itu memiliki nama lengkap dan bukan singkatan, maka sebut saja "terserah.WhateverUtilities".
Ini benar-benar terserah Anda, tetapi selama pembuat kode tahu apa yang Anda bicarakan, Anda siap melakukannya. Jika Anda melakukan ini secara profesional sebagai pekerjaan untuk seseorang, tanyakan kepada mereka apa standar pengkodean mereka sebelum menerima saran saya. Selalu ikuti standar toko tidak peduli apa yang akan membantu Anda mempertahankan pekerjaan Anda. :-)
sumber