ทำไมรหัส Wordpress จึง“ มีความสุขในอวกาศ”?


22

แกน WP, ปลั๊กอิน WP จำนวนมากและมาตรฐานการเข้ารหัส WPนั้นใช้ "แอปพลิเคชันใจกว้าง" ของSpaceตัวอักขระ (ไม่ใช่สำหรับการเยื้อง แต่ "ภายใน" ของ parens และวงเล็บ) สิ่งนี้ดูเหมือนจะไม่ซ้ำกับ Wordpress - รูปแบบ / ปรัชญานี้ดูเหมือนจะไม่ปรากฏในโครงการอื่น ๆ ที่คล้ายกัน, PHP หรืออื่น ๆ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการนี้โปรดดู: https://make.wordpress.org/core/handbook/coding-standards/php/#space-usage

ตัวอย่าง: foreach ( (array) $foo as $bar ) { ...

ฉันหมายถึงพื้นที่หลัง foreach หลังจากแรก(และก่อนสุดท้าย)(และช่องว่างที่คล้ายกันอื่น ๆ ที่แสดงใน "การใช้พื้นที่" ที่ลิงค์ด้านบน)

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

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

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบที่ให้ไว้สำหรับคำถามของ MK Safi คือ:

  1. สำหรับการอ่าน
  2. สถานะที่เป็นอยู่ (หรือที่รู้จักว่า "นั่นเป็นแบบที่มันเป็น")

เหตุผลของฉันในการถามคือฉันไม่เห็นคุณค่ามากนักในการนำมาตรฐานการเข้ารหัส WP มาใช้ (เกี่ยวกับ "การใช้พื้นที่") ในโครงการภายในเท่านั้นของเรา อย่างไรก็ตามฉันสงสัยว่าฉันขาดอะไร

มีเหตุผลใดที่นอกเหนือจากทั้งสองที่ระบุไว้ข้างต้นมีผลบังคับใช้อย่างเห็นได้ชัดหรือไม่สำหรับรูปแบบ "การใช้พื้นที่" ของ Wordpress?


2
คุณสามารถทำสิ่งที่คุณชอบในโครงการภายในของคุณตราบใดที่คุณสอดคล้อง เราใช้แท็บแทนช่องว่างดังนั้นเราจึงต้องการการพิมพ์ที่น้อยลงไม่ใช่เรื่องนี้ แต่อย่างใดหากคุณมี IDE ที่ทันสมัยซึ่งทำการจัดรูปแบบทั้งหมดให้กับคุณและสามารถฟอร์แมตใหม่ให้กับสไตล์ของคุณ ด้วยแพ็คเกจ, PHPS รูปแบบและอื่น ๆ )
Tom J Nowell

ขอบคุณสำหรับความคิดเห็นของคุณ @TomJNowell! ฉันคิดว่าฉันอาจเข้าใจผิดใน "คำถาม" ของฉัน - ฉันขอแท็บ / ช่องว่างน้อยลงสำหรับการเยื้องและอื่น ๆ เกี่ยวกับกฎที่กล่าวถึงภายใต้ "การใช้พื้นที่" ที่make.wordpress.org/core/handbook/coding-standards/php / … . ขอโทษฉันไม่ชัดเจน!
rinogo

5
มันจะง่ายต่อการอ่านเมื่อคุณไม่มีการเน้นไวยากรณ์ อย่างน้อยก็เป็นเหตุผลที่ฉันใช้สไตล์นั้นในโครงการภายใน ฉันต้องแก้ไข PHP บ่อยครั้งในคอนโซลธรรมดาที่มี vi ในการกำหนดค่าน้อยที่สุด
fuxia

2
FWIW, MediaWiki มีรูปแบบการประชุมที่คล้ายกันมากและจริงๆแล้วค่อนข้างเข้มงวดในการบังคับใช้ (อย่างน้อยก็ในแกนกลาง) พวกเขายังมีสคริปต์สำหรับการเพิ่มช่องว่างที่ขาดหายไปโดยอัตโนมัติ ทั้งหมดที่ฉันสามารถพูดได้ก็คือว่าคนจะชินกับมันหลังจากผ่านไประยะหนึ่ง
Ilmari Karonen

