Ada beberapa nama, di mana jika Anda menemukan diri Anda meraih nama-nama itu, Anda tahu Anda telah mengacaukan sesuatu.
Sebagai contoh:
XxxManager
Ini buruk karena kelas harus menjelaskan apa yang dilakukan kelas. Jika kata paling spesifik yang dapat Anda temukan untuk apa yang dikerjakan kelas adalah "kelola," maka kelas itu terlalu besar.
Apa anti-pola penamaan lain yang ada?
Untuk memperjelas, saya tidak bertanya "nama apa yang buruk" - pertanyaan itu sepenuhnya subyektif dan tidak ada cara untuk menjawabnya. Saya bertanya, "nama apa yang menunjukkan masalah desain keseluruhan dengan sistem." Yaitu, jika Anda mendapati diri Anda ingin memanggil komponen Xyz, itu mungkin mengindikasikan komponen tersebut tidak terselesaikan. Perhatikan juga di sini bahwa ada pengecualian untuk setiap aturan - Saya hanya mencari bendera peringatan ketika saya benar-benar harus berhenti dan memikirkan kembali desain.
sumber
Jawaban:
Penamaan anti-pola berikut ini terkait dengan .NET dan, terutama, C #:
cxtCtrlMngr
. Anda tidak bisa menebak apa yang seharusnya diperjuangkan.ILoginAttemptRepository
baik dan deskriptif -ILoginAttemptRepositoryUsingEntityFrameworkForObjectRelationalMapping
deskriptif, tapi jelas tidak baik.sumber
I
dimaksudkan diinterface
siniimplementer
,, atau orang pertama tunggal? Karena sebagian besar kelas mengimplementasikan antarmuka, memiliki terlalu banyak kelas / interign yang diawali dengan modalI
adalah sesuatu yang baru, dan menghambat keterbacaan, dan kode berbau sendiri.Salah satu yang sering saya temui adalah, tidak menggunakan pola penamaan sama sekali. Biasanya menunjukkan ketidaktahuan pengembang (bahwa pola penamaan adalah hal yang baik ) dan juga anti-pola ini cenderung sangat melanggar SRP dengan memasukkan semua jenis metode yang agak / agak terkait dengan kelas ke kelas itu sendiri, jadi misalnya Pelanggan kelas memiliki properti, metode CRUD, apa pun yang terkait dengan Pelanggan yang dibutuhkan sebagian dari aplikasi.
Saya juga akan menambahkan bahwa menggunakan "Engine" sebagai suffix hampir sama dengan menggunakan "Manager". Ini sangat samar dan kelas yang dipanggil
XxxEngine
cenderung seperti Modul VB-style yang berisi banyak metode sehingga berada dalam satu tempat "mudah digunakan", tanpa pengetahuan atau gagasan pemrograman berorientasi objek.sumber
Nah, jawaban sederhana pertama: ketik hungarian ( http://mindprod.com/jgloss/unmainnaming.html , juga memiliki beberapa ide hebat lainnya. Pandangan yang lebih seimbang tentang kapan hungaria tidak jahat, http://www.joelonsoftware.com /articles/Wrong.html )
sumber
Awalan 'I' ke nama antarmuka, atau 'Abstrak' ke nama kelas abstrak. Ini bisa dimaafkan dalam bahasa yang tidak memiliki konsep kelas abstrak, atau yang tidak membedakan antara antarmuka dan kelas abstrak - tetapi di Jawa, misalnya, itu selalu merupakan ide yang buruk.
Juga, saya tidak setuju dengan Anda tentang hal Manajer. Saya menggunakan pola itu kadang-kadang, dan itu hanya berarti bahwa jika saya mencoba untuk menamainya sesuatu yang lain, maka namanya tidak akan lebih deskriptif daripada XxxxxManager. Ada beberapa tugas (tidak harus yang rumit) yang tidak dapat diringkas dengan rapi dalam satu atau dua kata.
sumber
XxxxManager
adalah nama terburuk yang mungkin dimiliki sebuah kelas. Tentu saja itu mengelola sesuatu! Itulah alasan mengapa ini ditulis.Manager
adalah kata pengisi yang tidak berarti yang tidak menambah nilai pada pemahaman - dengan namanya - apa yang bertanggung jawab atas kelas.TabManager
,? Punya nama yang lebih baik untuk kelas yang mengontrol mekanisme tab JSP? Atau terkesiapTabController
... Sejauh awalan denganAbstract
, saya merasa itu terlalu sering digunakan tetapi sering berlaku (lihat perpustakaan Java untuk contoh). Saya rasa saya bisa mengatakan dengan aman bahwa saya belum pernah melihatI
antarmuka di tempat di mana seseorang tidak mencoba memprogram terhadap antarmuka yang seharusnya tidak ada. Seperti, hanya satu kelas yang mengimplementasikan antarmuka.IXxx
atau tidakXxxImpl
.Mengupas:
Saya memiliki ketidakmampuan bersandar dan tidak bisa mengeja. Tanpa pemeriksa ejaan, saya tidak berdaya. Saya mencoba menyalin semua nama yang saya buat ke pengolah kata untuk verifikasi, tetapi saya selalu kehilangan beberapa. Pada proyek terakhir saya, saya menulis sebagian besar api dan saya kira saya tidak mengeja memeriksa saat pertama kali saya menggunakan kata respons dan saya menganggap itu benar karena tidak ada yang memberi tahu saya. Kami memiliki setidaknya 50 fungsi dengan respons di dalamnya. Seseorang yang baru datang di tim dan bertanya mengapa kami menggunakan respons saya merasa sangat bodoh.
sumber
affect
(bukan efek). Itu membuatku gila dan aku dengan cepat menemukan plugin yang berbeda untuk melakukan hal yang sama.Yah saya khawatir pendapat saya sedikit kontroversial. Tapi mari kita coba ...
Sejauh yang saya ketahui saya harus setuju dengan Mike Baranczak, nama-nama seperti XxxController, XxxHandler adalah sesuatu yang sangat sering kita gunakan. Bagi kami Pengendali adalah sesuatu seperti titik masuk untuk sesuatu yang "dikemas" misalnya mengelola transaksi, menangani kesalahan yang tidak terduga, memanggil XxxHandler untuk melakukan pekerjaan yang sebenarnya. Saya akan mengatakan XxxManager adalah sinonim untuk controller. Saya pikir ini penting untuk tidak menggunakan Manajer dalam satu kasus dan Pengendali dalam yang lain. Konsisten sangat penting jika Anda bekerja dalam tim.
Akan sangat sulit atau mungkin bahkan tidak mungkin untuk menemukan nama yang lebih baik untuk hal-hal seperti ini. Xxx harus dipilih dengan baik untuk membuat situasi lebih jelas.
Apa yang saya pribadi tidak suka adalah, ketika metode yang disebut get ... atau set ... lebih dari sekadar accessor sederhana. Saya suka det ... untuk menentukan.
Hal lain, yang muncul di benak saya: Menurut paman Bob. "Dan" dalam nama metode adalah tanda melakukan banyak hal. Tetapi hidup tidak selalu hanya hitam dan putih - ada situasi di mana saya pikir itu ok - misalnya. karena masalah kinerja (ketika Anda sudah memiliki data karena untuk memeriksa mengapa tidak memprosesnya) ...
Saya pribadi juga penggemar notasi Hungaria sistem - sebagian besar waktu Anda berurusan dengan kode sumber di IDE ok. Namun seringkali Anda hanya menggunakan editor atau menelusuri repo di browser. Salah satu kelemahannya mungkin dukungan alat karena tipe-awalan ...
Saya pikir yang paling penting adalah beeing consitent - konvensi suboptimal - bagi saya - lebih baik daripada tidak memiliki konvensi ...
sumber
Mungkin penamaan anti-pola terburuk adalah ini:
Kami memiliki daftar tiga elemen dari pasangan [foo, bar]. Jika kita membutuhkan yang keempat, kita harus menambahkan kolom baru ke tabel.
Mengarah ke kode seperti ini:
Tabel terpisah harus dibuat dengan kolom foo dan bar dan ditautkan ke tabel barang:
Yang terburuk kedua adalah ini:
Di sini kita memiliki enam bidang alih-alih dua contoh kelas Alamat.
Anti-pola ini ditandai dengan serangkaian nama dua bagian yang mencantumkan setiap kombinasi dua set, misalnya [foo, bar] x [1,2,3] atau [home, perm] x [jalan, kota, negara bagian]
sumber
==
penamaan antipattern? Saya bingung.Setiap penamaan kelas atau antarmuka yang merupakan tautologi adalah buruk, tidak hanya di Jawa yang dibicarakan tautan, tetapi dalam bahasa apa pun.
sumber
Saya sering menemukan pustaka perangkat lunak dengan nama generik seperti
Library
atauCommon
. Mereka menunjukkan desain suboptimal: pengembang berusaha untuk menghindari duplikasi kode tetapi tanpa upaya untuk membuat desain terurai berdasarkan fungsi.sumber
Dari Microsoft saat penamaan, saya dapat memberikan daftar ini untuk nama-nama buruk:
sumber