Kami memiliki banyak alat hebat yang banyak membantu saat pemrograman, seperti editor teks programmer, IDE, debugger, sistem kontrol versi, dll. Beberapa alat lebih atau kurang "harus memiliki" alat untuk menyelesaikan pekerjaan (misalnya kompiler) .
Masih selalu ada alat yang banyak membantu, tetapi masih tidak mendapatkan banyak perhatian, karena berbagai alasan, misalnya, ketika mereka dibebaskan, mereka berada di depan waktu mereka dan sekarang lebih atau kurang dilupakan.
Menurut Anda, jenis alat pemrograman apa yang paling diremehkan? Memotivasi jawaban Anda.
tools
developer-tools
Anto
sumber
sumber
Jawaban:
Bebek karet. Ya benar
http://en.wikipedia.org/wiki/Rubber_duck_debugging
sumber
Pena dan buku catatan.
sumber
Alat Diff tampaknya kurang digunakan ketika membandingkan output log atau data dalam file teks datar. Atau mungkin itu hanya ceruk? Sepertinya saya merasa sangat berguna dan bermanfaat untuk debugging untuk membandingkan log besar eksekusi program dan menunjukkan satu atau dua detail yang berubah.
Alat profil kinerja juga sangat baik untuk dimiliki, terutama ketika Anda menekan bottelneck kritis, tetapi tampaknya sangat sedikit orang yang mengenalnya (dan saya mengakui diri saya pada gelar dalam kategori ini).
Alat XML yang baik sangat penting - jika Anda bekerja dengan file XML lebih dari selusin baris atau skema multipel. Terkadang Anda membutuhkan lebih dari sekadar sintaks dasar yang menyoroti editor lain. Juga ketika bekerja dengan XML, belajar XSL bisa sangat berguna. Banyak kali saya melihat apa yang bisa dilakukan dalam transformasi XSL sederhana yang dilakukan dalam banyak baris dalam kode aplikasi. Meskipun untuk memperjelas: Saya tidak menyarankan bahwa XML itu sendiri adalah "alat pemrograman yang diremehkan"; Saya menyarankan bahwa nilai editor XML yang baik diremehkan, dari apa yang saya lihat.
sumber
diff
- benar kurang dihargai. Pada masalah pembuatan profil, Anda tidak sendirian dalam berpikir bahwa itu pasti berguna, tetapi Anda sendiri tidak tahu caranya. Periksa ini.<Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription></ProblemWorsening>
Ekspresi Reguler
Mereka sangat berguna. Mereka membantu ketika mencari melalui file log, parsing teks dll. Mereka hanya sangat berguna.
Saya merasa aneh berapa banyak orang yang saya kenal yang tidak pernah menggunakannya karena ada sedikit kurva belajar yang terkait dengan mereka. Banyak kali saya melihat orang melakukan hal-hal dengan cara yang sulit (Catatan: sebelum regex saya melakukan hal-hal dengan cara yang sulit) ketika sebuah regex sederhana bisa menurunkannya dengan cepat.
sumber
Rekan tim Anda. Ketika Anda tidak memiliki ide yang menarik dan lupa untuk bergabung dengan tim Anda, Anda tidak akan pernah mendengar kekhawatiran atau ide mereka tentang mengapa itu tidak berhasil atau mengapa itu bisa lebih baik.
Saya mengatakan ini, karena mudah untuk berpikir bahwa pemrograman adalah beberapa hal antisosial yang dilakukan orang di sudut dengan ide-ide cemerlang mereka. Orang yang berpikir ini meremehkan nilai tim dan rekan satu timnya dalam membantu membuat ide / proyek tenggelam / berenang.
sumber
Google. Ada beberapa masalah yang belum dipecahkan dan didokumentasikan. Kueri Google yang disesuaikan dengan baik dapat menghemat banyak waktu bagi semua orang.
sumber
Jauh dan jauh alat yang paling tidak dihargai untuk menemukan "bottlenecks" adalah Ctrl+ Catau tombol "Jeda", di debugger.
Periksa paragraf terakhir dari posting ini , dan posting ini , dan posting ini , sebagai permulaan.
Berkali-kali saya melihat / mendengar orang mengatakan "Programnya terlalu lambat! Apa yang bisa saya lakukan? Saya mencoba profiler (jika mereka tahu), tetapi saya tidak mengerti apa yang dikatakannya. Adakah yang punya dugaan? Tolong! " Yah, tebakan hanya itu. Apa yang selalu saya lakukan, dan yang lainnya juga, adalah menjalankannya, menyela, dan memeriksa tumpukan panggilan. Jika masalahnya benar-benar buruk, bingo , itu tepat di depan Anda. Jika masalahnya hanya ringan, Anda melakukannya beberapa kali. Apa pun yang muncul pada lebih dari satu sampel, yang dapat Anda hindari, adalah hambatan yang dapat Anda perbaiki.
Ya, ini umpan balik, tetapi berhasil.
sumber
Kompiler.
Kebanyakan orang tidak meluangkan waktu untuk memahami apa yang dilakukan oleh kompiler pilihan mereka. Mereka hanya merasa bahwa itu membuat kode menjadi program yang dapat dijalankan dan sejauh itulah yang mereka lakukan. Pada sebagian besar yang modern, ada beberapa konfigurasi yang dapat Anda masukkan ke dalamnya membuatnya melakukan apa yang Anda butuhkan. Berikut ini sebuah contoh, saya yakin setengah pengembang di kantor Anda tidak tahu bagaimana mengatur peringatan sebagai tingkat kesalahan (dengan asumsi itu benar-benar ada). Opsi apa yang harus Anda miliki untuk menghasilkan simbol debug? Optimalisasi mana (atau level berapa) yang Anda inginkan. Daftarnya berlanjut.
sumber
-pedantic -Wall -Wextra -Werror
... meskipun itu bisa sulit untuk membangun apa pun kemudian: pOtakmu. Alat-alat lain tidak akan memiliki banyak makna tanpa itu.
sumber
Bagus tua:
Terkadang debugger atau profiler atau diagram alir UML berguna. Dan terkadang mereka membuatmu gila. Saya selalu menemukan diri saya kembali menggunakan pernyataan cetak (atau melacak atau NSLog atau apa-apa-Anda) hanya untuk memastikan kode saya melakukan apa yang saya pikir itu lakukan ketika saya pikir itu melakukannya.
sumber
Skrip lama polos ... tidak peduli berapa banyak bahasa generasi berikutnya yang kami kembangkan, kami masih sangat bergantung pada skrip juga sebagian besar tugas sehari-hari dapat dicapai dengan menulis beberapa baris skrip.
sumber
Pena dan papan tulis.
Anda tidak dapat mengalahkan teknologi rendah ketika mencoba menjelaskan sesuatu.
sumber
ack . Itu seperti
grep -r
, tetapi dirancang untuk mencari kode sumber Anda.sumber
Perl dan bahasa scripting lainnya. Bagus untuk tugas yang agak terlalu rumit untuk alat GUI seperti Agen Ransack.
sumber
Pintasan keyboard yang memungkinkan pemulihan ulang yang cepat, sering, dan aman. Mempelajari cara mengekstrak (atau sebariskan dll) variabel, metode, konstanta, atau kelas dengan menekan beberapa tombol pada dasarnya mengubah cara saya membuat kode. Anda hanya akan sering refactor (yaitu cukup) ketika biayanya minimal, sehingga membuat pintasan ini sifatnya penting untuk menulis dan memelihara kode yang baik sejauh yang saya ketahui.
Jadi secara umum, gunakan alat yang bagus (IDE / editor) dan pelajari cara mendapatkan sebagian besar fitur yang mereka sediakan.
Pengujian unit dan TDD berikutnya, untuk menjaga kode Anda dapat diuji dan mencegah takut refactoring.
Gunakan ini dan Anda akan dengan mudah bergerak menuju penulisan kode yang dapat dipelihara yang sesuai dengan prinsip KERING dan mendokumentasikan diri.
sumber
Pengujian unit menawarkan manfaat berikut:
sumber
Pembuat kode
Pembuat kode dapat membuat kode efisien dan bebas bug dalam jumlah besar dari definisi sederhana. ORMPenggunaan tipe adalah yang paling jelas untuk membuat kelas akses data, tetapi ada banyak kegunaan yang lebih potensial.
Dukungan pembuatan kode tampaknya masih dalam tahap awal baik dari sudut pandang programmer maupun kerangka kerja, tapi saya yakin ini adalah sesuatu yang akan semakin banyak kita lihat. Di .NET Anda dapat mulai mencoba-coba hal-hal CodeDOM .
sumber
Saya banyak menggunakan AgentRansack . Ini sangat membantu mencari melalui ribuan file dengan sangat cepat. Ini telah menghemat banyak waktu saya, tetapi saya tidak tahu banyak programmer yang tahu atau menggunakannya.
sumber
Metode Formal.
http://www.amazon.com/Discipline-Programming-Edsger-W-Dijkstra/dp/013215871X
http://www.amazon.com/Science-Programming-Monographs-Computer/dp/0387964800/ref=pd_sim_b_1
Sulit untuk melebih-lebihkan pentingnya mereka. Setiap loop dan setiap pernyataan if dimulai sebagai sebuah ide yang membutuhkan semacam "bukti". Kebanyakan programmer melakukan pembuktian ini sebagian besar waktu di kepala mereka. Anda bertanya apa yang dilakukan pernyataan if dan mereka dapat mengartikulasikan - dengan jelas dan logis - apa pilihannya dan mengapa pilihannya lengkap, konsisten, dan eksklusif.
Tetapi beberapa hanya menebak secara acak. Mereka membutuhkan lebih banyak bantuan dan metode formal bisa menjadi jenis bantuan yang mereka butuhkan.
Itu hanya aljabar (dan kalkulus) untuk kode. Tidak ada yang terlalu rumit atau canggih.
sumber
Pola desain fisik seperti meninggalkan kursi untuk berlari cepat di bawah sinar matahari dan udara segar menjaga otak kita tetap berjalan pada keangkeran puncak.
sumber
Nah itu Half Life 2 (masukkan game favorit Anda di sini). Jika saya mendapat masalah saya tidak bisa menyelesaikannya, saya hanya berhenti dan mulai bermain dengan permainan favorit saya dan tiba-tiba solusinya muncul di pikiran saya. Jadi jujur saja itu bukan permainan atau sesuatu seperti itu tetapi melakukan sesuatu yang lain . Saya sering melihat orang duduk di masalah selama berjam-jam tanpa menyelesaikannya dan semua yang harus mereka lakukan adalah membuat otak mereka offline untuk waktu yang singkat.
sumber
Stack Overflow - bantuan ahli cepat ketika Anda terjebak
sumber
Saya pikir itu adalah Notepad / TextPad / program pengeditan teks sederhana. Setiap orang memiliki waktu ketika mereka membutuhkan perbaikan cepat yang tidak memerlukan pembukaan IDE dan hanya perlu mengedit cepat. Dan semua komputer memiliki semacam program pengeditan teks sederhana.
sumber
Meminta dan
alwaysAssert()
fungsi yang baik . IMHO ini lebih penting daripada tes unit, karena tes unit hanya dapat menemukan bug dalam kasus tertentu yang Anda pikir akan diuji. Jika programmer yang sama menulis kode dan tes, dia mungkin akan kehilangan kasus tepi yang sama di keduanya. Selain itu, kadang-kadang pengujian unit tidak praktis karena lingkungan di mana komponen berfungsi dan / atau data yang dioperasikannya terlalu rumit untuk menghasilkan kasus uji yang dibuat-buat.Keindahan penegasan terletak pada kemampuan mereka untuk mendokumentasikan asumsi dan mengujinya pada input yang tidak dibuat-buat . Jika salah satu dari asumsi ini salah, kode Anda gagal dengan keras alih-alih "berfungsi" tetapi menghasilkan hasil yang sedikit salah. Itu juga gagal lebih dekat ke akar masalah daripada itu tanpa menegaskan. Dalam praktiknya, jika Anda secara eksplisit menyatakan asumsi yang cukup tentang sepotong kode dan semua asumsi ini benar maka kode tersebut biasanya benar.
Satu keluhan umum tentang menegaskan adalah bahwa mereka dapat dimatikan. IMHO setiap bahasa atau pustaka standar harus memiliki
alwaysAssert()
fungsi atau persamaan kasar yang melakukan hal yang samaassert
tetapi tidak dapat dimatikan. Ini dapat digunakan untuk memeriksa asumsi dalam bidang kode non-kinerja yang kritis, di mana manfaat mematikan konfirmasi diabaikan.sumber
Kunci F1. - Berguna untuk program yang tidak Anda kenal dan untuk program yang sedang Anda kerjakan. (Dengan asumsi bahwa itu adalah aplikasi besar.)
Kuat untuk menyaring masalah adalah pengguna melaporkan bug berdasarkan interpretasi mereka tentang bagaimana perangkat lunak seharusnya bekerja. Tentu saja, bisa jadi desainnya sendiri cacat. Tapi itu cerita lain.
sumber
Berbagai utilitas inti UNIX, tetapi utamanya
find
dan sesekaligrep
ataued
. Kemampuan untuk menemukan hal-hal di sarang file yang dalam sangat berharga, terutama ketika Anda tiba-tiba mewarisi basis kode dan harus memperbaikinya. Bahkan jika kode tersebut didokumentasikan dengan baik, Anda mungkin harus berburu, dan pemahaman yang kuat tentangfind
membunuhnya.sumber
Keingintahuan
Sebut saja "Teka-teki pemrograman." Apa alat dibandingkan dengan orang yang menggunakannya? Keinginan untuk mengetahui bagaimana dan mengapa sesuatu berfungsi atau tidak berhasil memperluas pengetahuan seseorang lebih dari alat spesifik apa pun dan itu benar di luar pemrograman.
sumber
Disimpan berjam-jam di seluruh dunia!
sumber
Ekor
Ekor dapat digunakan untuk memantau file keluaran log program secara realtime. Telah sangat membantu ketika mengembangkan untuk sistem yang tidak menyediakan cara lain untuk membaca log.
Contoh program adalah;
sumber
Saya bergabung bersama generator grafik panggilan Perl sekali. Itu sangat berguna, tetapi gagal pada kode non-prosedural atau out-of-file rutin.
sumber