1
@rinogo ฉันรู้, ความเห็นบางครั้งก็เป็นเพียงแค่ความคิดเห็นไม่ตอบ :)
ทอม J Nowell

คำตอบ:


13

Resoning

เกี่ยวกับ"white space" (ไม่ว่าแท็บหรือช่องว่าง): มันเป็นความชอบส่วนตัวที่ติดอยู่กับโครงการ

imo มาตรฐานการเข้ารหัส WP นั้นยุ่งเหยิงและสามารถถูกเพิกเฉยได้ตราบใดที่คุณไม่ได้มีส่วนร่วมกับแกนหลักซึ่งก็คือ

  • เรื่องราวที่แตกต่างและ
  • คู่มือสไตล์ได้รับการละเว้นเช่นกัน

"[... ] มันไม่ได้ใช้ย้อนหลังเป็นกลุ่มในรหัสเก่าเพราะมันทำให้ประวัติ svn / git ยากมากที่จะใช้นโยบายอย่างเป็นทางการคือรหัสใหม่ควรเป็นไปตามคู่มือสไตล์ แต่ถ้าคุณจัดรูปแบบโค้ดที่อยู่ติดกันอย่างถูกต้อง ถ้างั้นก็ให้แก้ไข แต่เฉพาะแพทช์ที่ฟอร์แมตโค้ดเท่านั้นหรือคอมมิทว่าห้ามฟอร์แมตโค้ดเท่านั้น "

- @TomJNowell ในความคิดเห็น

ทางเลือก

คุณดีกว่าที่จะยึดติดกับมาตรฐานPSR (เช่น: 2) หรือสิ่งต่าง ๆ เช่นมาตรฐาน Symfony (หรือเฉพาะของคุณเอง)

การเพิ่มประสิทธิภาพและเครื่องมือ

ไม่มีกำไรที่คุณจะได้รับจากการมีมาตรฐานการเข้ารหัส (นอกเหนือจากการแบ่งปันและส่วนน้อยที่เกลียดมันในขณะที่คนอื่นสั่งให้มัน) หรือจากการมีแท็บหรือช่องว่างมากหรือน้อย ในกรณีที่คุณกังวลเกี่ยวกับพื้นที่ดิสก์ที่ไม่จำเป็นหรือโปรแกรมที่ช้าลงคุณยังสามารถบีบอัดโค้ดของคุณได้ (ดูโครงการ GitPHPHooks ) ประโยชน์ที่คุณจะได้รับจะอยู่ที่ประมาณ5% สูงสุดจากพื้นที่ไฟล์ดั้งเดิมซึ่งค่อนข้างจะเท่ากับการบีบอัด / การย่อขนาดของ HTML ให้กับคุณ มีเครื่องมือลดขนาด Node.jsทาง npm สำหรับสิ่งนั้น

สิ่งที่ฉันพบว่ามีประโยชน์จริงๆคือPHP Linterและ _PHP Mess Detector ฉันรวมทั้งสองอย่างไว้ในGitPHPHooks Libraryดังนั้นฉันไม่ต้องคิดหรือสนใจเกี่ยวกับการใช้มัน


คู่มือสไตล์ไม่ได้ถูกละเว้นสำหรับ Core แต่ไม่ได้ใช้ย้อนหลังเป็นกลุ่มในรหัสเก่าเนื่องจากทำให้ประวัติ svn / git ใช้งานได้ยากมาก นโยบายอย่างเป็นทางการคือรหัสใหม่ควรเป็นไปตามคู่มือสไตล์ แต่ถ้าคุณฟอร์แมตโค้ดที่อยู่ติดกันอย่างถูกต้องดังนั้นให้ทำเช่นนั้น แต่แพทช์ที่มีเพียงโค้ดรูปแบบหรือยอมรับว่าห้ามใช้รหัสรูปแบบเท่านั้น
Tom J Nowell

