เคย refactor code ที่เขียนมั้ย

17 March 2008

    หัวข้อที่แล้วแนะนำ แหม่จะพูดแนะนำก็ไม่ถูกเพราะไอ้ที่ผมเขียนก็มีอาจารย์ท่านหนึ่งบอกมาอีกที แต่ก็นั้นแหละ ขอพูดว่าแนะนำละกัน  ได้คุยกับเขาแหละเขาก็แนะนำการ refactor code ผมก็งงว่ามันคืออะไร อาจารย์ท่านนั้นก็บอกว่า มันคือการทำให้ code ของเราอ่านเข้าใจง่ายขึ้น ดูไม่ซับซ้อน เวลาใครนำไปใช้หรือ นำไปพัฒนาต่อเขาได้ดูง่ายๆ ผมก็บอกว่าไม่เคยได้ยิน อาจารย์ก็บอกอีกว่า คือคนไทยยังไม่ค่อยชินกับการ refactor code เท่าไร พอจะพัฒนาต่อก็ไม่ได้ ทำให้ต้องทำใหม่หมด ทำให้เสียเวลา  เพราะฉนั้นแล้วการ refactor code ถือว่าสำคัญ ผมเองยังไม่ค่อยเก่ง programming เท่าไรก็ได้อาจารย์ท่านนั้นสอน แล้วก็นำมาเขียน blog อีกทีนึง เอาละ การ refactor code เราจะทำยังไงกันดี

ตัดสิ่งที่ไม่จำเป็นออกไป ผมว่าตรงตัวนะ refactor   ยกตัวอย่างเช่น   คุณเขียน program บวกเลข ยกตัวอย่างเช่น เขียนง่ายๆก็จะได้ประมาณนี้ทำเป็น function นะ

def add(a,b):

c = a + b

return c

add(5,7)

แต่บางคนอาจจะเขียน

def add(a,b):

return a + b

add(8,9)

ก็ทำให้ ลด บรรทัดในการทำงานเข้าไปอีก หรือ จะประกาศตัวแปร แบบนี้

a , b , c = 1 , 2 , 3 หรือตามทั่วไปคือ

a = 1

b = 2

c = 3

ถ้าทำยังงี้ต้องเขียนถึง 3 บรรทัดแต่ถ้าเราเขียนยังที่ผมบอกก็ประหยัดบรรทัดเข้าไปอีก ช่วยภาวะโลกร้อน (ไม่ได้เกี่ยวอะไรกันเลย)

บางทีเราเขียนโปรแกรมธรรมดาอาจจะไม่ค่อยเห็นความแตกต่าง เพราะบางคนทรัพยากรสูง   codeของเราหรือโปรแกรมเราต้องรับ transaction เยอะ การเขียน code ให้กระชับ รวดเร็ว ก็อาจจะทำให้ระบบดีได้ในส่วนหนึ่ง  แต่ output ต้องออกมาเหมือนเดิมด้วยนะ อันนี้สำคัญที่สุด

ที่เขียนนี้ถ้าเป็น programmer เก่งคงไม่ต้องกังวลเพราะ refactor ใส่ comment ทำ doc ให้โปรแกรม ส่วนมาก programmer ทำกันอยู่แล้ว แต่เป็นคนพึ่งหัดเขียนโปรแกรม อาจจะสนแต่ output จนลึมดูว่า code มันทำได้หลายแบบ และแต่ละแบบ ดี ด้อย ต่างกันไป ตัวผมเองก็ไม่รู้จนอาจารย์ท่านนี้มาบอกอะแหละ ตาสว่างขึ้นเยอะ


code ที่คุณเขียนใช้เวลาเท่าไร

13 March 2008

    ปัญหาอีกอย่างนึงของคนเขียนโปรแกรมคือ นอกจากจะได้ output ที่ออกมาตามความต้องการแล้ว คุณต้องทำให้ไว ถ้าทำได้ให้ล้านนึง(กำ เหมือนรายการไรหว่าจำไม่ได้)  เพราะว่าความเร็วถือว่าเป็นปัจจัยสำคัญในการเขียนโปรแกรมอีกอย่างหนึ่งเลยก็ว่าได้  ยิ่งคุณเขียน code ให้ทำงานไว ประมวลผลใช้เวลาไม่นาน ก็อาจจะทำให้ประสิทธิภาพโดยรวมดีขี้น เพราะเดี๋ยวนี้อะไรมันต้องไวครับ (เหมือนโฆษณาอะไรหว่า) คือบางทีการเขียน code นี้มันวัดกึ๋นคนเขียนเลยก็ว่าได้นะ แต่ผมเขียนไม่เก่งหรอก ผมอยากเป็น programmer เก่งๆ ตอนนี้ก็คลืบคลาน มืด 11 ด้านอยู่ ก็หัดไปเรื่อยๆ เดี๋ยวจะคิดว่าผมเป็นโปรแกรมเมอร์ เหอๆ (คงไม่มีใครคิดหรอกมั้งเพราะดูจาก code ที่เขียนไม่เซียนเลย) ร่ายสะยาวไปดูวิธีตรวจสอบโปรแกรมดีกว่าว่าเร็วขนาดไหน อันนี้ได้มาจากพี่ท่านหนึ่งครับ เขาเป็นอาจารย์ แล้วก็เขียนโปรแกรม ไม่ได้จบ คอมพิวเตอร์มา แต่เก่งเขียนโปรแกรมมาก เพราะฉนั้นแล้ว ผมว่า อยู่ที่ใจรักจริงๆ ต้องขอบคุณท่านนี้ครับที่ มอบความรู้ให้ผม มาดู code กันเลย

