Saya tidak yakin apakah ini adalah sifat OCD atau tidak, tetapi saya menemukan bahwa kadang-kadang saya benar-benar diblokir tidak dapat melanjutkan apa yang saya lakukan ketika memberi nama kelas (atau fungsi, atau namespace dll) yang saya percaya akan digunakan di luar dari proyek yang diberikan. API misalnya. Atau perpustakaan kelas utilitas.
Jika penamaannya tidak tepat (dalam pikiran saya) saya tidak bisa melanjutkan ... Saya macet ketika mencoba mencari nama yang tepat. Saya sudah mencoba menulis aplikasi kecil yang akan menggunakannya untuk melihat seperti apa nama-nama itu tetapi itu sepertinya tidak membantu ...
Saya tahu itu seharusnya tidak masalah, dan itu bertentangan dengan pola pikir pemrograman untuk menganggap Anda akan sempurna pertama pergi ... Saya hanya merasa tidak berdaya untuk itu ...
Setiap tips / ide akan sangat dihargai ...
Jawaban:
Menurut saya masalah yang Anda miliki bukan hanya menemukan cara yang lebih baik untuk menghasilkan nama-nama baik, tetapi juga berurusan dengan keharusan untuk melakukannya. Jika saya jujur, saya mengenali sifat yang sama dalam diri saya. Lagipula nama-nama itu penting, dan aku suka nama yang bagus untuk konsep yang sedang kukerjakan. Namun, mereka tidak selalu merupakan hal yang paling penting.
Berikut adalah beberapa metode yang saya gunakan untuk mengatasi hal semacam ini:
sumber
pertama
Tanyakan kepada diri Anda pertanyaan "apa tujuan tunggal kelas ini?". Tanpa mematuhi Prinsip Tanggung Jawab Tunggal, penamaan kelas dan metode menjadi sangat sulit. Jika Anda tidak dapat menjawab pertanyaan itu, Anda mungkin perlu memikirkan kembali apa yang Anda inginkan dari kelas, dan pertimbangkan untuk memisahkan masalah. Ini akan memudahkan untuk memberi nama
Kedua
Apakah Anda memiliki pola bagaimana Anda memberi nama kelas Anda? Mungkin coba lihat beberapa pola penamaan yang umum, misalnya polanya, yang menjadi lebih mudah diikuti setelah Anda membahas SRP di atas. Apakah kelas Anda menguraikan XML? Coba XMLParser. Apakah ini mem-parsing XML, membuat model domain untuk mewakili input, bertahan mereka ke DB dan kemudian memposting pesan sukses ke Twitter? Coba refactoring.
Ketiga
Saya mengerti dari mana Anda berasal, dan pernah berada dalam situasi yang sama sebelumnya. Mungkin coba menyempurnakan kelas Anda dengan beberapa fungsi, dengan nama sementara untuk memulai. Dengan IDE yang bagus atau asisten refactoring, mengganti nama kelas harus menjadi tindakan satu-klik, jadi apa yang Anda beri nama kelas Anda awalnya tidak perlu permanen! Ini akan membantu Anda melewati blok OCD Anda, dan memberikan waktu bawah sadar Anda untuk memprosesnya sedikit lebih jauh.
Akhirnya dan sedikit keluar dari topik
Saya mengalami momen bola lampu dalam beberapa pekerjaan yang saya lakukan kemarin, menerapkan sistem yang tidak kritis, dan saya menghabiskan waktu yang adil untuk bermain-main dengan penamaan kelas yang berbeda dll ... Beri nama antarmuka Anda sesuai dengan fungsinya, beri nama Anda kelas sesuai dengan penerapan spesifik mereka ... Misalnya, Anda mungkin tergoda untuk memiliki IXMLParser dan XMLParser, tetapi apa yang terjadi ketika input Anda berubah ke JSON? Coba IInputParser sebagai gantinya, dengan cara itu Anda dapat membuat kelas konkret XMLParser dan JSONParser yang keduanya mengimplementasikan IInputParser dengan cara yang berbeda.
sumber
Bagi saya itu biasanya tanda desain tidak jelas dalam pikiran saya, jadi saya membuat nama, dan memberi diri saya waktu (katakanlah 2 menit) untuk datang dengan yang lebih baik, pada akhir waktu itu, saya harus gunakan yang saya buat dulu. Barney, Wilma dan Fred adalah favorit untuk memulai. Saya melakukan hal-hal seperti "BarniesInputParser" Nama-nama itu sangat buruk sehingga saya harus membuat yang lebih baik atau mengubahnya nanti. Mereka juga sangat buruk mereka unik, membuat refactoring sepele dan aman, dan siapa pun yang melihat kode yang tidak lengkap dapat melihat secara instan itu tidak lengkap.
Yang penting adalah bahwa sementara Anda tidak menambahkan fungsionalitas, Anda tidak memberi otak Anda informasi baru untuk digunakan untuk mendefinisikan nama (dan memperjelas desain). Yang Anda lakukan hanyalah memuntahkan input yang sama dengan cara yang berbeda.
Atau pergi membuat kopi. Sebelum Anda sampai ke mesin Anda akan memilikinya ...
sumber
Saya mendapatkan ini dari seorang teman beberapa waktu lalu. Tuliskan apa yang seharusnya dilakukan oleh proses Anda. Hanya sebuah narasi singkat. Kemudian mengambil kata benda dan mengubahnya menjadi kelas, kata kerja menjadi metode, dan kata keterangan menjadi properti.
sumber