Secara keseluruhan saya dalam pemrograman selama sekitar 8 tahun sekarang dan bagi saya tampaknya saya semakin mengandalkan perpustakaan open source dan cuplikan (sialan Anda GitHub!) Untuk "menyelesaikan pekerjaan". Saya tahu bahwa pada waktunya saya bisa menulis implementasi sendiri tetapi saya suka fokus pada desain keseluruhan.
Apakah ini normal (lingkungan non perusahaan)? Apa yang bisa salah jika "pemrograman" saya tidak lebih dari menempelkan pustaka yang berbeda secara bersamaan?
Saya tahu tentang "jangan menemukan kembali roda" tetapi apa yang terjadi ketika Anda tidak menemukan satu roda lagi?
programming-practices
libraries
code-reuse
Henrik P. Hessel
sumber
sumber
Jawaban:
Menggunakan perpustakaan alih-alih menciptakan kembali roda: Hebat! Begitulah seharusnya semua orang melakukannya. Anda tidak dibayar untuk melakukan apa yang sudah dilakukan.
Menggunakan cuplikan: Selama Anda memahami apa yang Anda salin-tempel, dan selama Anda menginvestasikan waktu untuk membuat semuanya konsisten (alih-alih tambalan gaya dan pendekatan yang berbeda), tidak ada yang salah dengan itu.
sumber
sumber
Good artists copy, Great artists steal
.Pengkodean sebenarnya adalah level pemrograman terendah. Semakin tinggi level abstraksi yang Anda dapat, semakin baik programmer Anda. Memilih perpustakaan yang tepat (tidak harus yang open-source), menghubungkannya dengan benar bersama dan memelihara konstruksinya jauh lebih sulit namun lebih efisien dan hemat waktu dan biaya, daripada menulis semuanya sendiri.
sumber
Saya suka menulis perpustakaan sendiri. Saya juga suka menyelesaikan proyek saya tepat waktu. Saya pikir seiring waktu, sebagian besar programmer yang baik membangun koleksi bit yang berguna dan dapat digunakan kembali. Saya tidak tahu tentang Anda, tetapi saya mendapat perasaan hebat setiap kali saya menggunakan perpustakaan yang saya tulis lima tahun lalu.
Sama sekali tidak ada yang salah dengan menggunakan kode perpustakaan yang telah diuji dan dicintai dari waktu ke waktu. Anda tahu cara kerjanya, Anda dapat mengandalkan kompleksitasnya dan Anda dapat menerapkannya dengan cepat.
Yang sedang berkata, saya berasumsi bahwa Anda memahami kode di perpustakaan. Saya berasumsi bahwa, jika diberi waktu yang cukup, Anda dapat mengimplementasikan sesuatu dengan kualitas yang sama.
Saya tahu beberapa programmer C benar-benar baik yang dapat mengimplementasikan perpustakaan C standar, beberapa dari mereka yang hanya sebagai latihan belajar / mengasah. Beberapa hal yang paling menyenangkan yang saya miliki selama hobi adalah bekerja di perpustakaan C di HelenOS.
Jadi, tidak ada yang salah dengan menggunakan kode perpustakaan, selama Anda terus penasaran dan belajar. Tak perlu dikatakan bahwa Anda tidak boleh menggunakan kode yang tidak Anda mengerti, kecuali jika Anda menggunakannya adalah upaya untuk memahami cara kerjanya.
sumber
Saya akan memberikan yang lebih baik daripada yang lain dalam pertanyaan ini: Saya bahkan tidak berpikir "klien" pengembang perpustakaan perlu "memahami" kode di perpustakaan itu.
Saya (dibandingkan dengan beberapa) pengembang iPhone yang relatif baru. Ada BANYAK perpustakaan yang saya gunakan setiap hari yang tidak pernah saya hasilkan sendiri, dan kodenya jauh di atas kepala saya. Tidak masalah sedikit pun DIBERIKAN:
1) Saya sepenuhnya memahami antarmuka untuk perpustakaan-perpustakaan itu (saya seorang ninja ASIHTTPRequest!)
2) Saya memilih perpustakaan yang secara umum, digunakan secara luas, jadi saya bisa memastikan mereka sudah berjalan dengan baik dan mencari masalah. (mis: ASIHTTP, perpustakaan JSON Stig Brautaset, perpustakaan obj-c Facebook, dll.)
3) Gagal # 2, cukup sederhana sehingga saya bisa memilih jalan melalui itu dan menemukan / memperbaiki / menyesuaikan segala sesuatu yang perlu menemukan / memperbaiki / menyesuaikan .
Itu # 2 akan menjadi bagian dari perdebatan ini, saya bertaruh. Faktanya adalah, saya mengandalkan komunitas open source, komunitas pengembang yang tentu saja lebih berpengalaman dan kemungkinan lebih pintar dari saya. Tapi itulah inti dari open source. Jadi, begitulah.
sumber
Saya ingin memberikan peringatan untuk menggunakan perpustakaan. Sebagai pengguna sering perpustakaan ilmiah di Perl an R (dan beberapa di Jawa), saya sering harus meretas ke perpustakaan untuk menghindari biaya overhead yang mengerikan. Menggunakan perpustakaan itu bagus, tetapi semakin banyak perpustakaan itu sendiri tergantung pada perpustakaan lain, yang memanggil perpustakaan ketiga yang menggunakan perpustakaan standar untuk melakukan tugas yang agak umum. Dan setiap langkah dalam proses membutuhkan beberapa pemeriksaan input dan output. Cukup banyak cek yang benar-benar berlebihan, tetapi mereka tetap membebani aplikasi. Dan ketika digunakan dalam satu lingkaran, maka beratnya bisa mulai cukup.
Selain itu, Anda tidak dapat memastikan bahwa perpustakaan selalu menjaga kompatibilitas kembali, atau tidak mengandung bug. Bahkan, semua pustaka berisi beberapa bug, itulah sifat kode. Oleh karena itu, semakin Anda bergantung pada perpustakaan, semakin banyak bug potensial yang Anda masukkan dalam kode Anda. Dan bug-bug yang tidak bisa Anda selesaikan dengan mudah tanpa meretas perpustakaan lagi.
Menggunakan perpustakaan adalah keputusan yang sangat cerdas, tetapi jika dan hanya jika Anda tahu perpustakaan dan perilakunya dengan cukup baik.
Saya tahu, berpikir sakit dan komputer itu murah, tapi tetap saja. Tidak berpikir bisa lebih menyakitkan.
sumber
Biasanya, menyalin sejumlah besar kode sumber adalah praktik yang buruk. Jika kode tersebut dikembangkan untuk aplikasi lain di perusahaan Anda, maka Anda harus menggunakan kembali kode tersebut dengan mengekstraksinya ke perpustakaan untuk digunakan oleh kedua aplikasi. Anda tidak boleh menyalin kode. Menyalin kode akan memaksa Anda untuk mempertahankan dua salinan daripada satu salinan umum.
sumber
Penggunaan kembali kode adalah ide yang sangat bagus. Ini mengurangi redundansi dan meningkatkan perawatan.
Judul menyarankan Anda menggunakan kode sebagai pustaka, tetapi teks pertanyaan Anda menyiratkan bahwa Anda mungkin menyalin kode sumber ke proyek baru. Saya akan tetap menggunakan kode pengembang lain sebagai perpustakaan sebanyak mungkin.
Ada masalah jika kodenya rusak atau rusak atau berdasarkan pada model yang tidak cocok dengan aplikasi Anda. Dalam hal ini mungkin lebih mudah untuk menghapus beberapa atau semua kode dan mulai dari awal daripada mencoba memahami mengapa itu ditulis dengan cara tertentu. Tetap pertahankan kode lain untuk referensi; Anda mungkin menemukan masalah yang Anda tidak yakin bagaimana menyelesaikannya. Kemungkinan pengembang lain mungkin menemukan masalah yang sama, dan ada baiknya untuk melihat bagaimana mereka menyelesaikannya.
sumber
Itu ide yang bagus, jadi tidak ada masalah hukum.
Namun, pastikan Anda meluangkan waktu untuk memahami apa yang dilakukan perpustakaan dan bagaimana perpustakaan melakukannya. Menggunakan perpustakaan "ajaib" untuk mengurus hal-hal yang tidak Anda pahami adalah cara yang baik untuk membuat beberapa bagiannya meledak pada Anda karena Anda salah menggunakannya, dan kemudian Anda tidak tahu cara memperbaikinya.
sumber
Kode yang digunakan kembali secara legal hampir tidak memiliki kerugian dan dua keuntungan besar:
sumber
Jika Anda menggunakan pustaka dan cuplikan kode di tempat yang sesuai, maka 'Tidak' , itu tidak berarti Anda seorang programmer yang buruk. Ini berarti bahwa Anda seorang programmer yang cerdas yang dapat menerapkan kebijaksanaan orang lain di tempat yang tepat.
Namun...
Dibutuhkan waktu untuk menemukan perpustakaan dan cuplikan kode, jadi jika Anda tidak dapat menulis kode sendiri, dan Anda perlu menghabiskan waktu berjam-jam untuk menemukan perpustakaan dan cuplikan kode untuk mengimplementasikan tugas-tugas sepele, maka 'Ya' , Anda adalah programmer yang buruk.
sumber
Tidak. Pemrogram harus menggunakan perpustakaan yang sudah ada di luar sana. Tidak menemukan kembali roda. Jika Anda memiliki metode yang lebih baik, Anda dapat melakukannya, jika tidak, apa yang sebenarnya dilakukan dengan menulis kode yang sama. Satu-satunya hal yang harus Anda ketahui adalah kode itu (dan hanya jika itu penting).
sumber
Selain alasan dalam jawaban lain, tidak menggunakan kode (asalkan cocok untuk masalah Anda) dapat dianggap tidak etis karena:
Perlu diingat, keduanya sulit ditentukan sebelumnya.
Juga, lihat Not Invented Here , yang biasa disebut sebagai pola-anit.
sumber
Untuk tujuan penyelesaian, izinkan argumen balasan: http://web.archive.org/web/20150326134617/https://michaelochurch.wordpress.com/2015/03/25/never-invent-here-the-even-worse -sibling-of-not-invented-di sini /
Selalu ada keseimbangan.
sumber
Saya tidak menggunakan perpustakaan kecuali benar-benar diperlukan. Ketergantungan membatasi portabilitas dan umur. Saya memiliki 34 tahun dalam pengembangan perangkat lunak dan ingin memiliki setidaknya 1 dari program saya bertahan lebih dari 3 tahun tanpa dihancurkan oleh erosi (perubahan).
COM (Component Object Model), jawabannya 17 tahun yang lalu, secara teori hebat, dalam praktiknya dipertanyakan, komponen yang tidak dapat digunakan kembali tidak benar-benar, saya hanya akan menggunakan komponen yang sangat mendasar dan hanya jika saya harus.
API dan SDK tidak banyak digunakan. Jika saya memecah jumlah baris kode yang sebenarnya saya gunakan dari perpustakaan, waktu yang saya habiskan untuk membuatnya dan menulisnya, saya pikir itu adalah cuci tangan. Saya berhenti menggunakan SDK sepenuhnya overhead adalah ekstrim.
Kerangka kerja: Zend, Silverlight, WCF, .NET, sistem berlapis, ya mereka dapat mempercepat pengembangan awal, tetapi ketika saya mencapai batas mereka, waktu saya habiskan memperbaiki celah, hanya saja tidak sepadan dengan usaha. Berapa umur mereka dan apakah mereka tahan terhadap erosi?
Saya telah pergi ke JavaScript dan HTML hanya dengan perpustakaan saya. Saya telah menghapus JavaScript dengan hanya menggunakan jenis pernyataan yang paling umum. Saya harap dalam 10 tahun saya bisa menulis sesuatu yang akan bertahan lama.
sumber
Semuanya tergantung. Jika Anda membuat kode permainan maka itu membuat sejak menggunakan perpustakaan (mis. Allegro) tetapi Anda tidak dapat benar-benar dianggap sebagai programmer jika Anda menyalin / mencuri / meminjam (apa pun) kode orang lain. Saya mengatakan tidak menciptakan kembali roda tetapi sampai pada titik yang masuk akal. Jangan membuat seluruh program cuplikan yang ditulis orang lain. Duduklah di depan komputer Anda dan lakukan sendiri ... berhenti mencuri kode. Orang-orang menjadi terlalu malas akhir-akhir ini dan hanya menyalin dan menempel.
sumber