Di satu-satunya blog dev yang saya baca, oleh lelaki Joel-On-Software-Founder-SO, saya membaca sejak lama bahwa OO tidak menyebabkan peningkatan produktivitas. Manajemen memori otomatis tidak. Keren. Siapa yang bisa menolak data?
Saya masih percaya bahwa OO adalah untuk non-OO apa pemrograman dengan fungsi untuk memprogram semuanya sesuai.
(Dan saya harus tahu, ketika saya mulai dengan GWBasic.) Ketika Anda refactor kode untuk menggunakan fungsi,
variable2654
menjadi
variable3
metode yang Anda gunakan . Atau, lebih baik lagi, itu punya nama yang dapat Anda pahami,
dan jika fungsinya pendek , Itu disebut
value
dan itu cukup untuk pemahaman penuh.
Ketika kode tanpa fungsi menjadi kode dengan metode, Anda bisa menghapus mil kode.
Ketika Anda refactor kode untuk benar-benar OO, b
, c
, q
, dan Z
menjadi this
, this
, this
dan this
. Dan karena saya tidak percaya menggunakan this
kata kunci, Anda bisa menghapus mil kode. Sebenarnya, Anda bisa melakukannya bahkan jika Anda menggunakannya this
.
Saya tidak berpikir OO adalah metafora alami.
Saya tidak berpikir bahasa adalah metafora alami juga, saya juga tidak berpikir bahwa "bau" Fowler lebih baik daripada mengatakan "kode ini rasanya tidak enak." Yang mengatakan, saya pikir bahwa OO bukan tentang metafora alami dan orang-orang yang berpikir
objek hanya muncul pada Anda pada dasarnya kehilangan intinya.
Anda mendefinisikan objek semesta, dan objek semesta yang lebih baik menghasilkan kode yang lebih pendek, lebih mudah dipahami, bekerja lebih baik, atau semua ini (dan beberapa kriteria saya lupa). Saya berpikir bahwa orang yang menggunakan objek alami pelanggan / domain sebagai objek pemrograman kehilangan kekuatan untuk mendefinisikan kembali alam semesta.
Misalnya, ketika Anda melakukan sistem reservasi penerbangan, apa yang Anda sebut reservasi mungkin tidak sesuai dengan reservasi hukum / bisnis sama sekali.
Beberapa konsep dasar adalah alat yang sangat keren
Saya pikir sebagian besar orang melebih-lebihkan dengan keseluruhan "ketika Anda memiliki palu, semuanya adalah paku". Saya pikir sisi lain dari koin / cermin itu sama benarnya: ketika Anda memiliki gadget seperti polimorfisme / pewarisan, Anda mulai menemukan kegunaan yang cocok seperti sarung tangan / kaus kaki / lensa kontak. Alat-alat OO sangat kuat. Warisan tunggal, saya pikir, mutlak diperlukan agar orang tidak terbawa,
perangkat lunak multi-warisan saya sendiri
tidak tahan.
Apa gunanya OOP?
Saya pikir ini cara yang bagus untuk menangani basis kode yang sangat besar. Saya pikir itu memungkinkan Anda mengatur dan mengatur ulang kode Anda dan memberi Anda bahasa untuk melakukannya di (di luar bahasa pemrograman tempat Anda bekerja), dan memodulasi kode dengan cara yang cukup alami dan mudah dimengerti.
OOP ditakdirkan untuk disalahpahami oleh sebagian besar pengembang
Ini karena ini adalah proses yang membuka mata seperti kehidupan: Anda semakin memahami OO dengan pengalaman, dan mulai menghindari pola-pola tertentu dan mempekerjakan orang lain ketika Anda menjadi lebih bijaksana. Salah satu contoh terbaik adalah Anda berhenti menggunakan pewarisan untuk kelas yang tidak Anda kontrol, dan lebih memilih pola
Facade sebagai gantinya.
Mengenai esai / pertanyaan Anda
Saya memang ingin mengatakan bahwa Anda benar. Dapat digunakan kembali adalah mimpi-pipa, sebagian besar. Berikut ini kutipan dari Anders Hejilsberg tentang topik itu (brilian) dari sini :
Jika Anda meminta para pemrogram pemula untuk menulis kontrol kalender, mereka sering berpikir pada diri mereka sendiri, "Oh, saya akan menulis kontrol kalender terbaik di dunia! Ini akan menjadi polimorfik sehubungan dengan jenis kalender. Ini akan memiliki pemajang, dan hijau, dan ini, itu, dan yang lainnya. " Mereka perlu mengirimkan aplikasi kalender dalam dua bulan. Mereka menempatkan semua infrastruktur ini pada kontrol, dan kemudian menghabiskan dua hari menulis aplikasi kalender jelek di atasnya. Mereka akan berpikir, "Dalam versi aplikasi berikutnya, saya akan melakukan lebih banyak lagi."
Begitu mereka mulai berpikir tentang bagaimana mereka sebenarnya akan mengimplementasikan semua konkretisasi lain dari desain abstrak mereka, bagaimanapun, ternyata desain mereka benar-benar salah. Dan sekarang mereka telah melukis diri mereka ke sudut, dan mereka harus membuang semuanya. Saya telah melihatnya berulang kali. Saya sangat percaya menjadi minimalis. Kecuali jika Anda benar-benar akan menyelesaikan masalah umum, jangan mencoba dan menempatkan kerangka kerja untuk memecahkan masalah tertentu, karena Anda tidak tahu seperti apa bentuk kerangka itu.