ทำไมคุณถึงเป็นโปรแกรมเมอร์ที่แย่ !!!
บทความนี้ไม่ได้คิดขึ้นเองทั้งหมดนะครับ แต่ประยุกต์มาจากบทความของฝรั่ง ที่ไปอ่านมา แล้วต้องบอกเลยว่าตรง โคดๆ แล้วก็ไม่ได้ว่าใครด้วยนะครับ แต่ว่าอยากให้มองในมุมกลับกันมากกว่า แล้วก็เปลี่ยนแปลงทีละเล็กละน้อย เราก็จะก้าวพ้นกับคำว่า Noob ได้แล้ว
ที่จะเขียนต่อไปนี้ คือฟฤติกรรมที่บ่อนทำลาย อาชีพ Dev ของตัวเอง อย่างเห็นได้ชัด (จริงๆ มันก็ไม่ขนาดนั้นหลอก แต่ฝรั่งมันเว่อร์ 555)
ทีนี้มาดูกันถึง 10 ตัวอย่างของ โปรแกรมเมอร์ยอดแย่ ที่ควรจะแก้ไขโดยด่วน
1. ชอบเขียนแบบสั้นๆ เอาสะดวก
วิธีการเขียนโคดสั้นๆ แบบนี้ จริงอยู่ที่มันประหยัดเวลา แล้วมันก็แสดงผลได้ถูกต้อง แต่ว่ามันขาดความเป็นมืออาชีพ แล้วก็บางอย่างทำให้ PHP ต้องเสียเวลาแปลมากขึ้นไปอีก แทนที่จะทำงานได้เลย แล้วก็ไม่ดีต่อการ Portable ย้าย Server ข้ามไปข้ามมา เพราะว่า บางที่ Compile ได้ไม่เหมือนกัน เพราะฉะนั้น ต้องขอบอกเลยว่า "เขียนให้มันเต็มๆ" เถอะครับ
อาทิเช่นการออก output
Bad
<?=$wording?>
Good
<?php echo $wording; ?>
2. ไม่มีการวางแผนเพื่อทำการเขียนโคดล่วงหน้า
ก่อนการเขียนโคดทุกครั้งควรจะต้องออกแบบทุกอย่างให้เสร็จสรรพ แล้วค่อยลงมือเขียน ไม่ใช่ว่า เขียนไปนึกไป รับรองได้ออกมาจะต้องแก้กันหลายตลบ ถึงจะถูกใจ
ควรจะมีการ วางแผนอย่างเป็นระบบ อาจจะทำการเขียน comment ไว้ในแต่ละส่วน ที่จะทำงาน อาทิเช่น
<?php
// Include necessary data
// Initialize the database connection
// Include the common header markup
// Determine the page variables from the POST data
// Load the proper database info using the page vairiables
// Loop through the loaded rows
// Format the images for display
// Create a permalink
// Format the entry for display
// Add the formatted entry to the entry array
// Collapse the entry array into page-ready markup
// Output the entries
// Include the common footer markup
เพื่อที่จะได้เป็นการบอกตัวเองด้วยว่าเราจะทำอะไรต่อไป
3. ไม่มีการ comment อะไรเลยในโคด
อันนี้จำเป็นมากๆเลย ในการเขียนโคด ควรจะเขียน comment ไว้ในจุดที่สำคัญๆต่างๆ โดยเฉพาะพวก function, class ต่างๆ แล้วก็ logic ที่มีความสำคัญกับ Software ลองไปดูโคดฝรั่งแต่ละตัวสิครับ comment มันเยอะกว่าโคดอีก ทั้งนี้เพื่อให้สะดวกในการค้นหา แล้วก็ยัง ทำให้คนอื่นเข้าใจได้ง่ายด้วยว่าจะไปไล่โคด ได้ยังไง ตัวอย่างการเขียน comment ก็ควรมีด้วย อาทิเช่น
/**
* print_array()
*
* Formatting array
* This function use for debugging
*
* @access public
* @param array
* @return string
*/
if ( ! function_exists('print_array'))
{
function print_array($array, $break=false)
{
echo "<pre>" . print_r($array, true) . "</pre>n";
if ($break == true) exit(0);
}
}
หรือ// Get the extension off the image filename
$pieces = explode('.', $image_name);
$extension = array_pop($pieces);
แบบนี้ คนอื่นมาอ่านปุ๊บ ก็เข้าใจเลยว่ามันใช้ทำอะไร
4. โคดไม่มีความชัดเจน
อันนี้ไม่ใช่เรื่องใหญ่นัก แต่ว่ามันก็ทำให้โคดเราอ่านยากแล้วก็ ไล่โคดลำบากมาก อาทิเช่น
<?php
$foo = 8;
if( $foo<10 )
if( $foo>5 )
echo "Greater than 5!";
else
echo "Less than 5!";
else
echo "Greater than 10!";
echo "<br />Another note.";
สังเกตุดูว่า ปีกกา มันหายไปหมดเลย แบบนี้จะใช้ Tool ตัวไหนมาไล่โคดมันก็ไล่ให้ไม่ได้ เพราะว่า มันไม่มี Syntax ที่จะมาจับได้ ถึง output มันจะเหมือนกันแต่ว่า แบบนี้เค้าเรียก มักง่ายครับ
5. ไม่เขียนตามมารตฐาน
อันนี้มันก็คือการเขียนที่ไม่มีมารตฐาน เอะอะๆ ก็ทำตามใจกูลูกเดียว จริงๆแล้ว PHP มันมีมารฐานการเขียนที่เป็น Standard อยู่นะครับ ลองคิดดูว่าทั้งทีมคุณ เขียนแบบสไตล์ใคร สไตล์มัน มันจะปวดหัวแค่ไหน
ลองดู Standard ที่เป็นที่นิยมกันดูนะครับ
http://codeigniter.com/user_guide/general/styleguide.html
http://pear.php.net/manual/en/standards.php
6. เขียนโคดซ้ำไปซ้ำมา ไม่มีการนำกลับมาใช้ใหม่
อันนี้มันไม่ใช่ความผิดหรอกครับ มันอยู่ที่ทักษะแล้วก็ ประสบการณ์ การเขียนโคดที่ดีจะต้องถูกออกแบบให้ Re use ได้เกือบทั้งหมด การเขียนในรูปแบบนี้ก็คือ การใช้ function, class เข้าทำงานในส่วนที่ซ้ำได้เป็นอย่างดี
แต่กว่าจะทำได้ดีก็ต้องอาศัยประสบการณ์ครับ ไม่ใช่ว่าเขียนแบบ OOP ได้แล้วก็จบ การออกแบบ Class มันต้องออกแบบได้อย่างดีอีกด้วย
อาทิเช่น class ที่เกี่ยวกับเรื่อง database ของ blog มันควรที่จะต้องเขียนออกมาให้เป็นกลางที่สุด เช่น
- ต้องใช้งานได้ในส่วน Portal
- ต้องใช้งานได้ในส่วน User Site
- ต้องใช้งานได้ใน API
- ต้องใช้งานได้ใน Super Backend
เพราะฉะนั้น ต้องอาศัยประสบการณ์ลองผิดลองถูกกันไปครับ ผมเคยออกแบบพลาดครั้งนึง เสียเวลาไปหลายเดือนเลย T__T
(ยอมทำใหม่ดีกว่าเขียนต่อโคดที่ไม่ชอบ)
7. ไม่เขียนตามรูปแบบที่โดนวางไว้
การเขียนโคดมันต้องเขียนตามรูปแบบที่เราวางไว้ครับ อาทิเช่นตัวผม ถนัดเขียนแบบ MVC ผมก็จะต้องเขียนแบบ MVC ตามรูปแบบ เป๊ะๆ ไม่มีส่วน/ไหนเลยที่เอา view ไปโผล่ใน Controller หรือไป Query ใน View อะไรประมาณนั้น มันจะทำให้เกิดปัญหาทั้งกับ เราเองแล้วก็ทีมงานครับ เวลาจะแก้อะไรทีนึง ทั้งๆ ที่ตามปกติแล้วเราจะรู้ได้ทันทีว่าต้องไปแก้ที่ไหน แต่พอเจอ Query ใน view เข้า เราก็ต้องไปตามไล่โคดกันหัวบานอีก
8. พยายามทำงานทุกอย่างทั้งหมดตั้งแต่ต้นด้วยตัวเอง
อันนี้ผมเคยเป็นนะ คือเข้าใจไปเองว่า ถ้าเราเริ่มเขียนโคดเองตั้งแต่ ตัวอักษรแรก มันจะทำให้เรามีความเข้าใจสูงขึ้น ซึ่งมันเป็นอะไรที่โง่มากๆ T__T
ในโลก Internet นั้นมันมีของดีที่เค้าพัฒนาเตรียมไว้ให้เราไปหยิบฉวยใช้งานอยู่เยอะแยะ ทั้งมีการ จูนนิ่ง อัพเดท แก้บั๊ก ให้เราอยู่ตลอดเวลา ทำไมเราจะไปเอามาใช้ไม่ได้ อาทิเช่น
Zend DB
ตัวนี้สุดยอดเลย มีการอัพเดทอยู่ตลอด มีรูปแบบให้ใช้งานแทบจะเรียกว่าครบครัน เนียกว่า ถ้ามาเขียน class แบบนี้เอง ชาตินี้กูก็ทำไม่เสร็จ แถมถ้าเสร็จออกมา แล้วก็มีบั๊ก ทำไมล่ะ เราจะไม่เอามาใช้
9. ไม่พยายามหาความรู้ใหม่ๆ หรือท้าทายตัวเองด้วย โจทย์ยากๆ
อันนี้พวก โปรแกรมเมอร์ที่หลีกเลี่ยง งานที่ยากๆ งานที่ไม่เคยทำ หรือยังไม่มีความรู้ เชื่อผมเถอะครับมันไม่มีอะไรที่ยากเกินไปหรอก ข้อมูลมีอยู่เต็ม internet ยังไงมันก็ต้องทำได้ ถ้าไม่ใช่งานแบบว่า เว่อร์ๆ อาทิเช่น ไปนั่งทำ Serach Engine เหมือน Google นะ แบบนั้นมัน ไม่ใช่แค่ Software แต่มันต้องมีการลงทุนที่สูงมาก ต้องมีทีงานจำนวนมาก
แต่ถ้าเป็นงานแบบที่คนอื่นเค้าทำได้ เราก็ควรจะทำได้ ถูกมั้ยครับ
10. ไม่เปิดใจให้กว้าง แชร์ในสิ่งที่ตัวเองรู้ให้กับคนอื่นบ้าง
อันนี้เข้าแนวหวงความรู้ ผมไม่เข้าใจพวกนี้เลย ไม่รู้จะเก็บไว้คนเดียวทำไม เอามาแชร์ให้คนอื่นรู้ ให้คนอื่นช่วยหาข้อผิดพลาด ช่วยกันพัฒนาต่อ มันน่าจะดีกว่า
แต่อันนี้ไม่ใช่แนวพวกที่ไปขอโคดเค้ามา Copy แล้วเค้าไม่ให้ แล้วมาทะลึ่งบอกว่าเค้าหวงนะ มันคนละกรณีกัน 555+
................
เอาล่ะครับ ก็จบกันง่ายๆ กับฟฤติกรรม ห่วยๆ 10 ข้อ ทีนี้ใครจะเห็นด้วย หรือไม่เห็นด้วย ก็แล้วแต่ ศรัทธานะครับ ผมก็ไม่ได้คิดเองหรอก ไปอ่านบทความคนอื่นเค้ามาแล้วมีแรง บันดาลใจ 555+
แล้วที่สำคัญ ผมเองก็ๆไม่ได้ ทำได้เป๊ะๆ อย่างที่เขียนด้วย มันก็ต้องมีบางอารมณ์ แบบว่าขี้เกียจ หรือมักง่ายกันบ้าง แต่โดยรวมแล้ว ผมก็ไม่ได้หลุดจากที่เขียนมามากนักหรอก แต่ถ้าใครทำได้หมด ผมก็ว่ามันดีต่อตัวเองทั้งนั้น ^^
อ้อแล้วก็อย่าลืมก่อนเขียนโคดทุกครั้ง เปิด Error เป็น E_ALL ไปเลยนะครับ
Go Fight for it!!!!

22 comments