โค้ด PHP ที่ดีควรมีโครงสร้าง โค้ด PHP ที่ดีควรได้รับการปรับให้เป็นมาตรฐาน โค้ด PHP ที่ดีควรปลอดภัย...
ฉันจะถามสิ่งนี้อย่างแน่นอนเมื่อฉันเป็นผู้สัมภาษณ์ที่ SitePoint คำถามคือ: คุณคิดอย่างไร ข้อดีและข้อเสียของโค้ด PHP คืออะไร เพราะคำถามนี้สามารถให้แนวคิดทั่วไปแก่ฉันได้ว่าผู้สมัครเป็นโปรแกรมเมอร์ประเภทใด แทนที่จะทดสอบความเชี่ยวชาญในฟังก์ชัน PHP ของเขา (การรับรอง PHP ของ Zend ทำได้ดีในเรื่องนี้ และคำถามสัมภาษณ์โปรแกรมเมอร์ PHP ของ Yahoo ก็เป็นเช่นนั้น)
ที่สำคัญ คำถามนี้ช่วยให้ฉันรู้ว่าผู้สมัครเคยมีประสบการณ์ในการรับช่วงโค้ดยุ่งๆ จากโปรแกรมเมอร์ที่ขี้เกียจเพื่อนำมาใช้ซ้ำ หรือช่วยเหลือสมาชิกคนอื่นๆ ในทีมในเรื่องประเภทนี้หรือไม่
เป็นที่ยอมรับว่าฉันไม่มีคำตอบที่น่าพอใจสำหรับคำถามนี้ แต่ฉันรู้ว่าคำตอบที่ฉันต้องการได้ยิน:
โค้ด PHP ที่ดีควรมีโครงสร้าง ส่วนโค้ดขนาดใหญ่ควรแบ่งออกเป็นฟังก์ชันหรือวิธีการ ในขณะที่ส่วนเล็กๆ ของโค้ดที่ไม่สะดุดตาควรแสดงความคิดเห็นเพื่อให้วัตถุประสงค์ชัดเจนในภายหลัง และโค้ดส่วนหน้าเช่น HTML, CSS, Javascript ฯลฯ ควรแยกออกจากโปรแกรมให้มากที่สุด คุณสมบัติการเขียนโปรแกรมเชิงวัตถุของ PHP สามารถช่วยให้โปรแกรมเมอร์จัดระเบียบโค้ดของตนได้อย่างเป็นระเบียบ
โค้ด PHP ที่ดีควรมีมาตรฐาน ไม่ว่าจะเป็นการตั้งค่ากฎการตั้งชื่อสำหรับชื่อตัวแปรและฟังก์ชัน การกำหนดมาตรฐานของกระบวนการที่นำมาใช้ซ้ำได้ เช่น การทำงานของฐานข้อมูลและการจัดการข้อผิดพลาด หรือง่ายๆ เหมือนกับการระบุวิธีการเยื้องโค้ด การกำหนดมาตรฐานเหล่านี้สามารถทำให้โค้ดสามารถอ่านได้ง่ายขึ้นอย่างมาก
โค้ด PHP ที่ดีควรปรับเปลี่ยนได้ PHP มีฟีเจอร์มากมาย เช่น เครื่องหมายคำพูดและแท็กแบบสั้น การเปิดและปิดฟีเจอร์เหล่านี้จะส่งผลต่อการทำงานของโปรแกรม ดังนั้นโปรแกรมเมอร์ที่ดีควรเพิ่มข้อความที่เหมาะสมลงในโค้ดเพื่อให้โปรแกรมสามารถปรับตามสภาพแวดล้อมได้
รหัส PHP ที่ดีควรจะปลอดภัย แม้ว่า PHP จะเป็นภาษาที่มีประสิทธิภาพและยืดหยุ่นโดยไม่มีเฟรมเวิร์กที่ตายตัว แต่ก็ทิ้งปัญหาด้านความปลอดภัยไว้ที่โปรแกรมเมอร์ ความเข้าใจอย่างลึกซึ้งเกี่ยวกับช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น เช่น Cross-site scripting (XSS), การปลอมแปลงคำขอข้ามไซต์ (CSRF), ช่องโหว่การแทรกโค้ด, ช่องโหว่การเข้ารหัสอักขระ เป็นต้น เป็นสิ่งสำคัญสำหรับโปรแกรมเมอร์มืออาชีพในปัจจุบัน
เมื่อผู้สมัครตอบคำถามเหล่านี้ ฉันรู้ชัดเจนว่าควรจ้างเขาหรือเธอ แน่นอนว่าบางครั้งโปรแกรมเมอร์ไม่สามารถระบุปัญหาได้ดีนัก และเราขอให้พวกเขาทำการทดสอบ PHP บ้าง คำถามหลายข้อในแบบทดสอบอาจดูเรียบง่ายมากเมื่อมองดูผิวเผิน แต่ก็ให้โอกาสผู้สอบได้แสดงออก เพราะหากคุณพิจารณาให้ดี คุณจะสามารถมองเห็นปัญหาได้
โค้ด PHP ที่ "แย่" ส่วนเล็กๆ ต่อไปนี้เป็นคำถามทดสอบแบบง่าย คำถามนี้เหมือนกับการถามว่า คุณควรเพิ่มประสิทธิภาพโค้ดนี้อย่างไร
-
echo("<p>ผลการค้นหาคำค้นหา: " .
$_GET['แบบสอบถาม'] . ".</p>");
?>
ปัญหาหลักของโค้ดนี้คือมันแสดงข้อมูลที่ผู้ใช้ส่งมาโดยตรงบนหน้าเว็บ ซึ่งทำให้เกิดช่องโหว่ XSS มีหลายวิธีในการเติมเต็มหลุมนี้ แล้วเราต้องการรหัสอะไรล่ะ?
-
echo("<p>ผลการค้นหาคำค้นหา: " .
htmlspecialchars($_GET['query']) . ".</p>");
?>
นี่คือข้อกำหนดขั้นต่ำ ช่องโหว่ XSS เต็มไปด้วยฟังก์ชัน htmlspecialchars จึงบล็อกอักขระที่ผิดกฎหมายได้
<?php
ถ้า (isset($_GET['query']))
-
echo '<p>ผลการค้นหาสำหรับข้อความค้นหา: ',
htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';
-
?>
คนที่เขียนโค้ดแบบนี้ได้ควรเป็นคนที่ผมอยากจ้างครับ
<? ถูกแทนที่ด้วย <?php ซึ่งสอดคล้องกับข้อกำหนด XML มากกว่า
ก่อนที่จะส่งออกค่าของ $_GET['query'] ขั้นแรกให้พิจารณาว่าค่านั้นว่างเปล่าหรือไม่
วงเล็บพิเศษในคำสั่ง echo ถูกลบออกแล้ว
สตริงมีคุณสมบัติด้วยเครื่องหมายคำพูดเดี่ยว ซึ่งช่วยประหยัดเวลา PHP ในการค้นหาตัวแปรที่แทนที่ได้ในสตริง
ใช้เครื่องหมายจุลภาคแทนจุดเพื่อประหยัดเวลาเสียงก้อง
ส่งแฟล็ก ENT_QUOTES ไปยังฟังก์ชัน htmlspecialchars เพื่อให้แน่ใจว่าเครื่องหมายคำพูดเดี่ยวจะถูกหลีกเลี่ยงด้วย แม้ว่านี่จะไม่ใช่สิ่งที่สำคัญที่สุด แต่ก็เป็นนิสัยที่ดีเช่นกัน
น่าเสียดายที่มีโปรแกรมเมอร์เพียงไม่กี่คนที่สามารถให้คำตอบที่น่าพอใจได้ เราใช้เวลา 3 เดือนในการรับสมัครโปรแกรมเมอร์ที่เราพอใจ
แล้วคุณจะตอบคำถามตอนต้นบทความนี้อย่างไร? คุณคิดว่าข้อดีและข้อเสียของโค้ด PHP คืออะไร คุณคิดว่าคุณสมบัติอื่นใดที่โปรแกรมเมอร์ PHP ควรมีคุณสมบัติอื่นอีกบ้าง
บทความนี้มาจาก: http://www.yeeyan.com/articles/view/38585/18736
ลิงค์ต้นฉบับ: http://www.sitepoint.com/blogs/2007/05/25/good-and-bad-php-code/