มาเขียนโค้ดแย่ๆ กันเถอะ

29
มาเขียนโค้ดแย่ๆ กันเถอะ @somkiat

Upload: somkiat-puisungnoen

Post on 15-Jan-2015

1.567 views

Category:

Technology


5 download

DESCRIPTION

Slide at Java Boot Camp Thailand ครั้งที่ 2 เรื่อง มาเขียนโค้ดแย่ๆ กันเถอะ

TRANSCRIPT

Page 1: มาเขียนโค้ดแย่ๆ กันเถอะ

มาเขียนโค้ดแย่ๆ กันเถอะ@somkiat

Page 2: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ทำไมต้อง JAVA

http://spectrum.ieee.org/computing/software/top-10-programming-languages

Page 3: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

คำเตือน

เรื่องต่างๆ ที่จะพูดต่อไปนี้

เป็นเรื่องตลกทั้งิ้น

ไม่ใ่แนวปฎิบัติที่ดีเลย

Page 4: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

คุณคือ

Maintenance Programmer

Maintenance Programming

ทําการเขียน

Page 5: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

เชื่อเถอะว่า

มันก็ยากต่อการทําความเข้าใจเ่นกัน

ถ้าโค้ดมันเขียนยาก

Page 6: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

แต่สิ่งที่มักพบเจอ

Page 7: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

มาเขียนโค้ดกัน

http://hdwallpapers-download.com/best-girl-generation-image-06.html

Page 8: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ชื่อนั้นสำคัญไฉน

"นามนั้นําคัญไฉน กุหลาบถึงเรียกขานด้วย่ือใด ก็ยังคงความหอมเ่นเดิม"

William Shakespeare

Page 9: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

A B C D E F G

A Boy Can Do Every Thing For Girl

http://www.urbandictionary.com/define.php?term=LMNOP&defid=7311415

Page 10: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ชื่อที่ไม่สื่อความหมาย

flagcount

processhandle

run data

inputoutput

perform

doIt

routine

Page 11: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ใช้ชื่อย่อ

Str = String

Usr = User

Frm = Frame/Form

Eff = Efficiency

Txt = Text

Page 12: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ไม่สนใจ Coding Convention

i_love_you

NUMBER_Format

Idontcareanything

Page 13: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ชื่อกับสิ่งที่ทำไม่ตรงกัน

isValid()

writeFile()

process()

Page 14: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ตั้งชื่อแบบ Hungarian

lAccountNumber

arrNumber

fnFunction

MonAM

FriPM

Page 15: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

ซ่อนการทำงานเยอะๆ

Comment โค้ดทิ้งไว้ ไม่ยอมลบ

ต้ัง่ือคล้ายๆ กัน เ่น method1(), method2()

สร้าง overload method จํานวนมาก

ใ้ AOP เยอะๆ

Page 16: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

การเขียน Comment

Comment ไม่ตรงกับการทํางานโค้ด

Comment อธิบายขั้นตอนการทํางานอย่างละเอียด

อัตรา่วนของ comment มากกว่า code

Page 17: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

การออกแบบ

ใ้ type case

ไม่ต้องทําการ validate ข้อมูล

ไม่มีการ encapsulate ข้อมูล และการทํางาน

Copy-and-paste

ใ้ตัวแปรชนิด Global และ Static

Page 18: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

เขียนโค้ดให้ดูวุ่นวาย

ใ้ magic number เยอะๆ เ่น if( status == 1 )

ใ้ if-else, switch-case เยอะๆ

ไม่ต้องใ้ {} ําหรับ block code ที่มีบรรทัดเดียว

ทําการ Override กันหลายๆ ้ัน ดูมีภูมิ

ไม่ชอบ throw exception

Page 19: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

การทดสอบโค้ดที่เขียน

ไม่ต้องทดสอบ

ไม่เขียน test case

การทดสอบมันําหรับคนขี้ขลาด

ใ้ Debug

Page 20: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

http://multiple-sclerosis-research.blogspot.com/2013/09/bad-posts.html

Page 21: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

http://www.nspyre.ro/files//clean-code-1-728.jpg

Page 22: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

http://xprogramming.com/articles/too-much-of-a-good-thing/

Page 23: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

http://xprogramming.com/articles/too-much-of-a-good-thing/

Page 24: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

โค้ดที่ดีเป็นอย่างไร

ตรงตามความต้องการของลูกค้า

ิ่งที่ออกแบบ ต้องอยู่ในโค้ด

ไม่มีโค้ดที่ํ้า้อน

แต่ละ่วนต้องมีขนาดเล็ก

Page 25: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

อ่านซะ

Page 26: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

http://www.gfi.com/blog/the-41-dumbest-security-decisions/

Page 27: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

T E S T F R A M E W O R K

http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks

Page 28: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

http://cheqbook.com/wp-content/uploads/2014/03/simple-accounting-software.jpg

Page 29: มาเขียนโค้ดแย่ๆ กันเถอะ

SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance