Dollar Sign Blues: Javascript และ PHP


18

ฉันโตขึ้นการเขียนโปรแกรม C ++ และ Java ที่ทุกอย่างปลอดภัยและสวยงาม คอมไพเลอร์ตรวจสอบให้แน่ใจเพื่อให้ฉันอยู่ในการตรวจสอบถ้าฉันหลงทาง แน่นอนว่าทุกคนทำ Perl ได้เล็กน้อยในวิทยาลัย แต่ฉันไม่ได้หายใจเข้า เด็ก ๆ ทุกวันนี้ทุกอย่างเกี่ยวกับ PHP ที่แบ็กเอนด์และจาวาสคริปต์ที่อยู่ข้างหน้า ในการพยายามเป็นสะโพกฉันทำเช่นเดียวกัน (สำหรับการพัฒนาเว็บ) ปัญหาที่ฉันยังคงทำงานต่อไปคือฉันเพิ่มเครื่องหมายดอลลาร์ ($) ต่อหน้าตัวแปรปกติใน Javascript และแน่นอนไม่มีใครพูดอะไรเลยเพราะนั่นคือไวยากรณ์ทางกฎหมายที่มักใช้กับวัตถุ jQuery

มีเครื่องมือในการดีบักหรือกลอุบาย dev เพื่อจับสัญญาณดอลลาร์นี้หรือไม่? คุณมักจะทำผิดพลาดเหมือนกันและคุณจัดการกับอารมณ์อย่างไร? เครื่องมือ Chrome dev ไม่เห็นว่านี่เป็นข้อผิดพลาดของ Javascript เสมอไป ฉันใช้ PhpStorm และ Emacs เพื่อการพัฒนา แต่สิ่งเหล่านั้นไม่ได้ทำให้ฉันงี่เง่าแม้ว่าฉันคิดว่า Emacs ทำ แต่เลือกที่จะไม่บอกฉันเกี่ยวกับเรื่องนี้

หากคุณคิดว่าคำถามนี้ไร้สาระฉันคิดว่าคุณพูดถูก แต่เราอยู่ในโลกที่ตัวแปรมีเครื่องหมายดอลลาร์อยู่ข้างหน้ามัน ในโลกใบนี้ไม่มีอะไรไร้สาระ


2
อารมณ์? เพียงแค่สะบัดที่เพื่อนร่วมงานของคุณ
Chris Schiffhauer

@ChrisSchiffhauer น่าเสียดายที่ฉันทำงานในแวดวงวิชาการที่ชื่อสมบูรณ์ของเกม ฉันจะต้องกำหนดเวลาการประชุมกับเพื่อนร่วมงานเพื่อที่จะออกไปและนั่นจะทำให้ความเป็นธรรมชาติของมันหมดไป
Alan Turing

คำตอบ:


11

ไม่มีอะไรผิดปกติในการใช้งาน$ตัวแปร ฉันจะไม่ทำตามวัตถุประสงค์ในทุกตัวแปร แต่ก็ยังเป็นไวยากรณ์ที่ถูกต้อง jQuery เป็นหนึ่งในตัวอย่างที่$ใช้เป็นชื่อตัวแปร นั่นเป็นสาเหตุที่"เครื่องมือ dev ของ Chrome ไม่เคยเห็นว่านี่เป็นข้อผิดพลาดของ Javascript"เนื่องจากไม่มีข้อผิดพลาดในตอนแรก

หากคุณกลัวการเขียนโค้ดเช่น:

var demo = function demo() {
    var a = 123;
    ...
    $a = 456; // A new variable is created in global scope.
}

แล้วคุณจะต้องใช้ตัวตรวจสอบรูปแบบเช่นJSlint , jsHintหรือGoogle ปิด Linter หนึ่งในนั้นคืออะไร? มันขึ้นอยู่กับคุณที่จะเลือก เพื่อช่วยให้คุณมีสิ่งต่อไปนี้เป็นหมายเหตุเล็กน้อย:

สไตล์

Google Closure Linter เป็นไปตามคู่มือสไตล์ของ Google JavaScriptซึ่งเป็นที่รู้กันว่าทำอย่างชาญฉลาด การใช้สไตล์ที่รู้จักกันดีสำหรับ JavaScript หรือภาษาอื่น ๆ หกภาษาเป็นความคิดที่ดี: เมื่อคุณแชร์รหัสของคุณหรือจ้างนักพัฒนาใหม่โอกาสที่พวกเขาจะคุ้นเคยกับสไตล์นี้อยู่แล้ว

