ไทย

เครื่องมือข้อความและชีวิตประจำวัน · ชุดเครื่องมือข้อความ

CamelCase, Snake_case, kebab-case และ PascalCase: โดยที่แต่ละรายการถูกใช้

· พื้นหลัง

การแปลงกรณี ตัวระบุ นักพัฒนาเวิร์กโฟลว์

ตัวระบุโปรไฟล์หนึ่งตัวเขียนด้วยอูฐ ปาสคาล งู และเคบับ
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

ทัวร์ชมแบบแผนการตั้งชื่อ — ที่มาของภาษาและระบบนิเวศคาดหวังอะไร และเหตุใดชื่อไฟล์, URL, คอลัมน์ฐานข้อมูล และคีย์ JSON แต่ละตัวจึงดึงไปในทิศทางที่แตกต่างกัน

ห้าชื่อสำหรับสิ่งเดียว — userProfileId, user_profile_id, user-profile-id, UserProfileId และ USER_PROFILE_ID

วลี "รหัสโปรไฟล์ผู้ใช้" สามารถกลายเป็น `userProfileId`, `UserProfileId`, `user_profile_id` หรือ `user-profile-id` ได้โดยไม่ต้องเปลี่ยนคำ ความแตกต่างที่มองเห็นได้คือขอบเขตที่ปรากฏและคำแรกขึ้นต้นด้วยตัวพิมพ์ใหญ่หรือไม่ ToolAcre สร้างแบบฟอร์มทั้งสี่ดังกล่าวโดยตรงจากอินพุตเดียวกัน ทำให้เปรียบเทียบความแตกต่างของโครงสร้างได้ง่าย

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

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

`camelCase` ขึ้นต้นด้วยคำตัวพิมพ์เล็กและใช้อักษรตัวพิมพ์ใหญ่ที่จุดเริ่มต้นของทุกคำที่ตามมา `PascalCase` ใช้รูปแบบคำที่เชื่อมเหมือนกันแต่ใช้ตัวพิมพ์ใหญ่กับคำแรกด้วย ใน ToolAcre การแปลงทั้งสองเริ่มต้นด้วยตัวแยกคำเดียวกัน ดังนั้นเครื่องหมายวรรคตอนและขอบเขตตัวพิมพ์ที่มีอยู่จะถูกตีความก่อนที่จะประกอบเอาต์พุต

หลายทีมกำหนดทั้งสองแบบฟอร์มให้กับชื่อประเภทต่างๆ แต่พื้นที่เก็บข้อมูลไม่ได้สร้างกฎภาษาสากลหรือประวัติสำหรับการแยกนั้น ถือว่าไกด์สไตล์ท้องถิ่น linter เฟรมเวิร์ก API หรือโค้ดใกล้เคียงเป็นผู้มีอำนาจ ตัวแปลงเปลี่ยนรูปร่างการสะกด ไม่ได้กำหนดว่าชื่อแสดงถึงคลาส ฟังก์ชัน ตัวแปร หรือส่วนประกอบ

CamelCase และ PascalCase ต่างกันตามตัวอักษรตัวแรก ประวัติภาษาของพวกเขาเป็นหลักฐานนอกพื้นที่เก็บข้อมูล

`snake_case` ลดทุกคำที่ตรวจพบและรวมผลลัพธ์ด้วยขีดล่าง สำหรับ `User Profile ID` ToolAcre จะส่งกลับ `user_profile_id` ตัวคั่นยังคงมองเห็นได้ ซึ่งสามารถช่วยได้เมื่อชื่อผ่านระบบที่ไม่รักษาการใช้อักษรตัวพิมพ์ใหญ่อย่างน่าเชื่อถือ แต่ประโยชน์เชิงปฏิบัตินั้นไม่ได้พิสูจน์ว่าทุกฐานข้อมูล ภาษา หรือบริการคาดหวังขีดล่าง

ใช้แบบแผนที่กำหนดไว้แล้วที่ปลายทาง บริการ Python อาจมีนโยบายหนึ่งนโยบาย SQL สคีมาอีกนโยบายหนึ่ง และเพย์โหลดแบบอนุกรมหนึ่งในสาม ToolAcre ไม่สามารถตรวจสอบสัญญาเหล่านั้นได้ คำสัญญาที่เชื่อถือได้นั้นแคบกว่า: `toSnakeCase` ตรวจจับคำ ใช้ตัวพิมพ์เล็กในแต่ละคำ และแทรก `_` ระหว่างคำเหล่านั้นโดยไม่ต้องตัดสินใจว่าปลายทางอนุญาตหรือต้องการผลลัพธ์นั้น

รองรับเอาต์พุต Snake_case โดยตรง ระบบนิเวศและความคาดหวัง SQL ขึ้นอยู่กับแต่ละโครงการ