@TomJNowell และด้วยเหตุนี้จึงทำให้คำแนะนำรูปแบบไร้ประโยชน์ :) อย่างไรก็ตามโปรดแก้ไขและเพิ่มคำตอบนั้น มันเป็นข้อมูลที่น่าจดจำ
ไกเซอร์

ฉันคิดว่าฉันไม่ชัดเจนในคำถามของฉัน - ฉันอ้างถึงแท็บน้อยกว่าช่องว่างและอื่น ๆ กับ "การใช้พื้นที่" ที่make.wordpress.org/core/handbook/coding-standards/php/ … ฉันจะแก้ไขคำถามให้ชัดเจนขึ้น
rinogo

1
@rinogo ฉันทำให้คุณถูกต้องในครั้งแรกดังนั้นวรรคแรก Btw ฉันคิดว่ามันอ่านง่ายขึ้นเช่นกัน
ไกเซอร์

7

ช่องว่างหลังจากจุดเป็นเรื่องปกติเช่น$baz . '-5'สไตล์นี้ใช้ในมาตรฐานการเข้ารหัสจำนวนมากสำหรับโอเปอเรเตอร์ ( y + z)

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

$cow.$dog.$cat.$table.$chocolate.$puddle.$iterator.$stuctureone.$stucturetwo

$cow . $dog . $cat . $table . $chocolate . $puddle . $iterator . $stuctureone . $stucturetwo

สิ่งนี้จะชัดเจนยิ่งขึ้นเมื่อล้อมรอบด้วย "รหัส" อื่น ๆ

สำหรับช่องว่างรอบ ๆ วงเล็บ( 1, 2, 3 )ฉันไม่รู้ว่าฉันคิดว่าเหตุผลก็เพื่อความสะดวกในการอ่านเช่นกัน

มันอาจสร้างความสับสนได้เนื่องจากมาตรฐาน WordPress เองมีตัวอย่างในวงเล็บในความคิดเห็นที่ไม่มีช่องว่างและ codebase เองก็สับสนกับบางส่วนที่มีช่องว่างและส่วนอื่น ๆ ที่ไม่ใช่ (ดูภาพด้านล่าง) แม้ในฟังก์ชั่นเดียวกัน

มาตรฐาน PHP ส่วนใหญ่ทำในสิ่งที่ตรงกันข้ามกับการเรียกร้อง .. วงเล็บควรกอดเนื้อหาของพวกเขา ในความเป็นจริงมาตรฐานการเข้ารหัสส่วนใหญ่สำหรับภาษาอื่น ๆ เขียนไว้เช่น: (1, 2, 3)ดังนั้นจึงเป็นบิตของความลึกลับทำไม WP ทำอย่างนี้

นี่คือตัวอย่างที่จะเปรียบเทียบจากฟังก์ชั่น WordPress

ป้อนคำอธิบายรูปภาพที่นี่

รุ่นใหญ่กว่าเพื่อเปรียบเทียบ: http://i.imgur.com/nTEbV7v.jpg

ฉันชอบที่ด้านขวาโดยเฉพาะอย่างยิ่งเมื่อดูรหัสเต็มหน้าจอ แต่มันเป็นความชอบส่วนตัว


ขอบคุณสำหรับคำตอบ! .ระยะห่างทำให้ความรู้สึกที่ฉันเป็น.เป็นจริงเพียงผู้ประกอบการไบนารีเช่นเดียวหรือ+ -ความคิดของคุณเกี่ยวกับวงเล็บ "กอด" เนื้อหาของพวกเขาคือเหตุผลที่ฉันถามคำถามนี้ พฤติกรรมนี้รวมถึงกฎที่แปลกกว่าอย่างเช่นสำหรับวงเล็บเหลี่ยม (WP บอกว่าจะใช้$foo['bar']และ$foo[ $bar ]) เป็นเหตุผลที่ฉันถามคำถามนี้ :)
rinogo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.