Coding Style Guide สำหรับแอพ node.js? [ปิด]


130

มีคู่มือรูปแบบการเข้ารหัส (หรือหลายรายการ) สำหรับ node.js หรือไม่ ถ้าไม่สไตล์ใหม่ๆ ที่โปรเจ็กต์โหนดโอเพนซอร์สใช้คืออะไร

ฉันกำลังมองหาคำแนะนำ (หรือหลายคำแนะนำ) ตามบรรทัดของPEP 8ซึ่งเป็นแนวทางรูปแบบการเข้ารหัสมาตรฐานสำหรับ Python ฉันเห็นคู่มือ JavaScript ต่างๆไม่คุ้มค่าที่จะเชื่อมโยงที่นี่ (ส่วนใหญ่เก่าและกำหนดเป้าหมายไปที่ JavaScript ฝั่งไคลเอ็นต์) ฉันพบหนึ่งที่น่าสนใจ Node.js คู่มือสไตล์

คู่มือรูปแบบการเข้ารหัสหรือรูปแบบการเข้ารหัสควรรวมถึง (แต่ไม่ จำกัด เพียง):

  • เค้าโครงโค้ด: การเยื้อง (2 ช่องว่าง 4 ช่องว่างแท็บ ... ) ขึ้นบรรทัดใหม่ตัวแบ่งบรรทัด ฯลฯ
  • ช่องว่างเช่น "function (arg)" vs. "function (arg)"
  • อัฒภาคหรือไม่มีอัฒภาค, การประกาศ var, ...
  • การตั้งชื่อเช่น do_this () เทียบกับ doThis (), var_name เทียบกับ varName, ...
  • node.js และ JavaScript idioms เช่น == เทียบกับ === อาร์กิวเมนต์แรกของการเรียกกลับคืออ็อบเจ็กต์ข้อผิดพลาด ...
  • ความคิดเห็นและเอกสาร
  • เครื่องมือที่มาพร้อมกันเช่นตัวตรวจสอบผ้าสำลีกรอบการทดสอบหน่วย ...

เห็นได้ชัดว่าหัวข้อนี้มีความเป็นส่วนตัวสูง แต่ฉันคิดว่าเป็นขั้นตอนสำคัญของชุมชนในการสร้างรูปแบบการเข้ารหัสที่ใช้กันทั่วไปและได้รับการยอมรับอย่างกว้างขวางในกระบวนการเติบโตเป็นผู้ใหญ่ นอกจากนี้ไม่ใช่แค่เรื่องของรสชาติเท่านั้น โดยเฉพาะกฎอย่าง "use === แทน ==" มีผลโดยตรงต่อคุณภาพโค้ด


ฉันเดาว่าจริงๆแล้วขึ้นอยู่กับ "เฟรมเวิร์ก" ที่คุณใช้ (ถ้ามี) ตัวอย่างเช่นคุณสามารถตรวจสอบspludo.com/source/coding-standardsแต่คนอื่น ๆ อาจเห็นว่าaproachesต่างกันเล็กน้อย
Poelinca Dorin

4
"ใครมีชุดคำแนะนำสไตล์ที่ดี" อาจมีหรือไม่มีก็ได้ แต่ "รูปแบบที่เกิดขึ้นใหม่คืออะไร" แน่นอน คุณได้พบคู่มือของเฟลิกซ์แล้วซึ่งแน่นอนว่าฉันไม่เห็นด้วยกับแง่มุม (ในบางกรณีอย่างยิ่ง) และเห็นด้วยกับแง่มุมอื่น ๆ ของ และนั่นคือปัญหา เร็วมากมันเข้าสู่ "ไม่สไตล์ที่ฉันเห็นโผล่ออกมาใช้แท็บ!" "ไม่สไตล์ที่ฉันเห็นโผล่ออกมาใช้ช่องว่างสี่ช่อง "ไม่สไตล์ที่ฉันเห็นโผล่ออกมาใช้ช่องว่างสองช่อง แน่นอนว่าเมื่อใดสิ่งที่ผู้คนหมายถึงคือ "สไตล์ที่ฉันชอบ" ไม่ใช่ "สไตล์ที่ฉันเห็น"
TJ Crowder

2
@TJ Croweder สไตล์ที่ฉันเห็นโผล่ออกมาไม่ใช้ช่องว่าง!
Raynos

+1 คำถามสุดเจ๋ง ฉันหวังว่าฉันจะมีลิงก์เหล่านี้เมื่อนานมาแล้ว
Bryan Downing

คำถามอัตนัย
Niels Abildgaard

คำตอบ:


120

ฉันต้องการทบทวนมาตรฐานการเข้ารหัสการตรวจสอบโดยJSLintหรือดูที่ผู้เขียนNPM (ไอแซค Shlueter ของ) มาตรฐานการเข้ารหัส

นอกจากนี้คุณยังสามารถดูสไตล์ที่ใช้โดยตัวเข้ารหัส Node.JS ที่โดดเด่น:

ฉันจะโยนของฉันไปที่นั่นเพื่อการวัดที่ดี;)

แก้ไข: คำแนะนำจาก@alienhard