นักพัฒนาหลายคนคุ้นเคยกับสไตล์ Douglas Crockford เช่นกัน สไตล์นี้มีการอธิบายโดยละเอียดในJavaScript: The Good Partsหนังสือที่ควรซื้อทุกคนที่ทำงานกับ JavaScript

สำหรับ jsHint ฉันไม่สามารถค้นหาสิ่งที่ใช้ในการประชุมได้และเว็บไซต์ดูเหมือนว่าจะหลีกเลี่ยงการพูดถึงเรื่องนั้น บางทีฉันอาจจะพลาดบางสิ่งบางอย่าง

สนับสนุนโดย IDEs

ทั้งสอง JSlint และ jsHint ได้รับการสนับสนุนโดย PhpStorm นี่เป็นกรณีของ Google Closed Linter

สิ่งแวดล้อม

Google ปิด Linter เป็นหนึ่งในชุดของเครื่องมือ หากคุณใช้Google Closure CompilerหรือGoogle Closure Library อยู่แล้วคุณควรเลือกที่จะปิด Linter เหนือเครื่องมืออื่น ๆ

ความเข้มงวด

jsLint เป็นที่รู้กันว่าเข้มงวด jsHint อนุญาตได้ดีกว่าซึ่งไม่ใช่สิ่งที่ดีเสมอไป ตัวอย่างเช่นหนึ่งในเหตุผลในการแยก jsLint สำหรับ jsHint มีการอธิบายไว้ในบทความที่แสดงรหัสที่ไม่ดีซึ่งจะสร้างข้อผิดพลาดใน jsLint แต่ไม่ใช่ jsHint:

/*global jQuery */

// Example taken from jQuery 1.4.2 source
jQuery.extend({
    /* ... */

    isEmptyObject: function( obj ) {
        for ( var name in obj ) {
            return false;
        }
        return true;
    }

    /* ... */
});

รหัสไม่ดีเนื่องจากดูเหมือนว่า JavaScript มีขอบเขตบล็อกในขณะที่มันไม่ได้ ดู JavaScript: The Good Parts, p. 102, ภาคผนวก A: ส่วนที่น่ากลัว, ขอบเขต กล่าวอีกนัยหนึ่งคือการดูรหัสโดยไม่ทราบภาษาเราคาดว่าnameจะไม่สามารถมองเห็นได้นอกวงในขณะที่มันจะยังคงมองเห็นได้

สำหรับ Google Closed Linter ฉันเชื่อว่ามันอยู่ตรงกลางระหว่าง jsLint และ jsHint แต่ฉันมีข้อมูลไม่เพียงพอที่จะสนับสนุนสิ่งนั้น

ข้อสรุป

ฉันจะหลีกเลี่ยง jsHint: อนุญาตเกินไปหมายความว่าจะไม่พบข้อบกพร่องที่อาจเกิดขึ้นซึ่ง linters อื่น ๆ จะตรวจจับ คู่มือสไตล์ที่ใช้นั้นหายาก

ในบรรดา jsLint และ Google Closure Linter ตัวเลือกไม่ชัดเจน ทั้งสองเขียนโดยผู้เชี่ยวชาญทั้งสองปฏิบัติตามคำแนะนำสไตล์ที่เข้มงวดอธิบายได้ดีแล้วตามด้วยนักพัฒนาหลายพันคน ใช้ทั้งสองครั้งแล้วเลือกอันที่เหมาะกับคุณมากกว่า


+1: เอาชนะฉันให้ได้ ผมเริ่มลดลงอัฒภาคของฉันเมื่อฉันเปลี่ยนภาษาจาก F # C # ดังนั้นฉันสามารถแบ่งปันความเจ็บปวดของคุณ;)
scrwtp

2
เพียงแค่ทราบเนื่องจาก OP ใช้ PhpStorm: ทั้ง JSLint และ JSHint นั้นถูกรวมเข้าด้วยกันและสามารถตั้งค่าเพื่อตรวจสอบโค้ดตามต้องการหรือแม้กระทั่งในทันที ข้อผิดพลาดเช่นหนึ่งในตัวอย่างของคุณนั้นค่อนข้างง่ายต่อการจับ
yannis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.