หลักการตั้งชื่อที่โดดเด่นสำหรับตัวแปรใน PHP คือ camelcase หรือขีดล่าง? [ปิด]


51

ฉันทามติดูเหมือนว่าควรจะทำตามแบบแผนของแพลตฟอร์มที่พวกเขากำลังพัฒนา ดู:

ขีดเส้นใต้หรืออูฐ?

ข้อกำหนดการตั้งชื่อ: camelCase กับ underscore_case หรือไม่

อย่างไรก็ตาม, PHP ดูเหมือนจะไม่ปฏิบัติตามอย่างเคร่งครัดการประชุมใด ๆ ภายใน (ความผิดไม่มี) แม้สำหรับวิธีการและฟังก์ชั่น (เช่นmysqli::set_local_infile_default, PDOStatement::debugDumpParams); อย่างไรก็ตามเครื่องหมายขีดล่างดูเหมือนจะโดดเด่นในชื่อฟังก์ชัน

อย่างไรก็ตามสิ่งที่ฉันไม่สามารถหาได้คือสิ่งนี้: อะไรคือหลักการตั้งชื่อที่เด่นชัดสำหรับตัวแปรใน PHP?


เลือกอย่างใดอย่างหนึ่งและติดกับมัน ไม่สำคัญว่าคุณจะเลือกใครตราบใดที่คุณยังยึดติดอยู่กับมัน เช่นเดียวกับแท็บช่องว่าง
yannis

2
ฉันเห็นด้วยอย่างยิ่งกับความคิดเห็นที่แพร่หลายในการอภิปรายที่เชื่อมโยง: หนึ่งควรปฏิบัติตามอนุสัญญา นั่นเป็นเหตุผลที่ฉันได้ จำกัด ขอบเขตของคำถามไว้ที่ PHP แต่ผมเริ่มสงสัยว่ามีคือการประชุมตั้งชื่อที่โดดเด่นใน PHP
sbichenko

5
ยังไม่มีการตั้งชื่อการประชุมเป็นอีกหนึ่งความไม่สอดคล้องกันเล็กน้อยเหล่านั้นที่ทำให้ PHP ยอดเยี่ยมในการทำงานกับ PSR เป็นความพยายามอย่างหนึ่งที่ฉันคิดว่าควรค่าแก่การติดตาม แต่ ... มันขึ้นอยู่กับคุณอย่างสมบูรณ์ คำถามที่เกี่ยวข้อง: มีคำแนะนำสไตล์มาตรฐานสำหรับ PHP หรือไม่ และทำไมเงินทุน 3 การเปลี่ยนแปลง CamelCase จะพุ่ง - มันสามารถอ่านได้มากขึ้น? .
yannis

คำถามนี้อาจช่วยคุณได้: programmers.stackexchange.com/questions/149303/…
โปรแกรมเมอร์

ลิงค์ที่ 1 เสียชีวิต แต่นี่คือไฟล์เก็บถาวร: web.archive.org/web/20130417105957/http://stackoverflow.com/…
Dmitri Zaitsev

คำตอบ:


50

ไม่มีแบบแผนการตั้งชื่อที่ชัดเจนใน PHP และแตกต่างกันตามกรอบ

ดังนั้น: ใช้สิ่งที่กรอบงานของคุณใช้หรือสร้างแผนการตั้งชื่อของคุณเอง

อย่างน้อยสำหรับชื่อฟังก์ชั่นและวิธีการเรียนมีสิ่งหนึ่งที่ต้องพิจารณา แต่กรอบบางอย่างทิ้งมัน: PHP เป็นกรณีตายในกรณีนั้นดังนั้นทั้งสองaTonalFunction()และatonalFunction()มีการเรียกใช้ฟังก์ชั่นเดียวกัน


1
ไม่มีอะไรที่จะโต้แย้งการตั้งชื่อ methond ของคุณ แต่นั่นไม่ใช่การประชุม กรอบและไลบรารีที่ทันสมัยทั้งหมดเช่นZend Framework 2 , Doctrine 2และSymfony 2ใช้ camelCase สำหรับชื่อเมธอด
Rudolph Gottesheim

@RudolphGottesheim จุดที่ดี ฉันได้แก้ไขคำตอบแล้ว
Residuum

1
น่าสนใจ ฉันมาที่นี่เพราะฉันพบว่ารูปแบบการเข้ารหัสของ wordpress นั้นไม่สำคัญ ตอนนี้ฉันเห็นอย่างน้อยพวกเขาก็ตั้งใจจะทำตัวไร้เหตุผล
เคอร์บี

14

การเขียนโค้ดด้วย PHP มานานกว่าสิบปีฉันสามารถเห็นการเปลี่ยนแปลงจากขีดล่างเป็น camelCase โดยเฉพาะอย่างยิ่งเฟรมเวิร์กที่ใหญ่กว่าอย่าง Zend และ Symfony ที่สร้างขึ้นบน camelCase เช่นกันเมื่อพวกเขาไม่ห้ามขีดล่าง แต่ฟังก์ชั่นหลักทั้งหมดคือ camelCase

คุณสามารถเห็นการแก้ปัญหาขีดล่างจำนวนมากในระบบเก่าเช่นสาขา Typo3 เก่า (Typo3 Neo เปลี่ยนเป็น camelCase ด้วย)

แต่ไม่มีกฎที่เข้มงวดซึ่งทุกคนใช้นั่นคือสิ่งที่ฉันเห็นในช่วงไม่กี่ปีที่ผ่านมา


1

ขึ้นอยู่กับโปรแกรมเมอร์ / นักพัฒนารวมถึงเฟรมเวิร์กหรือโอเพ่นซอร์สที่ใช้งานอยู่ ตัวอย่างเช่นในกรอบ Yii จะแนะนำให้ใช้กรณีอูฐในขณะที่กรอบ Codeigniter คนส่วนใหญ่ตามชื่อตัวแปรที่มีขีดล่าง สิ่งหนึ่งที่แน่นอนคือไม่ว่าคุณจะใช้กรอบงานใดชื่อตัวแปรจะต้องสามารถเข้าใจและระบุตัวได้


0

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

สถานการณ์ที่หนึ่ง:

คุณได้เข้าร่วมทีมการเขียนโปรแกรมและได้เข้าร่วมโครงการต่อเนื่องคุณสังเกตเห็นว่ามีการตั้งค่าตัวแปรตัวอย่าง:

$theString = "This is a camelcase example";

แต่คุณมีสไตล์ที่ต้องการ:

$the_string = "This is not a camelcase example"; 

ในสถานการณ์เช่นนี้มันจะเป็นการดีที่สุดที่จะให้อูฐ

สถานการณ์ที่สอง:

คุณต้องการเริ่มโครงการเดี่ยว

ในกรณีเช่นนี้ ... มันแค่ลงไปในสิ่งที่คุณรู้สึกสบายใจจำการปฏิบัติที่ไม่ดีในแง่ของ:

$theString = "This is a sample String"; 
$the_string = "This is another sample string within the same project"; 

สิ่งนี้สามารถทำให้เกิดผลลัพธ์ที่ไม่คาดคิด .. เพียงจำไว้ในใจว่า


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