IMO มีกฎทองบางประการที่คุณควรปฏิบัติตาม:

  • ห้ามใช้withหรือeval
  • ใช้===เกิน==
  • ประกาศตัวแปรของคุณvarในขอบเขตที่เหมาะสมเสมอ - อย่าถอยกลับไปที่ขอบเขตส่วนกลาง
  • ปิดแอปของคุณ(function(){})()หากคุณวางแผนที่จะปล่อยโค้ดที่เรียกใช้ฝั่งเซิร์ฟเวอร์และในเบราว์เซอร์
  • การโทรกลับควรใช้errเป็นอาร์กิวเมนต์แรกและหากพวกเขาใช้การเรียกกลับเป็นอาร์กิวเมนต์ก็ควรเป็นครั้งสุดท้ายเช่นcallback(err, param1, param2, callback)

การเยื้องระยะห่างระหว่างวงเล็บปีกกากับคีย์เวิร์ดและการจัดตำแหน่งอัฒภาคล้วนแล้วแต่เป็นเรื่องที่คุณต้องการ


2
ขอบคุณสำหรับคำตอบ. ฉันสงสัยว่าทำไมคุณไม่พูดถึง Ryan;) แต่ผมคิดอย่างเป็นทางการจากวิกิพีเดียโหนด repo ที่พวกเขาปฏิบัติตามคู่มือสไตล์ของ Google JavaScript ฉันไม่เคยรู้เรื่องนั้นมาก่อน ...
alienhard

15

มีมาตรฐานใหม่ในเมือง

ใช้รูปแบบมาตรฐาน

js มาตรฐานสไตล์


1
ฉันไม่รู้ว่าทำไมถึงมีการโหวตเพิ่มขึ้น 3 ครั้ง ...
ลัค

4
@Luc อาจเป็นเพราะกฎ "ไม่มีอัฒภาค" ดูเหมือนจะเป็นทางเลือกที่แปลกสำหรับสิ่งที่เรียกว่าสไตล์ "มาตรฐาน"
Daniel Yankowsky

การไม่มีอัฒภาคไม่ใช่ความคิดที่ดี มันจะทำลายการย่อขนาดบางส่วน
denov

นี้standardแพคเกจไม่ชอบอัฒภาค ถ้าคุณชอบอัฒภาคมีsemistandard
yesnik

10

คุณสามารถเรียนรู้แนวทางปฏิบัติเกี่ยวกับรูปแบบการเขียนโค้ดที่ดีมากมายจากคู่มือ JavaScript ที่เน้นฝั่งไคลเอ็นต์ (ส่วนใหญ่ใช้กับ node.js โดยทั่วไปเนื่องจากความแตกต่างระหว่างฝั่งไคลเอ็นต์และเซิร์ฟเวอร์ส่วนใหญ่อยู่ในไลบรารีและไม่ใช่ในภาษานั้น ๆ ) ตัวอย่างเช่นรูปแบบ JavaScriptจอง dedicates กับหัวข้อนี้บางส่วนของบทที่ 2 นอกจากนี้ยังดักลาส Crockford ของเว็บไซต์ , หนังสือและวิดีโอจะต้องดูวัสดุในการสั่งซื้อเพื่อนำมาใช้งาน JavaScript เฉพาะรูปแบบการเข้ารหัสและการปฏิบัติที่ดีที่สุดที่ฉันจะบอกว่า


3
+1 ถึงหนังสือ "JavaScript: The Good Parts" ของ Douglas Crockford มันมีข้อมูลมากมายในหนังสือที่กระชับ / เล่มเล็ก - อ่านหนัก แต่เป็นหนังสือที่ดีที่สุดเล่มหนึ่งที่ฉันเคยอ่าน
Alex KeySmith

7

เมื่อใช้โหนดจากเทอร์มินัลจะมีประโยชน์สำหรับซอร์สโค้ดของคุณในการใช้ช่องว่างสำหรับการเยื้อง มิฉะนั้นเครื่องหมาย "ข้อผิดพลาดที่นี่" จะไม่ปรากฏขึ้น

ด้วยแท็บ:

        var preps = files.map(function(f) { 
            ^
TypeError: Cannot call method 'map' of null

ด้วยช่องว่าง:

        var preps = files.map(function(f) { 
                          ^
TypeError: Cannot call method 'map' of null

นี่อาจเป็นปัญหาเฉพาะสำหรับ Mac แต่ฉันสงสัยว่าจะไม่


OP ขอคำแนะนำสไตล์ ไม่ใช่เคล็ดลับเฉพาะบางอย่าง
mightyiam

@mightyiam จริง แต่กฎการเยื้องเป็นส่วนหนึ่งของคู่มือเกือบทุกสไตล์ บางทีประเด็นของฉันอาจช่วย OP ประเมินคำแนะนำสไตล์บางอย่างที่คนอื่นจะเชื่อมโยงหรือสามารถช่วยเขาพัฒนาคำแนะนำสไตล์ของตัวเองได้
Daniel Yankowsky

6

เป็นเวลานานแล้วที่ฉันถามคำถามนี้ ... และในระหว่างนี้ฉันได้พบคู่มือ JavaScript ที่ยอดเยี่ยมนี้:

หลักการเขียน JavaScript ที่สอดคล้องกันสำนวน

https://github.com/rwldrn/idiomatic.js/



2

สำหรับ Coffee-Script การเยื้องที่ไม่ถูกต้องหมายถึงข้อผิดพลาดในการคอมไพล์

ใช้

:set tabstop=2
:set shiftwidth=2
:set expandtab

นิยมโครงการกาแฟzombie, brunchใช้การตั้งค่านี้สำหรับรอยบุ๋ม

แก้ไข:

ใช้ได้จริงแค่นี้! https://github.com/paulmillr/code-style-guides (หนึ่งในผู้ร่วมให้ข้อมูลหลักbrunch)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.