แนวปฏิบัติที่ดีที่สุดขององค์กรรหัส
แนวทางปฏิบัติที่ดีที่สุดสำหรับองค์กรใน XOOPS
หัวข้อที่มีชื่อว่า “แนวทางปฏิบัติที่ดีที่สุดสำหรับองค์กรใน XOOPS”การจัดระเบียบโค้ดที่เหมาะสมถือเป็นสิ่งสำคัญสำหรับการบำรุงรักษา ความสามารถในการปรับขนาด และการทำงานร่วมกันเป็นทีม
โครงสร้างไดเรกทอรีโมดูล
หัวข้อที่มีชื่อว่า “โครงสร้างไดเรกทอรีโมดูล”โมดูล XOOPS ที่มีการจัดการอย่างดีควรเป็นไปตามโครงสร้างนี้:
mymodule/├── xoops_version.php # Module metadata├── index.php # Frontend entry point├── admin.php # Admin entry point├── class/│ ├── Controller/ # Request handlers│ ├── Handler/ # Data handlers│ ├── Repository/ # Data access│ ├── Entity/ # Domain objects│ ├── Service/ # Business logic│ ├── DTO/ # Data transfer objects│ └── Exception/ # Custom exceptions├── templates/ # Smarty templates│ ├── admin/ # Admin templates│ └── blocks/ # Block templates├── assets/│ ├── css/ # Stylesheets│ ├── js/ # JavaScript│ └── images/ # Images├── sql/ # Database schemas├── tests/ # Unit and integration tests├── docs/ # Documentation└── composer.json # Composer configurationแบบแผนการตั้งชื่อ
หัวข้อที่มีชื่อว่า “แบบแผนการตั้งชื่อ”PHP มาตรฐานการตั้งชื่อ (PSR-12)
หัวข้อที่มีชื่อว่า “PHP มาตรฐานการตั้งชื่อ (PSR-12)”Classes: PascalCase (UserController, PostRepository)Methods: camelCase (getUserById, createUser)Properties: camelCase ($userId, $username)Constants: UPPER_SNAKE_CASE (DEFAULT_LIMIT, MAX_USERS)Functions: snake_case (get_user_data, validate_email)Files: PascalCase.php (UserController.php)องค์กรไฟล์และไดเร็กทอรี
หัวข้อที่มีชื่อว่า “องค์กรไฟล์และไดเร็กทอรี”- หนึ่งคลาสต่อไฟล์
- ชื่อไฟล์ตรงกับชื่อคลาส
- โครงสร้างไดเร็กทอรีตรงกับลำดับชั้นของเนมสเปซ
- เก็บชั้นเรียนที่เกี่ยวข้องไว้ด้วยกัน
- ใช้การตั้งชื่อที่สอดคล้องกันทั่วทั้งโมดูล
PSR-4 กำลังโหลดอัตโนมัติ
หัวข้อที่มีชื่อว่า “PSR-4 กำลังโหลดอัตโนมัติ”การกำหนดค่าผู้แต่ง
หัวข้อที่มีชื่อว่า “การกำหนดค่าผู้แต่ง”{ "autoload": { "psr-4": { "Xoops\\Module\\Mymodule\\": "class/" } }}โหลดอัตโนมัติแบบแมนนวล
หัวข้อที่มีชื่อว่า “โหลดอัตโนมัติแบบแมนนวล”<?phpclass Autoloader{ public static function register() { spl_autoload_register([self::class, 'autoload']); }
public static function autoload($class) { $prefix = 'Xoops\\Module\\Mymodule\\'; if (strpos($class, $prefix) !== 0) { return; }
$relative = substr($class, strlen($prefix)); $file = __DIR__ . '/' . str_replace('\\', '/', $relative) . '.php';
if (file_exists($file)) { require $file; } }}?>แนวทางปฏิบัติที่ดีที่สุด
หัวข้อที่มีชื่อว่า “แนวทางปฏิบัติที่ดีที่สุด”1. ความรับผิดชอบเดี่ยว
หัวข้อที่มีชื่อว่า “1. ความรับผิดชอบเดี่ยว”- แต่ละชั้นเรียนควรมีเหตุผลหนึ่งข้อในการเปลี่ยนแปลง
- แยกข้อกังวลออกเป็นประเภทต่างๆ
- ให้ชั้นเรียนมีสมาธิและเหนียวแน่น
2. การตั้งชื่อที่สอดคล้องกัน
หัวข้อที่มีชื่อว่า “2. การตั้งชื่อที่สอดคล้องกัน”- ใช้ชื่อที่มีความหมายและสื่อความหมาย
- ปฏิบัติตามมาตรฐานการเข้ารหัส PSR-12
- หลีกเลี่ยงคำย่อเว้นแต่จะชัดเจน
- ใช้รูปแบบที่สอดคล้องกัน
3. องค์กรไดเร็กทอรี
หัวข้อที่มีชื่อว่า “3. องค์กรไดเร็กทอรี”- จัดกลุ่มชั้นเรียนที่เกี่ยวข้องเข้าด้วยกัน
- แยกข้อกังวลออกเป็นไดเร็กทอรีย่อย
- จัดระเบียบเทมเพลตและเนื้อหา
- ใช้การตั้งชื่อไฟล์ที่สอดคล้องกัน
4. การใช้เนมสเปซ
หัวข้อที่มีชื่อว่า “4. การใช้เนมสเปซ”- ใช้เนมสเปซที่เหมาะสมสำหรับทุกคลาส
- ทำตามการโหลดอัตโนมัติ PSR-4
- เนมสเปซตรงกับโครงสร้างไดเร็กทอรี
5. การจัดการการกำหนดค่า
หัวข้อที่มีชื่อว่า “5. การจัดการการกำหนดค่า”- รวมศูนย์การกำหนดค่าในไดเร็กทอรี config
- ใช้การกำหนดค่าตามสภาพแวดล้อม
- อย่าตั้งค่าฮาร์ดโค้ด
โมดูลบูทสแตรป
หัวข้อที่มีชื่อว่า “โมดูลบูทสแตรป”<?phpclass Bootstrap{ private static $serviceContainer; private static $initialized = false;
public static function initialize() { if (self::$initialized) { return; }
global $xoopsDB; self::$serviceContainer = new ServiceContainer($xoopsDB); self::$initialized = true; }
public static function getServiceContainer() { if (!self::$initialized) { self::initialize(); } return self::$serviceContainer; }}?>เอกสารที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “เอกสารที่เกี่ยวข้อง”ดูเพิ่มเติมที่:
- การจัดการข้อผิดพลาดสำหรับการจัดการข้อยกเว้น
- การทดสอบสำหรับองค์กรทดสอบ
- ../Patterns/MVC-รูปแบบโครงสร้างตัวควบคุม
Tags: #best-practices #code-organization #psr-4 #module-development