How to be a good programmer (part 0.1)

posted on 30 May 2006 19:05 by tidno1 in csharp-and-dotnet

หลายคนเคยสงสัย ว่าถ้าอยากเป็นโปรแกรมเมอร์เนี่ย ต้องพิมพ์ดีดเก่งมั้ย หรือว่าต้องเก่งภาษาอังกฤษรึเปล่า

ก็ขอบอกไว้เลยนะครับ ว่าไม่ต้องทั้งคู่น่ะแหละ เอาแค่ให้จิ้มแป้น ไม่ช้าเกิน ภาษาอังกฤษก็ไม่ต้องอะไรมาก แค่รู้จักศัพท์เทคนิคบ้าง อ่าน help พอจะมั่ว ๆ รู้เรื่องบ้าง
และสำคัญ คำไหนเขียนไม่ถูก ถามคนอื่นบ้าง อย่ามั่วแบบนี้

catagory

หรือแบบนี้

buttom

(รูปจากประสบการณ์ทำงานช่วงนี้เลยครับ)
อันบนนี่ลูกค้าเห็นคงฮาครับ ไม่ได้น่าเกลียดอะไร อันหลังนี่แสบครับ ทำผมเสียเวลา มันผิดมาใน Parent form แล้วมันเลยเพี้ยนต่อมาเรื่อย ๆ พอผมมาทำ child form แล้วต้องหาตัว Panel นี้ใน code ก็กด Search เอ๊ะ ทำไมไม่เจอหว่า ดูไปดูมา อ้อ!

บ่นเพลินเลย จริง ๆ จะพูดแค่ว่า สิ่งสำคัญของการเป็นโปรแกรมเมอร์คือ logic ต้องแม่น เขียน code เอาให้เข้าใจง่าย และไม่กระชับ หรือยืดเยื้อจนเกินไป

ลองตัวอย่าง code ที่ยืดเยื้อกันดีกว่า

เวอร์ชันแรก แบบนี้เจอบ่อยครับ
private bool HasMore() {
    if(dt.Rows.Count == 0) {
        return false;
    } else {
    return true;
    }
}
อันนี้เวอร์ชันปรับปรุง สั้นลงเยอะ แต่ก็อ่านยากอีก สำหรับคนไม่คุ้นกับ ternary operator ตัวนี้ (แต่ผมชอบใช้นะ เขียนดี ๆ แล้วอ่านง่ายขึ้นเยอะเลย)
return dt.Rows.Count == 0 ? false : true;

แล้วแบบไหนล่ะ ที่โปรแกรมเมอร์ที่ดีควรเขียน
ก็แบบนี้ไง

return dt.Rows.Count != 0;

อันบนไม่เท่าไหร่ เจอกันบ่อย ลองมาเจออันนี้ดีกว่า เหมือนจะอ่านง่าย (สำหรับคนเขียน) แต่มันอ่านยาก(โว้ย)

return (chkCatagory.Enabled ? chkCatagory.Checked : false) ? cboCatagory.Text.Trim() : null;

ลองคิดดี ๆ แล้วจะรู้ว่า เขียนอย่างนี้ดีกว่ากันเยอะ

return (chkCatagory.Enabled && chkCatagory.Checked) ? cboCatagory.Text.Trim() : null;

เรื่อง logic นี่ขึ้นกับประสบการณ์ + วิธีคิดครับ บางทีอ่าน code คนอื่นบ่อย ๆ ก็จะนึกได้เองว่า ทำไมเค้าถึงเขียนแบบนั้น ไม่เขียนแบบนี้ล่ะ

เพราะฉะนั้น ประสบการณ์สำคัญครับ อ่านเยอะ ๆ เขียนเยอะ ๆ แต่ที่สำคัญที่สุด คิดให้เยอะ ๆ ครับ

Comment

Comment:

Tweet

xrhuyrni yymtoluw ncvkqlnm

#17 By RTBPKDgQVHdA (94.102.49.213) on 2009-08-14 19:04

spjrcbkc iiynsvnl bidxosie

#16 By WQqfeiiXAjZJZjA (94.102.49.213) on 2009-08-14 16:16

skibazkk koajumte acscwfvu

#15 By oCkLqzHkcJQqLbAYYL (94.102.49.213) on 2009-08-14 14:52

fkxnvuon utixjivz afdfbckc

