มาตรฐานการเข้ารหัสส่วนใหญ่จะให้แนวทางการเขียนโปรแกรมแก่ทีมพัฒนาเพื่อให้นักพัฒนาโครงการมีรูปแบบที่สอดคล้องกันในการปฏิบัติตามเมื่อเขียนโปรแกรม ด้วยวิธีนี้โค้ดที่เขียนโดยโปรแกรมเมอร์แต่ละคนในทีมพัฒนาสามารถเข้าใจได้โดยผู้อื่น จึงช่วยปรับปรุงการบำรุงรักษาโค้ด ทำให้ชุดซอฟต์แวร์เขียนโดยคนหลายคนราวกับว่าเขียนโดยคนคนเดียว ทำให้โค้ดง่ายขึ้น ที่จะเข้าใจ สิ่งนี้ต้องการให้ทุกคนใช้รูปแบบการเขียนโค้ดที่สอดคล้องกัน เหตุผลที่การแนะนำมาตรฐานเหล่านี้เป็นเรื่องโบราณก็เพราะเมื่อนักพัฒนารายใหม่เข้าร่วมทีมพัฒนาโครงการ บางคนอาจไม่คุ้นเคยกับมาตรฐานการเข้ารหัสของ Delphi มาตรฐานเหล่านี้จะแนะนำที่นี่ในหมวดหมู่ต่อไปนี้: 1. กฎรูปแบบซอร์สโค้ดทั่วไป 2. ขั้นตอนและฟังก์ชัน 3. การตั้งชื่อไฟล์ แบบฟอร์ม และโมดูลข้อมูล 4. การตั้งชื่อแพ็คเกจและส่วนประกอบ กฎรูปแบบซอร์สโค้ดทั่วไป การเยื้องเป็นแต่ละระดับ มีอยู่ด้วยกันสองระดับ ช่องว่างระหว่างพวกเขา อย่าวางอักขระแท็บในซอร์สโค้ด เนื่องจากความกว้างของอักขระแท็บจะแตกต่างกันไปตามการตั้งค่าและยูทิลิตี้การจัดการโค้ดที่แตกต่างกัน (การพิมพ์ เอกสารประกอบ การควบคุมเวอร์ชัน ฯลฯ) Margins Margins ถูกกำหนดไว้ที่ 80 ตัวอักษร โดยทั่วไปซอร์สโค้ดจะไม่เกินระยะขอบโดยการเขียนคำ แต่กฎนี้มีความยืดหยุ่นมากกว่า เมื่อใดก็ตามที่เป็นไปได้ ข้อความที่ยาวกว่าหนึ่งบรรทัดควรห่อด้วยเครื่องหมายจุลภาคหรือโอเปอเรเตอร์ หลังจากขึ้นบรรทัดใหม่แล้ว ควรเยื้องด้วยอักขระสองตัว วงเล็บไม่มีช่องว่างระหว่างวงเล็บเปิดและอักขระถัดไป ในทำนองเดียวกัน ไม่มีช่องว่างระหว่างวงเล็บปิดและอักขระก่อนหน้า ตัวอย่างต่อไปนี้แสดงให้เห็นถึงช่องว่างที่ถูกต้องและไม่ถูกต้อง CallPROcedure(Parameters); // Wrong! CallProcedure (Parameters); // แก้ไขคำและคีย์เวิร์ดที่สงวนไว้ Object คำสงวนและคีย์เวิร์ดของภาษา Pascal เป็นตัวพิมพ์เล็กเสมอ คำสั่ง start...endbegin จะต้องอยู่ในบรรทัดของตัวเอง ตัวอย่างเช่น บรรทัดแรกด้านล่างผิด แต่บรรทัดที่สองถูกต้อง: for i:=0 to 10 do beginningStatement end// Wrong, beginning อยู่ในบรรทัดเดียวกันกับสำหรับ for i:=0 to 10 do //Correct ! start ในกรณีพิเศษของกฎนี้ใน beginningStatementend ในอีกบรรทัดคือเมื่อ start เป็นส่วนหนึ่งของคำสั่ง else ตัวอย่างเช่น: ถ้า Condition thenbeginStatement endelse beginningStatement; คำสั่ง endend จะอยู่ในบรรทัดที่แยกจากกันเสมอ เมื่อ start ไม่ได้เป็นส่วนหนึ่งของคำสั่ง else คำสั่ง end ที่เกี่ยวข้องจะถูกเยื้องด้วยจำนวนเดียวกันกับคำสั่ง beginning ข้อความที่ (1) สถานการณ์ที่เป็นไปได้มากที่สุดของคำสั่ง if_then_else ควรอยู่ในประโยค then และสถานการณ์ที่ไม่น่าจะเป็นไปได้ควรอยู่ในประโยค else หากต้องการหลีกเลี่ยงคำสั่ง if จำนวนมาก ให้ใช้คำสั่ง case แทน หากมีมากกว่า 5 ระดับ ห้ามใช้คำสั่ง if โปรดใช้วิธีที่ชัดเจนกว่านี้แทน อย่าใช้วงเล็บเพิ่มเติมในคำสั่ง if ในซอร์สโค้ด วงเล็บจะใช้เมื่อจำเป็นจริงๆ เท่านั้น ตัวอย่างเช่น: ถ้า (I=42) แล้ว // ผิด วงเล็บจะซ้ำซ้อน ถ้า (I=42) หรือ (J=42) แล้ว // ถูกต้อง ต้องใช้วงเล็บ หากมีเงื่อนไขหลายข้อให้ทดสอบในคำสั่ง if คุณควรจัดเรียงจากขวาไปซ้ายตามลำดับความซับซ้อนในการคำนวณ ซึ่งช่วยให้โค้ดสามารถใช้ประโยชน์จากตรรกะการประมาณค่าการลัดวงจรของคอมไพลเลอร์ได้อย่างเต็มที่ ถ้า Condition1 เร็วกว่า Condition2 และ Condition2 เร็วกว่า Condition3 คำสั่ง if ควรถูกสร้างขึ้นดังนี้: ถ้า Condition1 และ Condition2 และ Condition3 แล้วก็ (2) คำสั่ง case_else ค่าคงที่สำหรับแต่ละกรณีในคำสั่ง case ควรจัดเรียงเป็นตัวเลขหรือตัวอักษร คำสั่ง. คำสั่งการดำเนินการสำหรับแต่ละสถานการณ์ควรสั้นและโดยปกติจะมีโค้ดไม่เกิน 4 ถึง 5 บรรทัด หากการดำเนินการซับซ้อนเกินไป ควรวางโค้ดไว้ในขั้นตอนหรือฟังก์ชันที่แยกจากกัน ส่วนคำสั่งอื่นของคำสั่ง case ใช้สำหรับกรณีเริ่มต้นหรือการตรวจหาข้อผิดพลาดเท่านั้น (3) คำสั่ง while ไม่แนะนำให้ใช้กระบวนการออกเพื่อออกจากลูป while หากจำเป็น ควรใช้เงื่อนไขลูปเพื่อออกจากลูป รหัสทั้งหมดที่เริ่มต้นการวนซ้ำ while ควรอยู่ก่อนรายการ while และไม่ควรแยกจากกันด้วยคำสั่งที่ไม่เกี่ยวข้อง งานเสริมใดๆ ของธุรกิจควรดำเนินการทันทีหลังจากรอบการทำงาน (4) สำหรับคำสั่ง หากกำหนดจำนวนลูป ควรใช้คำสั่ง for แทนคำสั่ง while (5) คำสั่งทำซ้ำ คำสั่งทำซ้ำจะคล้ายกับ while loop และเป็นไปตามกฎเดียวกัน (6) พร้อมข้อความ ควรใช้ข้อความ with ด้วยความระมัดระวัง หลีกเลี่ยงการใช้คำสั่ง with มากเกินไป โดยเฉพาะอย่างยิ่งเมื่อใช้หลายอ็อบเจ็กต์หรือบันทึกภายในคำสั่ง with ตัวอย่างเช่น: ด้วย Record1, Record2 จะทำให้สถานการณ์เหล่านี้สามารถสร้างความสับสนให้กับโปรแกรมเมอร์ได้อย่างง่ายดายและทำให้การดีบักทำได้ยาก การจัดการข้อยกเว้นที่มีโครงสร้าง การจัดการข้อยกเว้นส่วนใหญ่จะใช้เพื่อแก้ไขข้อผิดพลาดและปกป้องทรัพยากร ซึ่งหมายความว่าทุกที่ที่มีการจัดสรรทรัพยากร พยายาม...ท้ายที่สุดจะต้องใช้เพื่อให้แน่ใจว่าทรัพยากรนั้นถูกปล่อยออกมา อย่างไรก็ตาม มีข้อยกเว้นเกิดขึ้นหากทรัพยากรถูกจัดสรร/เผยแพร่ในส่วนเริ่มต้น/สุดท้ายของหน่วย หรือในตัวสร้าง/ตัวทำลายของวัตถุ (1) การใช้ try...finally เมื่อใดก็ตามที่เป็นไปได้ การจัดสรรทรัพยากรแต่ละครั้งควรตรงกับโครงสร้าง try...finally ตัวอย่างเช่น: //โค้ดต่อไปนี้อาจทำให้เกิดข้อผิดพลาด SomeClass1: = TSomeClass.Create;SomeClass2: = TSomeClass.Create;try{do some code}finallySomeClass.Free;SomeClass.Free;end;//วิธีแก้ปัญหาที่ปลอดภัยสำหรับทรัพยากรข้างต้น การจัดสรรคือ: SomeClass1: = TSomeClass Create;trySomeClass2: = TSomeClass Create;ลอง{ทำโค้ดบางส่วน}finallySomeClass2.Free;end;finallySomeClass1.Free;end;(2) การใช้ try...ยกเว้น หากคุณต้องการทำงานบางอย่างเมื่อมีข้อยกเว้นเกิดขึ้น คุณสามารถใช้ try...ยกเว้น โดยปกติแล้ว ไม่จำเป็นต้องใช้ try...ยกเว้นเพียงแสดงข้อความแสดงข้อผิดพลาด เนื่องจากออบเจ็กต์ของแอปพลิเคชันสามารถทำสิ่งนี้ได้โดยอัตโนมัติตามบริบท หากคุณต้องการเปิดใช้งานการจัดการข้อยกเว้นเริ่มต้นในส่วนคำสั่ง คุณสามารถทริกเกอร์ข้อยกเว้นได้อีกครั้ง (3) การใช้ try...ยกเว้น...else ไม่สนับสนุนให้ใช้ try...ยกเว้นส่วนคำสั่ง else เนื่องจากการดำเนินการนี้จะบล็อกข้อยกเว้นทั้งหมด รวมถึงข้อยกเว้นที่คุณไม่ได้เตรียมที่จะจัดการด้วย