from datetime import datetime
start = datetime.now()

for i in range(20):

print i

stop = datetime.now()

print start
print stop
print stop  -  start

แค่นี้เราก็รู้แล้วว่า code เราใช้เวลาเท่าไร แล้วแต่ละ code ที่เราเขียนให้ output ออกมาเหมือนกันแต่ว่า อยากได้ code ที่ไวที่สุด


hi5 ระบาดไปยังโปรเจคจบ

12 March 2008

    หลังจากสอบหัวข้อโปรเจคแล้ว ก็ผ่านแล้ว ก็ดีใจ เฮ้อ.. ทำ  Blog provider แต่อาจารย์กลับจะให้ทำแบบ hi5 ผมก็ไม่รู้เหมือนกันจะติดกันไปถึงไหนไอ้ hi5 เนี้ยเซ็ง ที่ทำ blog provider เนี้ยจะได้ให้คนมีความรู้มาเขียนจะได้เผยแพร่ความรู้สักหน่อย อาจารย์ก็จะเอาแต่ hi5ๆๆๆๆๆๆๆ  เพราะอาจารย์ไม่รู้จก blog แต่รู้จัก hi5  เอากะเขาสิ   ระบาดจริงๆ  ไอ้เราก็ไม่ใช่ไม่อยากทำหรอกแบบ hi5 อะ แต่เราอยากทำ blog provider มากกว่า ชอบในการทำ blog มากกว่าไม่ comment ใน hi5 ความคิดเห็นส่วนตัวผมว่ามันไม่ค่อยได้ประโยชน์เท่าไร  อาจจะได้ประโยชน์ตรงที่ มีเพื่อนเยอะ  แต่ถ้าเพื่อนเยอะ แล้วไม่ได้ทำอะไร ที่มันเกิดประโยชน์ขึ้นมาก็เท่านั้นแหละ อาจจะไม่ถูกใจคนเล่น hi5 นะ  ขอโทษละกัน

เซ็ง hi5 สุดกะว่าจะไม่เจอกะตัวแล้วเชียว หลอกหลอนมาตามโปรเจคจบอีก


วิธีเปิดไฟล์ .chm บน kde

11 March 2008

            พอดีได้ e-book จากพี่คนนึงที่รู้จักกันมา ไอ้เราก็ดีใจ ได้มาทั้งเป็นไฟล์ pdf และก็ .chm เราก็เปิดดู แต่ทำไมเปิดไฟล์  .chm ไม่ได้ก็ไม่รู้ เซ็งเลยเยอะสะด้วย เคยจำได้ว่าบน gnome มันเปิดได้ แต่ทำไมบน kde เปิดไม่ได้หว่า กะว่าจะ logout เข้าใหม่เป็น gnome แล้ว พอดีเออลองหาใน internet ดูดีกว่า ก็ไปเจอมา วิธีดูไฟล์ .chm บน linux ต้องติดตั้งโปรแกรมก่อน

sudo apt-get install kchmviewer (สำหรับ kde , kubuntu)

sudo aptitude install gnochm   (สำหรับ gnome , ubuntu)


แยก string ด้วย split ใน python

11 March 2008

python นั้นมี function แยก string ด้วย space ถ้าเป็น default แต่ท่านก็สามารถให้ function นี้แยกด้วยอะไรก็ได้ ตามที่ท่านต้องการ เอามาดูกันว่าทำยังไง

สมมุติว่ามี string ประมาณนี้

string = “111111 222222 3333333″

สามารถสั่งได้ด้วยการ

string.split()

ก็จะได้

['111111','222222','3333333']

แต่ถ้าเกิดเราไม่เอาหมดหละเราจะเอาแค่ 111111 ทำยังไง หรือจะเอาแค่ 222222 หรือจะเป็น 3333333 จะทำยังไง เราก็สั่งมันยังงี้ครับ

s= string.split() #แยก string
n = s[0] #เอาค่า 111111 ไปใส่ไว้ใน n

ถ้าจะเอาค่า 222222 หรือ 333333 ก็เหมือนกันเพียงแค่เปลี่ยนจาก 0 เป็น 1 ถ้าเอา 222222 หรือจะเปลี่ยนเป็น 2 ถ้าเอา 3333333 เห็นมั้ยครับช่วยท่านได้เยอะเลย แต่เดี๋ยวก่อนถ้าท่านไม่ได้แยก string ด้วย space หละทำไง ก็แค่ใส่ argument เข้าไปครับ เช่น

string = “1,2,3″
s = string.split(“,”)
print s

ผลที่ได้คือ

['1', '2' ,'3']

เห็นมั้ยครับง่ายนิดเดียวยังไงมาเขียน python กันเยอะๆนะครับ


Follow

Get every new post delivered to your Inbox.