#14 By blfnyWDiqsmYSbVk (89.248.172.50) on 2009-08-09 22:14

lasynyuh wmiuxxhy yvteuabo

#13 By zXljKrHN (89.248.172.50) on 2009-08-09 20:46

ninmriqb qxkhqfnh grzitedc

#12 By hqNWOFJn (95.169.190.71) on 2009-08-01 11:15

lhkcpoph uxdajofr toekraun

#11 By scNOxFoVS (95.169.190.71) on 2009-08-01 08:34

AN2C2T abzthmkp ndxxhbrt dtnrqolx

#10 By sUCOtcedPHK (89.248.172.50) on 2009-07-28 15:03

โอ๊ มายก๊อดดดด.....มะอยากเดาๆ เลยอ่ะ กิ้วววววววววววววว

#9 By alcohol_t@ (58.8.115.91) on 2007-03-26 17:23

ได้ความรู้มากมายเลย
ปกติผมก็ไม่รู้มาก่อนเลยว่าเขียนเยอะบรรทัดจะมีผลเรื่องประสิทธิภาพ

#8 By aima-kun on 2006-06-01 14:48

ปรกติผมเขียนแต่แบบหลังนะ
ปัญหาของการสร้าง functions ของ OO เพราะ programmer ส่วนมากไม่รู้ว่าเราควรจะแยกการเขียน function แบบไหนดีทำให้การ reduce +turnup performance กลายเป็นปัญหายุ่งยาก

หลักการง่ายๆ ของการเขียนคือ
1. 1 function ไม่ควรทำงานมากกว่า 1 อย่าง
2. function ทุก functions ต้องทำงานตั้งแต่เริ่มต้นจนเสร็จสมบูรณ์ ในตัวเอง

จาก 2 ข้อนี้ ถ้า code ที่เราเขียนเริ่มยืดยาว อ่านยาก หรือ ทำให้คุณสับสนว่าตูเขียนอะไรไป ให้ repeat ข้อ 1-2 ไปเรื่อยๆ จน code ของคุณอยู่ใน form ที่อ่านง่าย แล้วการ reduce code, turnup, debug หรือการ ทำ enhancement จะไม่ใช่เรื่องยาก ครับ แต่ทั้งนี้ทั้งนั้นขึ้นอยู่กับความจำเป็นนะครับ ถ้าเรากะว่างานนี้ทำจบแล้วจบกัน ไม่ต้องมาคอย maintain หรือทำต่อ ก็ไม่ต้องมาเสียเวลาทำครับ แต่ถ้ารู้ว่าต้องกลับมาทำอีกแน่ๆ ก็เสียเวลาทำซักนิดก็ดีครับนอกจาก code เพราะจะช่วยให้เราอ่าน code เราได้ง่ายขึ้นครับ

ขอให้มีความสุขกับการเขียนโปรแกรมครับ

#7 By Zeeeeed (58.8.50.117) on 2006-05-31 22:10

เขียนแต่แบบแรกเหมือนกัน ดูเหมือนยืดเยื้อ
ถ้า check สั้นๆก็ไม่อะไรมาก แต่เวลามี enhancement จากลูกค้ามันเพิ่มเติมสะดวกกว่า
อย่างตัวอย่างล่าง ถ้าเพิ่ม condition เข้าไปเยอะๆ
จะอ่านยาก

#6 By kaze on 2006-05-31 10:27

#2 panBottom อะ (panel bottom)

#5 By T!D on 2006-05-31 09:48

โอ้...ดูท่าน้องคนนี้น่าจะปั้นขึ้น มาทำงานกะทีมพี่ม๊ะ เอิ๊กๆ

#4 By Zeeeeed (58.8.51.179) on 2006-05-30 23:06

เหอๆ ผมเขียนแต่แบบ Version แรกแหะ
พวกลดรูปตัวเองอ่านไม่ออกไม่เขียน

#3 By plynoi แว่วศรี on 2006-05-30 22:50

ตกลงไอ้ panButtom นี่มันมาจากอะไรเนี่ย..

#2 By ไอ้แพท.. on 2006-05-30 22:06

โอ้วว ผมก็ผิดบ่อยๆ ไอ้ศัพท์พวกนี้ เหอๆ

#1 By ฟิวส์ on 2006-05-30 21:12