ขั้นตอนและฟังก์ชัน 1. การตั้งชื่อและรูปแบบ (1) ชื่อขั้นตอนควรขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่ และอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กควรสลับกันเพื่อให้ง่ายต่อการอ่าน ต่อไปนี้เป็นวิธีการเขียนที่ไม่ถูกต้อง: PROcedure thisisapoorlyformattedroutinename; เปลี่ยนเป็น: ขั้นตอน ThisIsMuchMoreReadableRoutineName; (2) ชื่อกระบวนการควรมีความหมาย รูทีนที่ดำเนินการจะดีที่สุดนำหน้าชื่อด้วยคำกริยาที่แสดงถึงการกระทำ ตัวอย่างเช่น: ขั้นตอน FormatHardDrive ชื่อรูทีนที่ตั้งค่าพารามิเตอร์อินพุตควรนำหน้าด้วย Set เช่น: ขั้นตอน SetUserName; ชื่อรูทีนที่ได้รับค่าควรนำหน้าด้วย Get เช่น: ฟังก์ชัน GetUserName: string; พารามิเตอร์ที่เป็นทางการ ( 1) รูปแบบ: หากเป็นไปได้ ควรรวมพารามิเตอร์ที่เป็นทางการประเภทเดียวกันไว้ด้วยกัน ตัวอย่างเช่น: ขั้นตอน ProcedureName (Param1, Param2, Param3: Integer; Param4: string); (2) การตั้งชื่อ: ชื่อของพารามิเตอร์ที่เป็นทางการทั้งหมดควรแสดงถึงวัตถุประสงค์ หากเหมาะสม ชื่อพารามิเตอร์ที่เป็นทางการควรขึ้นต้นด้วยตัวอักษร A ตัวอย่างเช่น: ขั้นตอน ProcedureName (AUserName: string; AUserAge: integer) เมื่อชื่อพารามิเตอร์มีชื่อเดียวกันกับแอตทริบิวต์คลาสหรือฟิลด์ จำเป็นต้องมีคำนำหน้า A (3) ลำดับพารามิเตอร์: ลำดับของพารามิเตอร์ที่เป็นทางการส่วนใหญ่ขึ้นอยู่กับกฎการเรียกรีจิสเตอร์ พารามิเตอร์ที่ใช้บ่อยที่สุดควรเป็นพารามิเตอร์ตัวแรก เรียงจากซ้ายไปขวาตามลำดับความถี่ในการใช้งาน พารามิเตอร์อินพุตอยู่ข้างหน้าพารามิเตอร์เอาต์พุต ควรวางพารามิเตอร์ที่มีช่วงกว้างก่อนพารามิเตอร์ที่มีช่วงน้อย ตัวอย่างเช่น: ขั้นตอน ProcedureName (APlanet, AContinent, ACountry, AState, ACity) บางส่วนเป็นข้อยกเว้น ตัวอย่างเช่น: ในระหว่างการประมวลผลเหตุการณ์ พารามิเตอร์ผู้ส่งประเภท TObject มักจะเป็นพารามิเตอร์แรกที่จะส่งผ่าน (4) พารามิเตอร์คงที่: เพื่อป้องกันไม่ให้พารามิเตอร์ของเรคคอร์ด อาร์เรย์ สตริงแบบสั้น หรือประเภทอินเทอร์เฟซถูกแก้ไขโดยรูทีน พารามิเตอร์ที่เป็นทางการควรทำเครื่องหมายเป็น Const ด้วยวิธีนี้ คอมไพลเลอร์จะสร้างโค้ดด้วยวิธีที่มีประสิทธิภาพสูงสุด เพื่อให้แน่ใจว่าพารามิเตอร์ที่ส่งผ่านจะไม่เปลี่ยนรูป หากรูทีนไม่คาดว่าจะแก้ไขพารามิเตอร์ประเภทอื่น คุณสามารถทำเครื่องหมายด้วย C onst ได้เช่นกัน แม้ว่าสิ่งนี้จะไม่ส่งผลกระทบต่อประสิทธิภาพ แต่ก็ทำให้ผู้เรียกกิจวัตรได้รับข้อมูลเพิ่มเติมมากขึ้น (5) ข้อขัดแย้งในการตั้งชื่อ: เมื่อสองยูนิตมีรูทีนที่มีชื่อเดียวกัน หากมีการเรียกรูทีน รูทีนในยูนิตที่ปรากฏในภายหลังในส่วนคำสั่ง Uses จะถูกเรียกจริง ๆ เพื่อหลีกเลี่ยงสถานการณ์นี้ คุณสามารถเพิ่มชื่อหน่วยที่ต้องการก่อนชื่อวิธีการได้ ตัวอย่างเช่น: SysUtils.FindClose (SR);Windows.FindClose(Handle);3. ตัวแปร (1) การตั้งชื่อและรูปแบบของตัวแปร ชื่อของตัวแปรควรจะสามารถแสดงวัตถุประสงค์ของมันได้ ตัวแปรควบคุมลูปมักเป็นตัวอักษรเดี่ยว เช่น I, J หรือ K คุณยังสามารถใช้ชื่อที่มีความหมายมากขึ้นได้ เช่น UserIndex ชื่อตัวแปรบูลีนต้องระบุความหมายของค่าจริงและเท็จอย่างชัดเจน (2) ตัวแปรท้องถิ่น: ตัวแปรท้องถิ่นถูกใช้ภายในรูทีนและปฏิบัติตามกฎการตั้งชื่อของตัวแปรอื่นๆ หากจำเป็น ควรเริ่มต้นตัวแปรทันทีที่รายการรูทีน ตัวแปรประเภท AnsiString ภายในเครื่องจะเตรียมใช้งานเป็นสตริงว่างโดยอัตโนมัติ ตัวแปรประเภท Local Interface และ Dispinterface จะถูกเตรียมใช้งานเป็น nil โดยอัตโนมัติ (3) ตัวแปรส่วนกลาง: โดยทั่วไปแล้วเราไม่แนะนำให้ใช้ตัวแปรส่วนกลาง อย่างไรก็ตามบางครั้งก็จำเป็น ถึงกระนั้นก็ตาม ตัวแปรโกลบอลควรถูกจำกัดให้อยู่ในสภาพแวดล้อมที่จำเป็นเท่านั้น ตัวแปรโกลบอลอาจเป็นโกลบอลเฉพาะในส่วนของการใช้งานของหน่วยเท่านั้น หากข้อมูลโกลบอลจะถูกใช้โดยหลาย ๆ ยูนิต ควรถูกย้ายไปยังหน่วยทั่วไปและใช้โดยอ็อบเจ็กต์ทั้งหมดสามารถเตรียมใช้งานข้อมูลโกลบอลได้โดยตรงเมื่อประกาศ . (โปรดทราบว่าตัวแปรส่วนกลางทั้งหมดจะมีการกำหนดค่าเริ่มต้นเป็นศูนย์โดยอัตโนมัติ ดังนั้นอย่ากำหนดค่าเริ่มต้นให้กับตัวแปรส่วนกลางเป็นค่าว่าง เช่น 0, ไม่มี หรือ Unassigned ตัวแปรส่วนกลางที่กำหนดค่าเริ่มต้นเป็นศูนย์จะไม่กินพื้นที่ในไฟล์ .EXE กำหนดค่าเริ่มต้นเป็นศูนย์ ข้อมูลจะถูกบันทึกไว้ในส่วนข้อมูลเสมือน ส่วนข้อมูลเสมือนจะจัดสรรหน่วยความจำเมื่อแอปพลิเคชันเริ่มทำงานเท่านั้น ข้อมูลส่วนกลางที่เริ่มต้นไม่เป็นศูนย์จะใช้พื้นที่ในไฟล์ .EXE) กฎประเภท (1) กรณี: ตัวระบุประเภทเป็นคำสงวนและควรเป็นตัวพิมพ์เล็กทั้งหมด ประเภท Win32 API มักจะเป็นตัวพิมพ์ใหญ่ทั้งหมดและเป็นไปตามกฎสำหรับชื่อประเภทเฉพาะ เช่น Windows.pas หรือหน่วย API อื่นๆ สำหรับชื่อตัวแปรอื่นๆ ตัวอักษรตัวแรกควรเป็นตัวพิมพ์ใหญ่ และตัวอักษรอื่นๆ ควรเป็นตัวพิมพ์สลับกัน ตัวอย่างเช่น: varMyString: string; // คำสงวน WindowsHandle: HWND; // Win32 API ประเภท I: Integer; // Type identifier นำมาใช้ในหน่วยระบบ (2) ประเภทจุดลอยตัว: การใช้ประเภท Real ไม่สนับสนุนเนื่องจากเป็นเพียง สงวนไว้สำหรับการเข้ากันได้กับรหัส Pascal ที่เก่ากว่า โดยปกติแล้ว Double ควรใช้สำหรับตัวเลขทศนิยม Double สามารถปรับให้เหมาะสมโดยโปรเซสเซอร์และเป็นรูปแบบข้อมูลมาตรฐานที่กำหนดโดย IEEE สามารถใช้ส่วนขยายได้เมื่อต้องใช้ช่วงที่ใหญ่กว่า Double Provide Extended เป็นประเภทเฉพาะของ Intel และไม่รองรับโดย Java เมื่อจำนวนไบต์จริงของตัวแปรจุดลอยตัวเป็นสิ่งสำคัญ (อาจใช้ภาษาอื่นในการเขียน DLL) ควรใช้ค่าเดี่ยว (3) ประเภทการแจงนับ: ชื่อประเภทการแจงนับต้องแสดงถึงวัตถุประสงค์ของการแจงนับ อักขระ T ต้องนำหน้าชื่อเพื่อระบุว่าเป็นประเภทข้อมูล คำนำหน้าของรายการตัวระบุประเภทการแจงนับควรมีอักขระตัวพิมพ์เล็ก 2 ถึง 3 ตัวเพื่อเชื่อมโยงถึงกัน ตัวอย่างเช่น: TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB); ชื่อของอินสแตนซ์ตัวแปรของประเภทการแจงนับจะเหมือนกับประเภท แต่ไม่มีคำนำหน้า T คุณยังสามารถให้ตัวแปรเพิ่มเติมได้ ชื่อพิเศษ เช่น FavoriteSongTpe1, FavoriteSongTpe2 ฯลฯ รอสักครู่ (4)Variant และ OleVariant: โดยทั่วไปไม่แนะนำให้ใช้ Variant และ OleVariant อย่างไรก็ตาม ทั้งสองประเภทนี้จำเป็นสำหรับการเขียนโปรแกรมเมื่อทราบชนิดข้อมูลเฉพาะตอนรันไทม์เท่านั้น (มักอยู่ใน COM และแอปพลิเคชันฐานข้อมูล) เมื่อทำการเขียนโปรแกรม COM เช่น การควบคุม ActiveX อัตโนมัติ คุณควรใช้ OleVariant สำหรับการเขียนโปรแกรมที่ไม่ใช่ COM คุณควรใช้ Variant เนื่องจาก Variant สามารถบันทึกสตริงดั้งเดิมของ Delphi ได้อย่างมีประสิทธิภาพ ในขณะที่ OleVariant แปลงสตริงทั้งหมดเป็นสตริง OLE (เช่น สตริง Wide Char) โดยไม่ต้องนับการอ้างอิง 5. ประเภทที่สร้างขึ้น (1) ประเภทอาร์เรย์: ชื่อประเภทอาร์เรย์ควรแสดงถึงวัตถุประสงค์ของอาร์เรย์ ชื่อประเภทจะต้องนำหน้าด้วยตัวอักษร T หากคุณต้องการประกาศตัวชี้ให้กับประเภทอาร์เรย์ คุณต้องเพิ่มตัวอักษร P นำหน้าและประกาศก่อนการประกาศประเภท ตัวอย่างเช่น: typePCycleArray = ^TCycleArray; TCycleArray=array [1..100] ของจำนวนเต็ม ที่จริงแล้ว อินสแตนซ์ตัวแปรของประเภทอาร์เรย์มีชื่อเดียวกันกับประเภท แต่ไม่มีคำนำหน้า T (2) ประเภทบันทึก: ชื่อประเภทบันทึกควรแสดงถึงวัตถุประสงค์ของบันทึก ชื่อประเภทจะต้องนำหน้าด้วยตัวอักษร T หากคุณต้องการประกาศตัวชี้ไปยังประเภทบันทึก คุณต้องขึ้นต้นด้วยตัวอักษร P และประกาศก่อนการประกาศประเภท ตัวอย่างเช่น: typePStudent = ^ TStudent;TStudent = recordStudentName: string;StudentAge: Double;6 คลาส (1) การตั้งชื่อและรูปแบบ ชื่อของคลาสควรแสดงถึงวัตถุประสงค์ของคลาส เพิ่มตัวอักษร T หน้าชื่อคลาสเพื่อระบุว่าเป็นประเภท ตัวอย่างเช่น: typeTStudent= class (TObject); ชื่ออินสแตนซ์ของคลาสเหมือนกับชื่อคลาส แต่ไม่มีคำนำหน้า T varStudent: TStudent; โปรดทราบว่าเกี่ยวกับการตั้งชื่อส่วนประกอบ โปรดดูส่วนที่ 6.6 "ส่วนประกอบ" (2) การตั้งชื่อและรูปแบบฟิลด์: การตั้งชื่อฟิลด์เป็นไปตามกฎเดียวกันกับตัวแปร ยกเว้นว่าจะมีการเพิ่มคำนำหน้า F เพื่อระบุว่านี่คือฟิลด์ การเปิดเผย: ฟิลด์ทั้งหมดต้องเป็นส่วนตัว หากคุณต้องการเข้าถึงฟิลด์ที่อยู่นอกขอบเขตของคลาส คุณสามารถทำได้โดยใช้แอตทริบิวต์คลาส (3) การตั้งชื่อและรูปแบบวิธีการ: การตั้งชื่อวิธีการเป็นไปตามกฎเดียวกันกับขั้นตอนและฟังก์ชัน วิธีการแบบคงที่: ควรใช้วิธีการแบบคงที่เมื่อคุณไม่ต้องการให้วิธีการถูกแทนที่โดยคลาสที่ได้รับ วิธีการเสมือนกับวิธีการแบบไดนามิก: เมื่อคุณต้องการให้วิธีการถูกแทนที่โดยคลาสที่ได้รับ คุณควรใช้วิธีการเสมือน ถ้าเมธอดคลาสถูกใช้โดยตรงหรือโดยอ้อมโดยคลาสที่ได้รับหลายคลาส ควรใช้วิธีการแบบไดนามิก ตัวอย่างเช่น ถ้าคลาสมีเมธอดที่ถูกแทนที่บ่อยครั้งและมีคลาสที่ได้รับ 100 คลาส ควรกำหนดเมธอดนั้นเป็นไดนามิก ซึ่งสามารถลดโอเวอร์เฮดของหน่วยความจำได้ วิธีการแบบนามธรรม: หากคลาสคือการสร้างอินสแตนซ์แล้วอย่าใช้วิธีการแบบนามธรรม วิธีการแบบนามธรรมสามารถใช้ได้เฉพาะในคลาสพื้นฐานที่ไม่เคยสร้างอินสแตนซ์เท่านั้น วิธีการเข้าถึงคุณสมบัติ: วิธีการเข้าถึงคุณสมบัติทั้งหมดควรถูกกำหนดไว้ในส่วนส่วนตัวหรือที่ได้รับการป้องกันของชั้นเรียน วิธีการเข้าถึงคุณสมบัติเป็นไปตามกฎเดียวกันกับขั้นตอนและฟังก์ชัน วิธีการอ่านควรขึ้นต้นด้วย Get และวิธีการเขียนควรขึ้นต้นด้วย Set และมีพารามิเตอร์ชื่อ Value ซึ่งมีประเภทเหมือนกับประเภทของแอตทริบิวต์ ตัวอย่างเช่น: TStudent = class (TObject)privateFName: string;protectedfunction GetName: string;procedure SetName (Value: string);publicproperty Name: string read GetName write SetName;end;(4) คุณสมบัติคุณสมบัติทำหน้าที่เป็นตัวเข้าถึงฟิลด์ส่วนตัวและติดตาม เหมือนกัน ฟิลด์มีกฎการตั้งชื่อเหมือนกัน แต่ไม่มีคำนำหน้า F ชื่อคุณสมบัติควรเป็นคำนาม ไม่ใช่คำกริยา คุณสมบัติคือข้อมูล และวิธีการคือการกระทำ ชื่อคุณสมบัติของอาร์เรย์ควรเป็นพหูพจน์ ในขณะที่คุณสมบัติทั่วไปควรเป็นเอกพจน์ (5) แม้ว่าไม่จำเป็นต้องใช้วิธีการเข้าถึง แต่ขอแนะนำให้คุณใช้วิธีการเข้าถึงแบบเขียนเพื่อเข้าถึงคุณสมบัติที่แสดงถึงฟิลด์ส่วนตัว