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

Post on 15-Jan-2015

1.568 views 5 download

description

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

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

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

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

ทำไมต้อง JAVA

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

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

คำเตือน

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

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

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

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

คุณคือ

Maintenance Programmer

Maintenance Programming

ทําการเขียน

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

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

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

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

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

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

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

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

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

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

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

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

William Shakespeare

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

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

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

flagcount

processhandle

run data

inputoutput

perform

doIt

routine

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

ใช้ชื่อย่อ

Str = String

Usr = User

Frm = Frame/Form

Eff = Efficiency

Txt = Text

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

ไม่สนใจ Coding Convention

i_love_you

NUMBER_Format

Idontcareanything

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

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

isValid()

writeFile()

process()

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

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

lAccountNumber

arrNumber

fnFunction

MonAM

FriPM

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

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

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

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

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

ใ้ AOP เยอะๆ

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

การเขียน Comment

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

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

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

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

การออกแบบ

ใ้ type case

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

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

Copy-and-paste

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

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

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

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

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

ไม่เขียน test case

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

ใ้ Debug

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

อ่านซะ

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

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

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

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

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

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