`kebab-case` ใช้คำตัวพิมพ์เล็กเหมือนกันแต่เชื่อมด้วยเครื่องหมายขีดกลาง ทำให้ได้ `user-profile-id` รูปร่างดังกล่าวจะมองเห็นได้ชัดเจนในตำแหน่งที่เครื่องหมายยัติภังค์ได้รับการยอมรับเป็นข้อมูล เช่น ส่วนเส้นทางที่กำหนดค่าไว้หรือชื่อไฟล์ที่โครงการกำหนด ไม่ใช่ตัวระบุ JavaScript เนื่องจาก parser สามารถอ่านยัติภังค์ในฐานะตัวดำเนินการ แทนที่จะเป็นส่วนหนึ่งของชื่อเดียว

โครงร่างแสดงรายการคลาส CSS, แอตทริบิวต์ HTML, แฟล็กบรรทัดคำสั่ง และทาก URL แต่ไลบรารีข้อความไม่ได้กำหนดกฎของผู้บริโภคเหล่านั้น ยืนยันไวยากรณ์เป้าหมายก่อนที่จะแปลง ToolAcre ยังมีฟังก์ชัน `slugify` แยกต่างหากพร้อมการเน้นเสียง การเลือกตัวคั่น การตัด และการจัดการความยาวที่เป็นตัวเลือก ดังนั้นการแปลงเคบับธรรมดาจึงไม่ควรนำเสนอเป็นการตรวจสอบความถูกต้องของ URL-slug แบบเต็ม

รองรับเอาต์พุตเคบับเคสโดยตรง การใช้ที่ถูกต้องขึ้นอยู่กับไวยากรณ์โดยรอบ

ขอบเขตคือจุดที่แบบแผนการตั้งชื่อกลายเป็นแนวทางปฏิบัติแทนที่จะเป็นเพียงความสวยงาม ออบเจ็กต์เบราว์เซอร์สามารถใช้การสะกดคำหนึ่งได้ในขณะที่คอลัมน์ API หรือคอลัมน์ฐานข้อมูลใช้อีกอันหนึ่ง ทำให้การแม็ปนั้นชัดเจนในอะแดปเตอร์ตัวเดียว แทนที่จะกระจายการแปลงไปตามมุมมอง การสืบค้น และตรรกะทางธุรกิจ Edge ที่คาดการณ์ได้ช่วยให้โมเดลภายในแต่ละโมเดลมีความสอดคล้องกัน และทำให้ค้นหาตำแหน่งที่ไม่ตรงกันได้ง่ายขึ้น

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

ตัวอย่างการทำงาน — การแปลงตัวระบุหนึ่งตัวผ่านแบบแผนทั้งหมดและตัดสินใจว่าตัวใดอยู่ในตำแหน่งใดในโครงการขนาดเล็ก

ลองใช้แอปพลิเคชันขนาดเล็กที่มีวลี `user profile ID` ToolAcre ผลิต `userProfileId` สำหรับเคสอูฐ `UserProfileId` สำหรับเคส Pascal `user_profile_id` สำหรับเคสงู และ `user-profile-id` สำหรับเคสเคบับ แต่ละเอาต์พุตจะมีคำที่ตรวจพบสามคำเหมือนกัน ในขณะที่การใช้อักษรตัวพิมพ์ใหญ่และตัวคั่นที่แทรกจะเข้ารหัสรูปร่างที่เลือก

โปรเจ็กต์เชิงปฏิบัติอาจเก็บ `userProfileId` ไว้ในออบเจ็กต์ JavaScript แมปอย่างชัดเจนกับ `user_profile_id` ที่ขอบเขตการคงอยู่ และสงวน `user-profile-id` สำหรับตำแหน่งที่ไวยากรณ์ยอมรับเครื่องหมายขีดกลาง ตัวเลือกที่แน่นอนเป็นของโครงการนั้น ส่วนสำคัญคือการจัดทำเอกสารแต่ละขอบเขตและทดสอบการทำแผนที่ แทนที่จะคาดเดาจากรูปลักษณ์ภายนอกซ้ำๆ

สิ่งนี้ไม่ครอบคลุมถึง - สัญกรณ์ภาษาฮังการีและการถกเถียงเกี่ยวกับตัวย่อในตัวระบุ

การเปรียบเทียบนี้ไม่ได้ชำระการสะกดคำย่อ การใช้งานจะเปลี่ยนคำที่ตรวจพบให้เป็นตัวพิมพ์เล็กก่อนที่จะสร้างใหม่ ดังนั้นอินพุตที่มี `HTTP` อาจปรากฏเป็น `Http` ภายในเอาต์พุต Pascal หรือ Camel ไม่ว่าทีมจะชอบ `Http`, `HTTP`, `Id` หรือ `ID` ก็ตาม ถือเป็นนโยบายการตั้งชื่อที่ต้องการข้อยกเว้นที่ชัดเจนนอกเหนือจากการเปลี่ยนแปลงทั่วไปเหล่านี้

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

นโยบายตัวย่อและประวัติสัญกรณ์อยู่นอกหลักฐานการแปลง

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

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