The Monkeys and the Bananas

ได้กลับมาซะทีหลังจากห่างหายไปนานเพราะมัวแต่ไปประคบประหงม Agile master ตัวน้อยอยู่ พอดีนั่งดูเรื่อง Coding Style แล้วก็นึกเรื่องนี้ขึ้นมาได้

ที่บริษัทแห่งหนึ่ง มี coding standard ว่า curly brace จะต้องขึ้นบรรทัดใหม่ แบบข้างล่าง

public class C1
{
   int value = 0;

   public int getValue()
   {
      return value;
   }
}


ทั้งที่จริง Java coding standard แนะนำให้จัดไว้ในบรรทัดเดียวกันกับ บรรทัดก่อนหน้า แบบนี้

public class C1 {
    int value = 0;

    public int getValue() {
	return value;
    }
}

ก่อนเฉลยว่าทำไมเขาถึงต้องทำแบบนี้ ไปฟังนิทานกันก่อนดีกว่า เพื่อความบันเทิง

เรื่องมีอยู่ว่ามีการทดลองนำลิง 5 ตัวใส่ในกรง กลางกรงมีกล้วยน่ากินห้อยอยู่ ข้างล่างมีบันไดวางไว้ ทันทีที่ลิงปีนขึ้นที่บันไดนั้น น้ำเย็นจะถูกพ่นลงมาทำให้ลิงทุกตัวหนาวสั่น ลิงทุกตัวในนั้นเรียนรู้ว่า ปีนบันไดไม่ได้เพราะจะมีน้ำเย็นลงมา

เสร็จแล้วเราเอาน้ำเย็นออกไป และเอาลิงตัวหนึ่งออกไปด้วย แล้วใส่ลิงตัวใหม่เข้าไป ลิงตัวใหม่เห็นกล้วยก็จะพยายามปีนบันได ลิงตัวอื่นไม่ต้องการโดนน้ำเย็นจึงรุมตื้บลิงตัวนั้น ลิงตัวนั้นจึงเรียนรู้ว่า ห้ามปีนบันไดเพราะจะโดนตืบ

ทำซ้ำแบบนี้ไปเรื่อยๆ โดยค่อยๆ เอาลิงชุดแรกออกไปทีละตัวจนหมด ลิงที่อยู่ในกรงนั้น จะรุมตืบลิงตัวใหม่ที่พยายามปีนบันได โดยไม่รู้เลยว่าทำไม

เขาว่ากันว่านี่เป็นกระบวนการที่ทำให้เกิดสิ่งที่เรียกว่า นโยบายของบริษัท

กลับไปดูเรื่อง coding style กัน ด้วยความอยากรู้อยากเห็นของผม ก็เลยได้ไปคุยกับลิง เอ๊ย คนหนึ่งที่เคยคุยกับคนที่รู้ เขาเล่าให้ฟังว่า สมัยก่อน เวลาที่ต้อง merge code นั้น tool ที่ใช้อยู่ตอนนั้นไม่สามารถจัดการ curly braces ที่อยู่บรรทัดเดียวกันได้ถูกต้อง (สงสัยเป็นเพราะถูกออกแบบมาใช้กับ code ภาษา C) เลยจำเป็นต้องกำหนดให้ เขียน curly braces อยู่คนละบรรทัด

ด้วยความสงสัยของผม ก็เลยลอง merge code ที่มี curly braces อยู่บรรทัดเดียวกัน ด้วย merge tool ตัวปัจจุบัน ก็ปรากฏว่าทำงานได้ดี เลยถึงบางอ้อว่า ตัวเองเป็นลิงไปซะแล้ว

Links
http://paws.kettering.edu/~jhuggins/humor/banana.html
http://www.wowzone.com/5monkeys.htm
http://freekvermeulen.blogspot.com/2008/08/monkey-story-experiment-involved-5.html
http://www.oracle.com/technetwork/java/codeconv-138413.html

Advertisements

One thought on “The Monkeys and the Bananas

  1. อ้อๆ อย่างนี้นี่เอง บริษัทไรหว่า จ้างลิงมาทำงาน :P
    แต่เรื่อง style มันอาจจะแล้วแต่ความชอบส่วนบุคคลก็ได้นะพี่กร ไม่มีถูกผิด อาจจะบังเอิญกลุ่มลิงที่กำหนด standard เค้าชอบแบบนี้ ลองอ่านนี่จิ นกเพิ่งจะรู้ว่าเค้าเรียกชื่อ style ว่าอะไร เขียนโปรแกรมมาตั้งนาน อิอิ

    http://experimentgarden.blogspot.com/2009/07/facts-behind-code-indention-style-war.html

ใส่ความเห็น

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s