JavaScript jelas menjadi sangat diperlukan; Namun, saya masih baru untuk itu, dan saya merasa sulit untuk melawan perasaan yang tampaknya berantakan dan saya tidak ingin menghadapinya sekarang. Saya lebih jauh dalam pemahaman saya tentang bahasa lain daripada saya dengan JavaScript, karena saya sepertinya tidak bisa mengatasi rasa takut ini. Saya merasa bahwa, ketika saya menulis JavaScript, saya mencoba melukis potret anak-anak Weimaraner.
Biasanya membantu saya untuk menjaga beberapa arahan yang paling penting dalam pikiran bahwa saya dapat bertanya pada diri sendiri untuk setiap gerakan yang saya buat. (Menurut saya, segelintir orang adalah lima atau kurang.)
Bisakah Anda mencantumkan lima (atau lebih sedikit) pertanyaan khusus untuk JavaScript yang harus saya ajukan pada diri sendiri untuk setiap gerakan yang saya buat, ketika saya mengode JavaScript? Akan jadi apa mereka?
Perbarui: untuk memperjelas, saya tidak meminta lima hal yang perlu diingat ketika mempelajari JavaScript; Saya meminta lima pertanyaan untuk selalu bertanya pada diri sendiri maju, bahwa semua orang harus selalu bertanya. Pertanyaan tingkat tinggi seperti: "Apakah saya cenderung mengulanginya di tempat lain?" atau "apakah nama variabel / fungsi ini cukup spesifik (atau terlalu spesifik)" <== kecuali pertanyaan-pertanyaan contoh ini tidak khas pada JavaScript. Saya mencari arahan yang khas untuk JavaScript.
Jawaban:
Saya akan menjawab ini dalam dua bagian. Salah satunya adalah "Lima atau lebih sedikit tips tentang belajar menulis JavaScript yang baik". Yang lainnya adalah "Lima atau lebih sedikit tips untuk menulis JavaScript yang baik".
Belajar:
Perbuatan:
EDIT (menambahkan pertanyaan untuk mematuhi OP):
Apa ruang lingkup yang saya rujuk?
Ini akan membantu mengatasi global yang bocor, penangan acara, dan kapan harus menggunakan penutupan.
Apakah saya mengulangi sendiri?
Abstraksi dan penggunaan teknik OO yang tepat adalah penting. Gunakan dengan bijak.
Apakah kode saya berulang?
Sangat mudah untuk menemukan diri Anda menempatkan akses DOM ke dalam satu lingkaran, atau membuat fungsi (anonim atau lainnya) dalam satu lingkaran. Perhatikan bahwa ini bisa benar dari kode yang menggunakan
setTimeout
atausetInterval
juga loop tradisional.Apakah ini berarti apa yang saya pikirkan artinya?
Nilai kebenaran dan kepalsuan di JS bisa sedikit rumit, terutama ketika menggunakan perbandingan yang tidak ketat (
==
sebagai lawan dari===
). Pengetikan dinamis, ketik pemaksaan, dan apakah Anda mereferensikan objek atau literal bisa relevan juga.sumber
Pertama, ketahui bagaimana teknologi di baliknya bekerja.
Anda perlu mengetahui hal ini karena pengetahuan di balik cara kerjanya, karena Anda akan mengalami masalah jaringan, atau, seperti yang telah saya lihat berkali-kali, orang-orang sepenuhnya fasih dalam memahami apa sebenarnya sisi server dan sisi klien. Salah satu pertanyaan newb paling umum yang saya lihat adalah "Bagaimana saya bisa membuat JS mengubah variabel dalam kode ASP saya ?!"
Pahami kode Anda lebih besar dari Anda, atau situasi spesifik Anda
cell.innerHTML = "<script>alert("xss")</script>"
, dan kotak peringatan muncul, Anda telah melakukannya dengan salah.<noscript>
tag untuk memberi tahu mereka./[a-z ']/i
, tetapi termasuk aksen Hindi, Arab, (ini adalah masalah yang ada dari pengembang yang berpandangan pendek), Cina , dan lain-lain. Memahami set karakter, Unicode dan UTF-8.Anda seorang programmer, bukan pabrik pasta. Berhenti menulis spageti.
"This fizzes the bizz"
atau setengah bahasa Inggris setengah bahasa Perancis tidak membantu. Jelaskan apa fungsi tidak. Jelaskan bagian kode yang kompleks.<a href="javascript:alert("foo")">
. FFS JANGAN MELAKUKANNYA. Tunggu dokumen lengkap dimuat, pisahkan kode JavaScript Anda dari dokumen html. Ini adalah praktik dasar OOP 101, tapi jangan masukkan JS atau CSS Anda ke dalam dokumen html Anda. Cari tahu bagaimana melakukannya dengan benar atau temukan seseorang yang tahu bagaimana menunjukkan kepada Anda bagaimana melakukannya. Sekali lagi, ajukan pertanyaan.Javascript:foo("buz")
adalah protokol-psudeo, itu tidak sepenuhnya didukung, dan jika Anda tidak in-line javascript Anda tidak akan menggunakannya di tempat pertama. Saya berjanji kepada Anda dari lubuk hati saya, tidak ada alasan apa pun di dunia ini atau di mana pun di dunia yang Anda BUTUHKAN untuk menempatkan javascript Anda di dalam elemen HTML. Pernah. Jadi jangan lakukan itu. Aku bahkan tidak akan membantu orang-orang yang melakukan hal itu lagi, itu yang buruk.Cari tahu bagaimana menulis kode sedemikian rupa sehingga tidak rusak sepanjang waktu.
main_backup_20110911.js.bak.1
Anda kehilangan barang, direktori Anda menjadi berantakan, Anda tidak dapat dengan mudah "mundur" ke titik waktu sebelumnya. Anda tidak dapat melihat apa yang terjadi, Anda tidak dapat membuat tambalan kode. Jadi, mulailah belajar GIT, itu akan memakan waktu satu jam dan Anda tidak akan pernah kembali.Tuliskan JavaScript yang disukai orang
Fokus pada dasar-dasar, selalu.
for (;;)
dan mengapa Anda menggunakanfor( in )
loop. Kapan menggunakan loop sementara. Berhenti bersarang IF ketika Anda hanya bisa menggunakan sakelar. Objek tidak menyimpan pesanan, jadi jangan gunakan itu sebagai array; Opera tua / FF, MISE tua, terkadang Flash tidak akan menghormati urutan objek Anda. Gunakan array jika Anda ingin menjaga urutan hal-hal, gunakan objek jika Anda menginginkan objek (sesuatu yang tidak memiliki urutan elemen).Fokus pada permainan panjang, bukan flash cepat dan mati.
which
" letakkan banyak kode yang tidak dapat digunakan dan menghilang oleh siapa pun. Anda tidak berkontribusi apa pun. Jangan gunakan variabel sukaa
danchezburger
.Bagi siapa pun yang tertarik, saya sebenarnya telah mengambil sebagian besar dari catatan pribadi pada tutorial saya tidak selesai menulis.
sumber
TCPIP(HTTP(ClientServerRelationship(), Cookies(), HTML(JavaScript(Knowledge))))
Baca Douglas Crockford's Javascript: The Good Parts . Itu tip, tapi jujur, itu saran terbaik yang pernah saya dengar untuk menulis javascript yang baik.
Terkait, baca artikel Douglas Crockford tentang Javascript .
sumber
sumber
Berikut adalah beberapa pertanyaan yang harus Anda lakukan tentang JavaScript.
Bagaimana cara kerja JSON dan apa manfaatnya?
Mengapa objek fungsi dalam Javascript?
Mengapa saya tidak harus menggunakan eval?
Bagaimana cara membuat acara dalam javascript?
Bagaimana cara fitur deteksi dalam javascript?
Cukup banyak mencakup sebagian besar hal yang perlu Anda lakukan dalam Javascript.
sumber
eval()
, periksa dua kali dan tiga kali untuk cara lain; hampir selalu ada cara yang lebih bersih dan lebih mudah kecuali Anda benar-benar mencoba untuk mengeksekusi seluruh nilai JavaScript.(function() {/* stuff */})()
adalah cara yang baik untuk membungkus satu set kode dan membuat ruang lingkup lokal untuk itu. Menggunakan benda adalah cara lain yang sering kali lebih baik; objek lebih analog dengan ruang nama dalam bahasa lain saat digunakan dengan cara ini. Berhati-hatilahthis
. Tidak seperti kebanyakan bahasa lain,this
tidak selalu merujuk pada apa yang menurut Anda intuitif. Juga ingat bahwa kecuali ditentukan lain semua variabel JS, fungsi dan objek lain semuanya global, bahkan di beberapa.js
file.sumber
return
, dan baris berikutnya yang berisi data Anda, Anda akan benar-benar mengatakanreturn ;
karena ASI. Saya akan mengatakan bahwa lebih penting untuk memahami aturan ASI dan spasi putih daripada "selalu menggunakan titik koma." Tapi ini cara yang bagus untuk menyelamatkan diri.I'd say it's more important to understand ASI and whitespace rules than it is "always use semicolons."
Saya percaya kelas menjadi alat yang cukup kuat untuk menyusun kode. Ada banyak aturan agnostik bahasa tentang bagaimana merancang sistem berbasis kelas dan beberapa prinsip OO sebenarnya lebih jelas diimplementasikan ketika menggunakan kelas.
Karena itu saya sarankan Anda melihat CoffeeScript .
Dari sana, saya sarankan Anda hanya mencoba untuk mengumpulkan informasi tentang bagaimana menerapkan SOLID , KERING , GRASP , Kiss dan YAGNI , dan yang lebih penting bagaimana untuk pergi tentang situasi, di mana mereka tampaknya konflik (mereka tidak pernah lakukan, hanya pemahaman Anda dari mereka atau masalah yang dihadapi memang). Ini cukup mudah ditemukan, bahkan di stackexchange.
Harap dicatat, bahwa prinsip-prinsip ini berlaku untuk pengembangan JavaScript "mentah" juga. Namun banyak konten yang akan Anda temukan pada mereka akan menggambarkannya menggunakan bahasa berbasis kelas dan karenanya mungkin berguna untuk memprogram dalam bahasa, di mana tidak ada terlalu banyak biaya tambahan untuk memahami mereka.
Secara pribadi, saya pikir JavaScript adalah bahasa yang sangat kuat, tetapi sebenarnya Anda harus terlebih dahulu sangat memahami bahasa lain, untuk benar-benar menghargai fakta ini.
sumber
Saya membuat asumsi bahwa Anda menggunakan JavaScript untuk pengembangan UI sisi klien dalam aplikasi web.
1) Haruskah ini sisi klien atau ini sisi server? Saya tahu bahwa saya telah pergi dan menulis potongan kode serius yang benar-benar layak berada di sisi server dan sebaliknya. Banyak kali saya akan membuat panggilan AJAX untuk sesuatu yang berakhir lebih baik ditempatkan dalam kode Server untuk dimasukkan dalam perjalanan. Terutama hal-hal yang sifatnya statis tetapi berubah cukup teratur (daftar kategori misalnya.)
2) Apakah sudah ada plugin yang melakukan ini? Saya sering menggunakan JQuery dan jawabannya hampir selalu YA! Saya akan sering mengambil kode plugin yang ditulis seseorang dan menyesuaikannya dengan kebutuhan saya (biasanya menambahkan kelas tambahan untuk beberapa hal, dll.) Tetapi jarang saya harus mulai dari awal.
3) Apakah Javascript tempat yang tepat untuk ini? Kadang-kadang saya akan menemukan diri saya menambahkan sejumlah styling dinamis untuk sesuatu melalui Javascript ketika jauh lebih masuk akal untuk menggunakan CSS cerdas.
4) Haruskah saya menggunakan alat yang berbeda? Ini adalah sesuatu yang telah saya perjuangkan belakangan ini. Ada beberapa alternatif javascript seperti skrip kopi yang ditangani dengan baik di tumpukan saya (Rails 3.1) dan saya telah mempertimbangkan apakah akan memindahkan banyak kode saya atau tidak di sana.
5) Apakah kode Javascript ini baik? Javascript adalah kode seperti kode lainnya. Apakah kode ini sebagus kode saya yang lain? Jika tidak, mengapa tidak? Apakah ini bisa dibuang? Apakah saya malas?
sumber