เขียนโค้ดสั้น VS เขียนโค้ดยาว ต่างกันยังไง?

การเขียนโปรแกรมไม่ยาก แต่เขียนให้ดีไม่ใช่ง่าย กว่าจะรู้ว่าพลาดก็อาจสายไป ทางที่ดีเรามาลองดูกันครับว่าจุดที่เรามักจะพลาดบ่อยๆสำหรับการเขียนโปรแกรมนั้นคืออะไรบ้าง
เขียนโค้ดสั้นๆง่ายๆ
ปกติยิ่งโค้ดสั้นการทำงานยิ่งเร็ว เนื่องจากโปรแกรมไฟล์ยิ่งเล็กจะสามารถอ่านและประมวลผลได้เร็ว แต่พอคนอื่นจะมาแก้กลับต้องใช้เวลาในการทำความเข้าใจกับโค้ดนานพอสมควร
เชื่อหรือไม่ว่า
if($condition==true){
echo 'ถูกต้อง';
}else{
echo 'ไม่ถูกต้อง';
}
ได้ผลลัพท์เท่ากับการเขียนโค้ดบรรทัดเดียวแบบนี้
echo ($condition==true ? 'ถูกต้อง' : 'ไม่ถูกต้อง' );
เห็นไหมครับ เขียนสั้นแต่ผลลัพท์เหมือนกัน ซึ่งนอกจากจะช่วยให้โค้ดสั้นลงแล้ว ยังทำให้เราลดโค้ดที่ไม่จำเป็นออกไปได้ด้วย
อีกตัวอย่างที่น่าสนใจ
เขียนโค้ดสั้นแต่ง่อย
บางทีการเขียนโค้ดที่เราพยายามจะเขียนให้สั้น อาจจะไม่ได้ดีเสมอไป เพราะเราเขียนสั้นแต่เป็นโค้ดที่ไม่ได้มาตรฐาน ปัญหาที่จะตามมาคือเราสามารถ Run โค้ดได้ในเครื่องหนึ่งพอย้ายไปรันอีกเครื่องหรือย้ายขึ้น Hosting หนึ่งกลับไม่สามารถทำงานได้ หรือเรียกง่ายๆว่าโค้ดพัง ต้องมารื้อแก้โค้ดทีหลัง แบบนี้ไม่ดีแน่นอนครับ เช่น
$input['ชื่อตัวแปร']=$_GET["ชื่อตัวแปรที่รับค่า"];
โค้ดด้านบนเขียนง่ายๆสั้นๆมาก เหมือนจะดีแต่ จะเกิดปัญหาโค้ดพังเพราะเจอ error แบบนี้ Notice: Undefined variable เรามักแก้ปัญหานี้ด้วยการเช็คค่าด้วย isset ก่อน คือเขียนแบบนี้ครับ
if(isset($_GET['ชื่อตัวแปรที่รับค่า'])){
$input['ชื่อตัวแปร']=$_GET['ชื่อตัวแปรที่รับค่า'];
}else{
$input['ชื่อตัวแปร']="";
}
แต่กรณีที่ตัวแปรมีจำนวนมากๆ เป็นสิบๆตัวแปร การเขียนแบบด้านบนย่อมทำให้โค้ดรกและลายตาอย่างแน่นอน เราสามารถเขียนแบบนี้ เพื่อให้โค้ดสั้นลงและเป็นระเบียบมากขึ้นได้
$input['ชื่อตัวแปรที่รับค่า']=(isset($_GET["ชื่อตัวแปรที่รับค่า"])? $_GET["ชื่อตัวแปรที่รับค่า"] : null);
เขียนยาวขึ้นอีกนิด แต่โค้ดไม่พังเพราะมีการ isset เช็คค่าก่อนว่ามีตัวแปรนี้อยู่หรือไม่
เขียนโค้ดเดิมๆซ้ำๆโดยไม่จำเป็น
เช่นเขียน dropdown วันที่ 1-31
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
...
<option value="31"></option>
ถ้าเขียนแบบนี้ โค้ดของเราจะยาวถึง 31 บรรทัด เราสามารถเขียนให้สั้นลงได้โดย
for($i=1;$i<=31;$i++){
echo '<option value="'.$i.'">'.$i.'</option>';
}
เห็นไหมครับว่าโค้ดจาก 31 บรรทัด สามารถลดลงเหลือเพียง 3 บรรทัดเอง และถ้าเราอยากสั่งให้ selected ที่วันที่ปัจจุบันก็เพียงแค่เพิ่ม
for($i=1;$i<=31;$i++){
echo '<option value="'.$i.'"'.(Date('d')==$i?' selected':null).'>'.$i.'<option>';
}
เท่านั้นก็จะได้โค้ดสั้นๆที่ทำงานได้ดีแล้วครับ
