... dan mengkodekan fungsi "secara manual"?
Sebagai contoh metaforis, Anda tidak akan membutuhkan perpustakaan untuk menyelesaikan persamaan kuadrat, meskipun perpustakaan seperti itu memang ada dan seseorang menganggapnya serius.
Sebagai kasus yang lebih dipertanyakan, tergantung pada keadaan saya mungkin membuang jQuery (misalnya ketika saya tidak perlu mendukung beberapa browser zaman batu): itu memang menyederhanakan beberapa hal tetapi menambah lapisan kompleksitas dan tidak dapat diandalkan untuk DOM. Dan penggunaan jQuery secara berlebihan menyebabkan masalah yang tidak masuk akal, seperti yang baru-baru ini terlihat pada SO: bagaimana cara menetapkan href kosong ke a
tag dengan jQuery? Ternyata itu adalah pertanyaan HTML, bahkan bukan JavaScript.
Kasus absurd lain dan belum jelas bagi banyak orang adalah menggunakan beberapa mesin templating / bahasa yang dibangun di atas sistem templating lain: PHP. Tingkat ketiga siapa yang mengadili?
Dan satu lagi: kadang - kadang hanya meludahkan XML dengan (secara kiasan) printf
jauh lebih mudah daripada melakukannya dengan beberapa mesin XML mengerikan.
Adakah kasus lain dari pengalaman Anda?
sumber
Jawaban:
Banyak perpustakaan perusahaan MS dan sebagian besar kontrol pihak ke-3 untuk .net telah membuat saya merasa seperti ini setelah sedikit digunakan.
Jarak tempuh Anda mungkin beragam
sumber
Yayasan Komunikasi Windows
Fakta bahwa foto itu memiliki pisau Swiss Army di beranda meringkaskan semuanya bagi saya. Bayangkan konfigurasi XML sekitar empat kali lebih lama dari kode aktual yang Anda tulis, dan masih sangat sulit untuk menulis layanan SOAP yang dapat dioperasikan antara C #, Java, PHP, Python, dan semua bahasa lain yang seharusnya "seharusnya" dapat dioperasikan dengan ...
Dalam semua proyek masa depan, saya hanya akan bertahan dengan REST.
sumber
Salah satu masalah yang saya alami dengan orang-orang "menggulung sendiri" adalah bahwa - sementara pendekatan mereka sering lebih cepat dan sederhana - itu juga lebih cenderung rapuh, memiliki bug, tidak lengkap, dan / atau mengandung kelemahan keamanan .
Contoh sederhana: mungkin 10 kali lebih mudah untuk menggunakan printf untuk memancarkan XML daripada menggunakan perpustakaan:
tetapi apakah Anda ingat untuk melarikan diri karakter khusus
str
? Misalnya '<
' dan '&
'? Beberapa orang mungkin mengatakan "tidak saya tidak" dan melanjutkan untuk menulis ini:Tapi itu masih akan memancarkan XML yang rusak jika
str
"]]>
" berisi substring di mana saja di dalamnya. Kasing tepi - tentu. Tetapi masih skenario yang valid yang dapat menyebabkan masalah tak terduga dengan konsekuensi serius.Ada banyak waktu dan tempat di mana "menggulung sendiri" mungkin tepat, tetapi kadang-kadang membutuhkan banyak pengalaman dan pengetahuan untuk mengidentifikasi kapan itu tepat. Itulah sebabnya saya sering mendorong programmer untuk lebih suka menggunakan perpustakaan yang sudah ada (jika tersedia) daripada rutinitas yang diimplementasikan sendiri.
sumber
Log4Net
Perpustakaannya bagus, tapi dokumentasinya menghebohkan. Itu berlebihan untuk apa yang ingin saya lakukan.
Saya menggunakan Trace sebagai gantinya.
sumber
SharePoint
Jangan salah paham, SharePoint luar biasa jika Anda membutuhkan sebagian besar hal yang datang dengannya (dan ia datang dengan banyak!), Tetapi jika Anda tidak tahu apa yang Anda lakukan atau hanya membutuhkannya untuk satu atau dua hal, itu sebagian besar tidak sepadan dengan usaha dan konfigurasi.
sumber
ASP.NET WebForms - Meskipun sebagai pengembang web .NET sudah lama saya mencoba, sejak saya mulai menggunakan kerangka kerja MVC (dan berasal dari lingkungan PHP / Smarty Template) - Anda menyadari bahwa terkadang ada yang lebih baik cara untuk melakukan pengembangan web dan abstraksi yang digunakan berlebihan dan bocor .
sumber
Dalam hampir setiap kasus saya telah melakukan ini, saya akhirnya menyesal:
Saya sampai pada kesimpulan bahwa jauh lebih baik untuk memilih beberapa kerangka kerja pihak ketiga yang dapat diandalkan, dan menggunakannya sebagai dasar untuk semua yang Anda lakukan. Kerangka kerja tersebut dikembangkan dan didebug oleh orang lain, yang merupakan penghemat waktu yang luar biasa setelah Anda membakukannya dan memahaminya dengan baik.
sumber
System.Text.RegularExpressions
Regex sangat kompleks dan sangat lambat. Saya akan sangat jarang menggunakan Regex dan biasanya menulis parsing dan pencocokan teks saya sendiri.
Kadang-kadang saya akan menemukan Regex berguna untuk pencocokan yang sangat kompleks.
sumber
Bukan berarti Delphi4PHP membutuhkan pers yang buruk, tetapi saya mencobanya (versi 2.0) dan sangat sulit untuk menekuknya sesuai keinginan saya. Saya ingin menggunakannya untuk membuat aplikasi web gaya youtube bagi klien untuk melihat video pelatihan, tapi itu terlalu rumit dan ketika saya mencoba untuk menggabungkan kerangka kerja PHP (VCL4PHP, Zend, Smarty dan Recess) saya bertemu dengan yang tak terelakkan, harus mengganti nama semuanya karena tidak ada ruang nama dalam masalah PHP 5.
Meski begitu, pada akhirnya saya tidak menggulung sendiri. Saya menggunakan hanya belajar dari kesalahan saya dan memutuskan untuk membuatnya sangat sederhana dan menggunakan CodeIgniter dan FlowPlayer (dengan JQuery).
Saya mendambakan bahwa kerangka kerja apa pun yang membuatnya keluar dari PHP 5 hidup, PHP 6 akan memiliki beberapa kerangka kerja luar biasa yang mungkin benar-benar bermain bagus bersama.
sumber
Weka
Saya melakukan banyak pekerjaan pembelajaran mesin, dan jika saya hanya perlu sesuatu yang sederhana seperti Naive Bayes atau regresi logistik, saya senang sekali meninggalkan Weka. Ini memiliki implementasi yang baik dari beberapa algoritma pembelajaran mesin yang cukup rumit, tetapi API adalah rekayasa berlebihan yang terlalu berorientasi objek old-school (pre-generics) Java API. Hal-hal yang mengganggu saya tentang hal itu:
Ini menggulung susunan resizeable-nya sendiri yang tidak digunakan orang lain, menjamin pekerjaan yang sibuk mengonversi bolak-balik.
Banyak kopling berurutan di mana metode harus dipanggil dalam urutan tertentu dan kecuali Anda benar-benar RTFM, Anda tidak akan menyadarinya.
Setiap instance harus menjadi objek Instance, dan saya harus mendeklarasikan secara eksplisit dengan objek Atribut apakah itu nominal atau numerik. Ini menyebabkan banyak pekerjaan yang sibuk mengonversi data ke bentuk yang diinginkan Weka. Ini sangat menjengkelkan karena Weka API memberikan banyak sekali pengecualian sehingga kompilasi kode tidak berarti itu akan berhasil. Jika saya mendesain API, saya akan menjadi liberal dalam apa yang saya terima (mungkin hanya mengambil array Object) dan hanya mengintrospeksi data untuk mencari tahu apa yang saya dapatkan dan apa hal yang benar untuk dilakukan dengannya.
sumber
Pada proyek tertentu saya membuang EJB3. Itu memberi saya injeksi ketergantungan dan penanganan transaksi kontainer yang dikelola. Tapi itu memperkenalkan dependensi yang sangat besar (misalnya JBoss) dan membuat sistem sulit untuk menulis tes otomatis. Sekarang saya sudah menanggalkannya ke injeksi ketergantungan konstruktor JPA +.
sumber
Meludahkan HTML pada port debug pada aplikasi. Saya membutuhkan beberapa cara sederhana untuk mendapatkan beberapa data saat ini (dengan penyegaran otomatis). Menarik perpustakaan untuk memformatnya akan lebih baik, tetapi lebih mudah untuk mencetaknya saja.
Saya juga menolak pustaka untuk yang lain: Kami menggunakan pustaka XML yang besar dan kompleks di sebagian besar barang kami. Setelah menghabiskan 4 jam sehari mencoba membuatnya bekerja di aplikasi baru, saya hanya mengatakan 'tas itu', dan menarik TinyXML. Tidak ada yang sedekat ini, tetapi membutuhkan banyak BANYAK upaya untuk membuatnya melakukan hal-hal sederhana.
sumber
Baru-baru ini saya telah mengerjakan kompiler bahasa scripting yang dapat saya gunakan dalam aplikasi saya. Saya telah menggunakan yang lain, tetapi tidak ada yang melakukan persis apa yang saya butuhkan mereka lakukan. Jadi saya pikir mengapa tidak mencoba untuk menulis sendiri? Mungkin satu atau dua tahun sebelum benar-benar cocok untuk penggunaan umum, tapi itu ok. Plus, ini pengalaman belajar yang luar biasa.
Solusi 'roll my own' lainnya adalah karya yang digunakan untuk menerjemahkan aplikasi saya. Ada perpustakaan yang ada, tetapi saya tidak suka salah satu dari mereka. Jadi saya membuat sendiri.
Dan komponen basis data Delphi. Aku benci mereka. Selalu punya. Jadi saya membuat antarmuka basis data saya sendiri yang berfungsi seperti yang saya inginkan (dan persis seperti yang saya buat untuk PHP, membuat pengkodean lintas bahasa lebih mudah).
Pada dasarnya, ketika diberi pilihan, saya biasanya membuat perpustakaan sendiri.
sumber
Ohhh, banyak sekali. Saya telah bekerja pada beberapa proyek tangkas menggunakan open source apis. Hebat ketika mereka bekerja, tetapi seringkali kita menderita pengembang dengan jimat karena membawa semua jenis apis pihak ke-3, beberapa tidak jelas, beberapa tidak, hanya karena mereka ingin menggunakan satu atau dua kelas di dalamnya. Hasil akhirnya adalah mish-mash kode dan diretas bersama sistem. Mereka menyerahkannya dengan mengklaim bahwa itu adalah kode terbaik yang pernah ada, pergi dan orang-orang miskin yang mengambilnya menemukan kekacauan yang tidak dapat dipahami, tidak berdokumen yang penuh dengan masalah ketergantungan dan peretasan.
sumber